egret-docs-master/platform/egret/channel/README.md

222 lines
8.8 KiB
Markdown
Raw Permalink Normal View History

2024-06-19 13:32:32 +08:00
[一、前期工作](#一、前期工作)
[二、接口](#二、接口)
[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游戏地址后面拼接上渠道方的用户信息即可。
例: 假如在渠道的用户体系内有一个用户信息如下,
用户id54321
用户昵称:张三,
用户头像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开放平台上的渠道idsign 值应是数字和小写字母组成的字符串 |
请求样例:
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)