一、前期工作
1. 登录Egret开放平台 (http://open.egret.com ):
获取对接所需要的appId , appKey (appId即为渠道Id);
获取游戏的正式地址和游戏的支付回调地址
2. 如果渠道使用自己支付系统, 请准备一个支付回调的接口,填在Egret开放平台上
渠道支付回调地址二、接口
如果渠道使用自己的登录系统,则要确保接口1接通,否则使用Egret的登录系统;
如果渠道使用自己的支付系统,则要确保接口2的两个接口接通,否则会影响游戏充值。
1.登录接口
1.1 登录流程图
登录流程图Tips1:
Egret游戏正式地址登录白鹭开放平台,按照下面的路径可以拿到:渠道商 -> 渠道 -> 游戏中心 -> 已上架游戏 -> 游戏详情。
形如: http://api.egret-labs.org/v2/game/[chanId]/[gameId], [] 表示其在白鹭开放平台上的对应id。
例如: 假如您在白鹭开放平台上注册的渠道Id是12345,您要上线的游戏的Id是88888,则该游戏的游戏地址为: http://api.egret-labs.org/v2/game/12345/88888
Tips 2:
渠道方若想使用自己的用户体系登录游戏,只需要在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://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步。
支付时序图步骤:
- 玩家在游戏中触发购买行为
- 游戏调用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://open.egret.com, 渠道商->渠道管理->《你们的渠道名字》->游戏中心->已上架游戏, 点击对应游戏的 《游戏详情》
3.2 请求方式:
POST / GET
3.3 参数说明:
参数名 | 必传 | 参数描述 |
---|---|---|
orderId | 是 | 渠道订单id |
userId | 是 | 玩家在渠道的用户Id |
money | 是 | 玩家在渠道上的充值金额,如果渠道有自己的代金券,或者折扣,应该传用代金券或者打折之前的金额(大陆统一为人民币元,float类型) |
ext | 是 | Egret透传参数,此参数在调用渠道支付页面地址时传给渠道,在此需原样回传给Egret |
time | 是 | Unix时间戳(精确到秒) |
sign | 是 | 验证签名(签名生成方式相见附录1) |
3.4 返回结果:
返回格式: json
返回数据字段:
字段名 | 字段描述 | 示例 | 备注 |
---|---|---|---|
code | 状态码 | 0 | 0为成功,其他表示错误(code对应关系,见附录二) |
msg | code对应消息 | success | 字符串类型 |
data | 数据 | [] | 请求正常是,此字段为空数组 |
返回样例:
{
"code":0,
"msg":"success",
"data":[]
}
三、附录
附录一:签名生成规则
签名生成规则:
- 对参与签名的参数的键值进行正序排列
- 生成待加密字符串
- 第一步:对排好序的参与签名加密的参数按照排序顺序以 key1=value1key2=value2...keyn=valuen 形式连接成字符串
- 第二步:在已经连接好的字符串尾部连接appkey(appkey在开放平台获取) ,最终形成的待加密字符串格式为key1=value1key2=value2...keyn=valuenappkey
- 对待加密字符串进行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
附录二:状态码(code)对照表
code | 对应含义 |
---|---|
0 | 成功 |
1001 | 参数不全 |
1006 | sign 错误,验证通不过 |
1009 | 重复订单,此种情况也按照成功处理 |
1013 | 支付失败 |
注意:返回 0 和 1009 都按照成功处理
附录三:APP接入白鹭支付
注意:本节只适用于有自己App的CPS渠道(使用白鹭支付的渠道)
因白鹭支付内集成微信支付,如在App内使用微信H5支付,需对url单独处理
// 如下方案可在非微信内部WebView的Html5页面中掉出微信支付
if(url.startsWith("weixin://wap/pay?")){
try{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
// your other logic
}
网友评论