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的有效性。
注意:进行接口调用前请确认user_token是否具备值,如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 失败,表示游戏服务器无法接收或识别该次充值结果通知,如:签名检验不正确、游戏服务器接收失败
CP回调验签失败常见问题:
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"

results matching ""

    No results matching ""