[一、前期工作](#一、前期工作) [二、接口](#二、接口) [1.登录接口](#1.登录接口) [2.支付接口](#2.支付接口) [3.Egret接收支付结果接口(支付回调)](#3.Egret接收支付结果接口(支付回调)) [三、附录](#三、附录) [附录一:签名生成规则](#附录一:签名生成规则) [附录二:状态码(code)对照表](#附录二:状态码(code)对照表) [附录三:APP接入白鹭支付](#附录三:APP接入白鹭支付) ## 一、前期工作 ### 1. 登录Egret开放平台 ([http://open.egret.com](http://open.egret.com) ): 获取对接所需要的appId , appKey (appId即为渠道Id); 获取游戏的正式地址和游戏的支付回调地址 ### 2. 如果渠道使用自己支付系统, 请准备一个支付回调的接口,填在Egret开放平台上 ![](1.png) ## 二、接口 如果渠道使用自己的登录系统,则要确保接口1接通,否则使用Egret的登录系统; 如果渠道使用自己的支付系统,则要确保接口2的两个接口接通,否则会影响游戏充值。 ### 1.登录接口 1.1 登录流程图 ![](2.png) #### Tips: - Egret游戏正式地址登录白鹭开放平台(http://open.egret.com),按照下面的路径可以拿到:渠道商 -> 渠道 -> 游戏中心 -> 已上架游戏 -> 游戏详情。 形如: http://api.egret-labs.org/v2/game/[chanId]/[gameId], [] 表示其在白鹭开放平台上的对应id。 例: 假如您在白鹭开放平台上注册的渠道Id是12345,您要上线的游戏的Id是88888,则该游戏的游戏地址为: [http://api.egret-labs.org/v2/game/12345/88888](http://api.egret-labs.org/v2/game/12345/88888) - 渠道方若想使用自己的用户体系登录游戏,只需要在Egret游戏地址后面,拼接上渠道方的用户信息即可。 例: 假如在渠道的用户体系内有一个用户信息如下, 用户id:54321, 用户昵称:张三, 用户头像:http://img.baidu.com/54321.jpg, 玩家性别:男。 只需要把用户的信息用GET方式请求 Tips 1中的Egret游戏地址即可, 如下: http://api.egret-labs.org/v2/game/12345/88888?userId=54321&userName=张三&userSex=1&userImg=http%3a%2f%2fimg.baidu.com%2f54321.jpg&channelExt=&time=1470109186&sign=0ca175b9c0f726a831d895e269332461。 其中,userImg 参数值要urlencode, userSex参数值 1表示男,2表示女,0表示未知 1.2 接口地址: 白鹭开放平台上获取的游戏正式地址 例: [http://api.egret-labs.org/v2/game/12345/88888](http://api.egret-labs.org/v2/game/12345/88888) 对应的游戏地址,登录http://open.egret.com, 渠道商->渠道管理->《你们的渠道名字》->游戏中心->已上架游戏, 点击对应游戏的 《游戏详情》 1.3 传参方式: GET 1.4 参数说明: | 参数名 | 必传 | 参数描述 | | ------------ | ------------- | ------------ | | userId | 是 | 玩家在渠道上的用户id | | userName | 是 | 玩家在渠道上的用户昵称 | | userImg | 是 | 玩家在渠道上的头像,没有则传空字符串,传参之前,请将地址进行urlencode | | userSex | 是 | 玩家在渠道上的性别:1表示男,2表示女,0表示未定义 | | channelExt | 否 | 渠道透传的参数,此参数在用户支付时会原样回传给渠道的支付页面 | | time | 是 | Unix时间戳(精确到秒) | | sign | 是 | 验证签名,该接口签名方式:md5(“appId=[appId]time=[time]userId=[userId][appKey]”); [appId]代表appId的值, appId, appKey有Egret开放平台提供 (appId即为Egret开放平台上的渠道id),sign 值应是数字和小写字母组成的字符串 | 请求样例: http://api.egret-labs.org/v2/game/12345/88888?userId=54321&userName=张三&userSex=1&userImg=http%3a%2f%2fimg.baidu.com%2f54321.jpg&channelExt=&time=1470109186&sign=0ca175b9c0f726a831d895e269332461。 1.5 返回结果: 可以进入游戏,即表示接入成功 ### 2.支付接口 以下为白鹭开放平台支付时序图,和渠道相关的只有第4步和第7步。 ![](4.png) 步骤: - 玩家在游戏中触发购买行为 - 游戏调用EgretH5SDK.pay() 方法 - Egret开放平台生成未成功状态的订单 - Egret将支付信息传给渠道的支付回调地址接口(拉起渠道的支付页面) - 唤起渠道的支付页面 - 玩家支付 - 渠道通知Egret支付成功 - Egret将订单状态更新为成功 - Egret通知游戏支付成功 - 游戏方给玩家发放道具 2.1 接口地址: 由渠道提供的支付页面地址 (需要渠道方在open.egret.com上提交) 2.2 请求方式: POST 2.3 参数说明 | 参数名 | 必传 | 参数描述 | | ------------ | ------------- | ------------ | | userId | 是 | 玩家在渠道上的用户id | | userName | 是 | 玩家在渠道上的用户昵称 | | gameId | 是 | 游戏Id | | goodsId | 是 | 游戏商品Id | | goodsName | 是 | 游戏商品名称 | | money | 是 | 支付金额(大陆地区统一为人民币元 float类型) | | egretOrderId | 是 | egret的订单Id | | channelExt | 否 | 渠道在用户登录进入游戏时的透传参数,在此原样回传给渠道 | | ext | 是 | 此参数为透传参数,通知支付结果接口调用的时候原因返回给Egret | | gameUrl | 是 | 游戏地址,渠道完成支付流程后,跳转回游戏的地址 | | time | 是 | Unix时间戳(精确到秒) | | sign | 是 | 验证签名, 该接口签名方式:md5(“appId=[appId]egretOrderId=[egretOrderId]gameId=[gameId]goodsId=[goodsId]money=[money]time=[time]userId=[userId][appKey]”); appId、appKey由Egret开放平台提供。(appId即为渠道在Egret开放平台上的渠道Id, money不能小于1), sign 值应是数字和小写字母组成的字符串 | 2.4 返回结果 能拉起渠道的支付页面即为表示对接成功 ### 3.Egret接收支付结果接口(支付回调) 3.1 接口地址: 白鹭开放平台上获取游戏支付回调地址. 例:[http://api.egret-labs.org/v2/pay/12345/88888](http://api.egret-labs.org/v2/pay/12345/88888) 对应的支付回调地址,登录[http://open.egret.com](http://open.egret.com), 渠道商->渠道管理->*《你们的渠道名字》*->游戏中心->已上架游戏, 点击对应游戏的 《游戏详情》 3.2 请求方式: POST 3.3 参数说明: | 参数名 | 必传 | 参数描述 | | ------------ | ------------- | ------------ | | orderId | 是 | 渠道订单id | | userId | 是 | 玩家在渠道的用户Id | | money | 是 | 玩家在渠道上的充值金额,如果渠道有自己的代金券,或者折扣,应该传用代金券或者打折之前的金额(大陆统一为人民币元,float类型) | | ext | 是 | Egret透传参数,此参数在调用渠道支付页面地址时传给渠道,在此需原样回传给Egret | | time | 是 | Unix时间戳(精确到秒) | | sign | 是 | 验证签名(签名生成方式相见附录1) | 3.4 返回结果: 返回格式: json 返回数据字段: | 字段名 | 字段描述 | 示例 | 备注 | | ------------ | ------------- | ------------ | ------------ | | code | 状态码 | 0 | 0为成功,其他表示错误([code对应关系,见附录二](#附录二:状态码(code)对照表)) | | msg | code对应消息 | success | 字符串类型 | | data | 数据 | [] | 请求正常是,此字段为空数组 | 返回样例: ``` { "code":0, "msg":"success", "data":[] } ``` ## 三、附录 #### 附录一:签名生成规则 签名生成规则: 1. 对参与签名的参数的键值进行正序排列 2. 生成待加密字符串 * 第一步:对排好序的参与签名加密的参数按照排序顺序以 key1=value1key2=value2...keyn=valuen 形式连接成字符串 * 第二步:在已经连接好的字符串尾部连接appkey(appkey在开放平台获取) ,最终形成的待加密字符串格式为key1=value1key2=value2...keyn=valuenappkey 3. 对待加密字符串进行md5加密 生成签名方法php代码样例: ``` function createSign($params, $appkey){ isset($params['sign']) && unset($params['sign']); isset($params['page']) && unset($params['page']); isset($params['per']) && unset($params['per']); ksort($params); $str = ""; foreach($params as $key=>$value){ $str .= $key ."=". $value; } return md5($str.$appkey); ``` 附签名检测工具:[http://open.egret.com/checkSign](http://open.egret.com/checkSign) #### 附录二:状态码(code)对照表 | code | 对应含义 | | :------------: | :------------- | | 0 | 成功 | | 1001 | 参数不全 | | 1006 | sign 错误,验证通不过 | | 1009 | 重复订单 | | 1013 | 支付失败 | #### 附录三:APP接入白鹭支付 注意:本节只适用于有自己App的CPS渠道(使用白鹭支付的渠道) 因白鹭支付内集成微信支付,如在App内使用微信H5支付,需对url单独处理 参考链接: [http://blog.csdn.net/ahence/article/details/51317814](http://blog.csdn.net/ahence/article/details/51317814) ![](5.jpg)