[TOC]



## 文档说明
* 阅读对象：游戏服务端对接技术人员；
* 字符编码：请求与响应内容必须采用utf-8 字符编码；
* 平台参数：game_code、md5_key、pay_key；
* 平台服务端域名（host）：与上面的“平台参数”一起下发。

-------------------------------------------------

## 接口一
### 登录TOKEN的校验
#### 请求地址
```
https://{host}/verify_token
```
#### 请求参数

| 参数名    | 类型   | 说明                                            |
| :-------- | :----- | :---------------------------------------------- |
| game_code | Int    | 我方平台提供的参数game_code                     |
| token     | String | 平台客户端登录成功返回的token值                 |
| uid      | String  | 平台客户端登录成功返回的uid值                   |
| time      | Int    | 当前时间戳（秒）                                |
| sign      | String | 签名见[《签名规则》](#sign_rule)密钥为md5_key |
#### 请求返回示例


```python
{
    "code": 1,
    "msg": "success",
    "data": {
        "uid": "10003"
    }
}
```

#### 返回Json说明
| 参数名 | 类型   | 说明                    |
| :----- | :----- | :---------------------- |
| code   | Int    | 状态，1成功，其他为失败 |
| msg    | String | 提示信息                |
| data   | Json   | 请求返回的数据          |
#### data说明

| 参数名      | 类型   | 说明                                             |
| :---------- | :----- | :-------------------------------------------------------- |
| uid         | String | 平台用户唯一ID,与请求参数uid是一致的         |
<center>
------------</center>
## 接口二
### 支付回调地址(内购)
#### 请求地址
```
该接口地址由CP提供，平台收到订单充值后，会将该订单,按游戏方提供的回调地址，通知游戏发货。
```
#### 请求参数

| 参数名      | 类型   | 说明                                                         |
| :---------- | :----- | :----------------------------------------------------------- |
| game_code   | Int    | 我方平台提供的参数game_code                  |
| order_id    | String | 平台订单号                                  |
| cp_order_id | String | 游戏订单号（游戏方调用客户端SDK时传入）          |
| currency | String | 币种（默认美元：USD）          |
| amount | Int    | 订单金额（分）                               |
| rebate | Int    | 返利比例（例如10%传：10）                               |
| bind_rebate | Int    | 绑元返利比例（例如10%传：10）                                |
| uid     | String | 平台用户ID（与登录校验接口返回的uid一致              |
| product_id  | String | 商品ID(cp下单时传入)              |
| server_id   | String | 区服ID（cp下单时传入）             |
| role_id     | String | 角色ID（cp下单时传入）             |
| time        | Int    | 当前时间戳（秒）                              |
| cp_ext      | String | 订单透参，游戏下单请求时传入，原样返回（长度不能超过100）） |
| sign        | String | 签名见[《签名规则》](#sign_rule)密钥为pay_key              |
#### 请求返回

`游戏服务端发货成功直接返回字符串“success”（区分大小写），其他字符串为发货失败。`


#### 回调机制
```html
由于网络或者其它原因（例如请求完成后游戏服务端的返回值不是“success”），我方会重复请求支付回调，CP需要做好去重处理，避免重复发货。
重发机制为： 根据一定的策略进行重复回调请求， 当接收到返回为‘success’，则停止重发， 未收到‘success’的返回，重放一定次数也会停止重发。
```

<center>
------------</center>

<div id='sign_rule'></div>
## 《签名规则》
### 步骤
```python
（1）将接口请求的参数,以参数key进行升序排序
（2）将”key=value”的形式用 & 符号拼接，得到 字符串req_str
（3）req_str 和 密钥secret_key（md5_key或者pay_key） 拼接得到 字符串sign_str
（4）md5 sign_str 得到 sign
```
### 示例
`以“登录TOKEN验证”为请求示例`
```python
#*python签名示例
req_str = "game_code=xxx&time=1546272000&token=xxx&uid=u123"
# secret_key =s1122
sign_str = req_str + secret_key  # game_code=xxx&time=1546272000&token=xxx&uid=u123s1122
sign = hashlib.md5(sign_str).hexdigest() #e84ddaa93133915ac00081e290b8599f
```
```php
#* php签名示例
$req_str = "game_code=xxx&time=1546272000&token=xxx&uid=u123";
#  secret_key=s1122
$sign_str = $req_str.$secret_key;
# game_code=xxx&time=1546272000&token=xxx&uid=u123s1122
$sign = md5($sign_str); # e84ddaa93133915ac00081e290b8599f
```