提交 4ba78a5d 作者: 闫永超

合并分支 'role_v1' 到 'release'

分销方接入说明

查看合并请求 zwwl/zw_game_sdk!101
## 1. 接入说明
## 1. 接入说明
### 1.1 术语表
> | 名称 | 说明 |
> | ------------ | ----------------------------- |
> | 游戏ID | 游戏包对应的唯一值 |
> | Sign | 唯一请求签名串 |
> | secret | 每个账号唯一个的签名秘钥 |
> | Account-Code | 平台账号唯一编码 【平台提供】 |
### 1.2 请求方式 和签名
​ POST 数据结构 JSON
​ Header数据需要加验证参数 Sign, Account-Code
a. 按照key ascll 码小到大排序,
b.拼接参数 string = "key1=value1&key2=value2" string = string + "secret=weqqeew";
c. 将string 转为32 位的md5数据, stringMd5 = string.md5();
d. 截取stringMd5 第三位到第18位, 一共 16位字符串, 之后转为大写, 为Sign
注意 如果参数中传有key 是 sign secret 的数据, 则需要先过滤该数据: 比如传参数为 {"sign":"231", "time":"2032-01-01"}
参与签名的数据为 {"time":"2032-01-01"}
### 1.3 注意事项
​ a. 请求接口频次限制 一个接口相同参数一分钟只能请求一次
​ b. 总接口限制 全部接口一分钟最多请求 120 次
​ c. 请求量限制 每页数量最多只能1000 条数据
## 2. 服务端接入
### 2.1 接口
##### 请求域名
> 【HTTPS】https://zmiao.zwnet.cn/api
###### 1.角色列表接口地址 /distributor/role/roleList
请求数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | ---------------------------- |
| start_time | 是 | Date | 注册开始时间 |
| end_time | 是 | Date | 注册结束时间 |
| game_id | 否 | string | 创角游戏ID逗号隔开 "23,45" |
| seq_start_time | 否 | date | 染色开始时间 |
| seq_end_time | 否 | Date | 染色结束时间 |
返回数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | --------------- |
| status_code | 是 | int | 错误码 200 成功 |
| msg | 是 | string | 返回文案 |
| data | 否 | object | 返回数据 |
| data.data | 否 | List | 列表数据 |
| Data.page_info | 否 | Object | 分页信息 |
​ Data.data 列表数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ----------------- | -------- | -------- | --------------- |
| cp_role_id | 是 | string | cp角色ID |
| username | 是 | string | 账号 |
| channel_key | 是 | string | 渠道ID |
| distributor_id | 是 | int | 分销方ID |
| seq_time | 是 | datetime | 染色时间 |
| server_name | 是 | string | 原始区服 |
| role_name | 是 | string | 角色名称 |
| recharge_total | 是 | string | 充值金额 单位元 |
| combat_num | 是 | string | 战力 |
| role_level | 是 | string | 等级 |
| os | 是 | string | 操作系统 |
| create_time | 是 | Datetime | 创角时间 |
| last_login_time | 是 | Datetime | 最后活跃时间 |
| game_id | 是 | int | 创角游戏ID |
| main_game_id | 是 | string | 创角主游戏ID |
| channel_name | 是 | string | 渠道名称 |
| merge_server_name | 是 | string | 合服区服名 |
| distributor_name | 是 | string | 分销方名 |
| game_name | 是 | string | 创角游戏名 |
| main_game_name | 是 | string | 创角主游戏名 |
Data.page_info 分页数据
| 参数名 | 是否必传 | 类型 | 备注 |
| --------- | -------- | ---- | -------- |
| total | 是 | int | 总数 |
| page | 是 | int | 页码 |
| page_size | 是 | int | 每页数量 |
###### 2.账号列表接口地址 /distributor/member/memberList
请求数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | ---------------------------- |
| start_time | 是 | Date | 注册开始时间 |
| end_time | 是 | Date | 注册结束时间 |
| game_id | 否 | string | 注册游戏ID逗号隔开 "23,45" |
| seq_start_time | 否 | date | 染色开始时间 |
| seq_end_time | 否 | Date | 染色结束时间 |
返回数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | --------------- |
| status_code | 是 | int | 错误码 200 成功 |
| msg | 是 | string | 返回文案 |
| data | 否 | object | 返回数据 |
| data.data | 否 | List | 列表数据 |
| Data.page_info | 否 | Object | 分页信息 |
​ Data.data 列表数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ---------------- | -------- | -------- | --------------- |
| username | 是 | string | 账号 |
| channel_key | 是 | string | 渠道ID |
| distributor_id | 是 | int | 分销方ID |
| seq_time | 是 | datetime | 染色时间 |
| reg_time | 是 | datetime | 注册时间 |
| recharge_total | 是 | string | 充值金额 单位元 |
| last_login_os | 是 | string | 登录系统 |
| game_id | 是 | int | 注册游戏ID |
| main_game_id | 是 | int | 注册主游戏ID |
| channel_name | 是 | string | 渠道名称 |
| distributor_name | 是 | string | 分销方名 |
| game_name | 是 | string | 注册游戏名 |
| main_game_name | 是 | string | 注册主游戏名 |
Data.page_info 分页数据
| 参数名 | 是否必传 | 类型 | 备注 |
| --------- | -------- | ---- | -------- |
| total | 是 | int | 总数 |
| page | 是 | int | 页码 |
| page_size | 是 | int | 每页数量 |
###### 3.订单列表接口地址 /distributor/order/orderList
请求数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | ---------------------------- |
| start_time | 是 | Date | 注册开始时间 |
| end_time | 是 | Date | 注册结束时间 |
| game_id | 否 | string | 充值游戏ID逗号隔开 "23,45" |
| seq_start_time | 否 | date | 染色开始时间 |
| seq_end_time | 否 | Date | 染色结束时间 |
返回数据
| 参数名 | 是否必传 | 类型 | 备注 |
| -------------- | -------- | ------ | --------------- |
| status_code | 是 | int | 错误码 200 成功 |
| msg | 是 | string | 返回文案 |
| data | 否 | object | 返回数据 |
| data.data | 否 | List | 列表数据 |
| Data.page_info | 否 | Object | 分页信息 |
​ Data.data 列表数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ---------------- | -------- | -------- | ----------------------- |
| username | 是 | string | 账号 |
| channel_key | 是 | string | 渠道ID |
| distributor_id | 是 | int | 分销方ID |
| seq_time | 是 | datetime | 染色时间 |
| order_time | 是 | datetime | 下单时间 |
| pay_time | 是 | datetime | 支付完成时间 |
| amount | 是 | string | 订单金额 单位元 |
| game_id | 是 | int | 充值游戏ID |
| main_game_id | 是 | int | 充值主游戏ID |
| channel_name | 是 | string | 渠道名称 |
| distributor_name | 是 | string | 分销方名 |
| game_name | 是 | string | 充值游戏名 (充值马甲包) |
| main_game_name | 是 | string | 充值主游戏名 |
| status | 是 | string | 支付状态 |
| pay_type | 是 | string | 充值方式 |
| order_id | 是 | string | 订单号 |
| server_name | 是 | string | 区服名 |
| server_id | 是 | string | 区服ID |
| cp_role_id | 是 | string | cp角色ID |
| role_name | 是 | string | 角色名称 |
Data.page_info 分页数据
| 参数名 | 是否必传 | 类型 | 备注 |
| --------- | -------- | ---- | -------- |
| total | 是 | int | 总数 |
| page | 是 | int | 页码 |
| page_size | 是 | int | 每页数量 |
###### 4.订单列表接口地址 /distributor/game/gameList
请求数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ------ | -------- | ---- | ---- |
| | | | |
返回数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ------------------- | -------- | ------ | --------------- |
| status_code | 是 | int | 错误码 200 成功 |
| msg | 是 | string | 返回文案 |
| data | 否 | List | 列表数据 |
​ Data 列表数据
| 参数名 | 是否必传 | 类型 | 备注 |
| ------ | -------- | ------ | ------ |
| name | 是 | string | 游戏ID |
| id | 是 | int | 游戏名 |
### 2.2 请求示例
```shell
请求示例
curl --location --request POST 'onezhangmiao.com:8081/distributor/role/roleList' \
--header 'Account-Code: hfc1Z_OACy4=' \
--header 'Sign: 30696201debadda2c687675cace397bd' \
--header 'Content-Type: application/json' \
--data-raw '{
"start_time":"2023-06-14",
"end_time":"2023-06-14",
"game_id":"288,360",
"seq_start_time":"",
"page_size":1
}'
json :
{
"start_time":"2023-06-14",
"end_time":"2023-06-14",
"game_id":"288,360",
"seq_start_time":"",
"page_size":1
}
返回示例:
{
"status_code": 200,
"msg": "查询成功",
"data": {
"data": [
{
"role_id": "40037967",
"cp_role_id": "73679790576496644",
"member_id": "77242308",
"channel_key": "zyou69933",
"distributor_id": 10,
"seq_time": "2023-06-14 19:22:39",
"server_name": "天命375区",
"zyou_server_id": "35_41_1r_1475",
"role_name": "商朝凉心",
"recharge_total": "0.00",
"combat_num": "110",
"role_level": 78,
"os": "android",
"create_time": "2023-06-14 23:59:58",
"last_login_time": "2023-06-15 00:04:02",
"game_id": 288,
"main_game_id": 35,
"channel_name": "爆靓-传奇龙神-安卓",
"merge_server_name": "",
"distributor_name": "爆靓",
"game_name": "领主-官包",
"main_game_name": "古惑仔"
}
],
"page_info": {
"total": 751,
"page": 1,
"page_size": 1
}
},
"extra": {}
}
```
### 2.3 签名规则示例
> **签名秘钥**
>
> game_secret 为 16 位字符串,由 SDK 对接时提供,每一个游戏单独提供一个 game_secret
> **签名串**
>
> 请求参数(去除 sign)通过参数名作升序排序;如果参数值是一个对象,需要将该队形通过参数名升序排序后转换为 json 字符串;将排好序的参数与 game_secret 以一下格式进行字符串拼接(game_secret 放在最后)
>
> key1=value1&key2=value2&key3=value3&game_secret=secret
> **签名算法**
>
> 【md5】
>
> sign = md5(签名串) 之后截取转大写
> ##### 注意
>
> <u>转换 json 注意不要对中文进行转义</u>
##### 签名示例
```php
<php?
$gameSecret = "game_secret";
$params = ["player_id" => 1245, "game_id" => 14];
$signStr = '';
ksort($params, SORT_REGULAR);
foreach ($params as $key => $val) {
$signStr .= $key . '=' . $val . '&';
}
$signStr .= 'secret=' . $gameSecret;
return strtoupper(substr(md5($signStr), 2, 16));
```
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论