API文档介绍
本部分主要提供 “SDK 服务器”和游戏合作商“游戏服务器”的交互的接口规范。
协议说明
通信协议
“SDK 服务器”采用HTTP 协议作为通信协议。
“游戏服务器”通过构造HTTP 请求(POST方式)向“SDK 服务器”发起接口请求。
数据协议
- 数据格式
响应消息的内容都使用json 格式表示数据,须采用utf-8 字符编码。 - 签名规则
使用md5 签名
接口说明
验证登录user_toke是否有效
接口定义
- 请求地址:
https://sdk2.xiaokr.cn/sdk/checkUsertoken.php - 请求方式:
HTTP/POST - 请求方:
游戏服务器 - 响应方:
SDK服务器 - 接口描述:
验证user_token是否为有效的登录用户会话,若有效则返回其账号标识、账号创建者和昵称。"游戏客户端"通过"SDK 客户端"获取到user_token,传到"游戏服务器","游戏服务器"到"SDK 服务器"验证user_token的有效性。
请求参数
JSON/UTF-8格式
注意!!!:请求头(Request Header)请使用JSON UTF-8格式(即:Content-Type:application/json; charset=UTF-8),而非Form表单格式(Content-Type:application/x-www-form-urlencoded)参数名 | 类型 | 参数说明 |
---|---|---|
app_id | String | 必须游戏接入时分配的应用app_id |
mem_id | String | 登录返回的用户ID |
user_token | String | 登录返回的toke |
sign | String | 必须的参数校验 |
完整示例
HTTP 请求的body 内容:
{
"app_id":"1",
"mem_id":"23s",
"user_token":"rkmi2huqu9dv6750g5os11ilv2",
"sign":"4753dce3ae736e7f894ebcc6cd3cff7a"
}
1、假定:app_key = de933fdbede098c62cb309443c3cf251
2、sign 的签名规则:md5(app_id=...&mem_id=...&user_token=...&app_key=...)
替换...为实际值
3、签名原文:
app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&app_key=de933fdbede098c62cb309443c3cf251
4、md5加密:
echo -n "app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&app_key=de933fdbede098c62cb309443c3cf251"|md5sum
加密结果:4753dce3ae736e7f894ebcc6cd3cff7a
响应结果
{
"status":"1",
"msg":"用户已登录"
}
status 为状态码 msg 为状态码说明
状态码
状态码 | 说明 |
---|---|
0 | 请求参数错误 |
1 | 成功 |
10 | 服务器内部错误 |
11 | app_id错误 |
12 | 签名错误 |
13 | user_token错误 |
14 | user_token超时,表示用户登录授权已超时,需引导用户重新登录,并更新接口访问令牌,(注:访问令牌的有效时长是1天) |
15 | mem_id错误 |
16 | 访问太频繁,超过访问次数 |
100 | 没有接口访问权限(注:出现时可联系技术人员确认权限是否开通) |
支付回调接口
接口定义
- 请求地址:
即充值结果通知地址,由CP提供。游戏接入时,录入到的游戏平台中 - 请求方式:
HTTP/POST - 请求方:
SDK服务器 - 响应方:
游戏服务器 - 接口描述:
请求方为SDK 服务器,响应方为CP服务器。
用户在游戏中提交购买请求后,SDK服务器会异步执行充值购买,在购买操作完成后,SDK服务器通过该接口将充值结果发送给“游戏服务器”。
此处定义本接口的规范,游戏合作商需根据此规范在“游戏服务器”实现本接口。
请求参数
JSON/UTF-8格式
参数名 | 类型 | 参数说明 |
---|---|---|
order_id | String | 订单号 |
app_id | String | 游戏app_id |
mem_id | String | 用户ID |
money | String | 充值金额 |
original_price | String | 商品原价(折扣前原价)(注:此字段不参考签名) |
order_status | String | 1.未支付 2.成功支付 3.支付失败 |
paytime | String | 时间戳,Unix timestamp |
attach | String | CP扩展参数,建议为英文与数字,CP用于校验此订单合法性 |
sign | String | 使用APP_KEY 对所有的参数md5加密串,用于与接口生成的验证串做比 较,保证计费通知的合法性。 |
完整示例
HTTP 请求的body内容:
{
"order_id":"1465718712348234627",
"mem_id":"24627",
"app_id": "1",
"money": "1.00",
"order_status": "1",
"paytime":"1465718712",
"attach":" attach ",
"sign":"51295343ac734a32e1ef0196c2e82870"
}
1、假定:app_key = 901f6984e638c2f96ef48675b6a32a73
2、sign的签名规则:md5(order_id=...&mem_id=...&app_id=...&money=...&order_status=...&paytime=...&attach=...&app_key=901f6984e638c2f96ef48675b6a32a73s)
(替换...为实际值)
3、签名原文:
order_id=1465718712348234627&mem_id=24627&app_id=1&money=1.00&order_status=1&paytime=1465718712&attach=attach
4、md5加密:
echo -n 'order_id=1465718712348234627&mem_id=24627&app_id=1&money=1.00&order_status=1&paytime=1465718712&attach=attach&app_key=901f6984e638c2f96ef48675b6a32a73'|md5sum
加密结果:51295343ac734a32e1ef0196c2e82870
响应结果
状态 | 说明 |
---|---|
SUCCESS | 成功,表示游戏服务器成功接收了该次充值结果通知,校验签名,订单,金额等都没问题。 |
FAILURE | 失败,表示游戏服务器无法接收或识别该次充值结果通知,如:签名检验不正确、游戏服务器接收失败 |
1、生成sign之前,请先对中文字符进行url_decode
2、再次确认app_key是否正确,特别是同时对接多个包时,很可能把app_key搞混了,请再三确认
通知机制
充值操作完成后,不论是否充值成功,“SDK 服务器”都会将充值结果通过“充值结果回调接口”发送到“游戏服务器”。“游戏服务器”收到“SDK 服务器”的充值通知后,根据处理结果返回字符串SUCCESS 或FAILURE。如果返回SUCCESS,则“SDK服务器”结束通知任务;如果返回FAILURE 或由于网络延时导致“SDK 服务器”没有收到任何返回,SDK 服务器将会在周期内进行重复通知。
开发要点
user_token 验证注意事项
user_token验证应该在客户端接到sdk 登录成功后,客户端再登录游戏服务器的时候,游戏服务器请求sdk 服务器验证。
注意:在登录或必要的时候调用,不做无故调用,注意控制调用次数,这个接口做了次数等限制。user_token 充值结果回调注意事项
在充值完成之后,SDK服务器会回调CP 给的地址。
需要校验回调的金额是否跟商品的真实价格一致; 需要校验用户是否充值成功; 返回值:返回“SUCCESS”表示通知CP成功了,其他错误等情况返回"FAILURE"