[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是一致的 |
------------
## 接口二 ### 支付回调地址(内购) #### 请求地址 ``` 该接口地址由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’的返回,重放一定次数也会停止重发。 ```
------------
## 《签名规则》 ### 步骤 ```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 ```