SDK服务器对接手册
国内版本
请在文档的引导下,进行必要的编码。
请在文档的引导下,进行必要的编码。
游戏服务器端访问下面的连接
https://auth.17995api.net/rest/v1/auth
HTTP 增加请求头 "Authorization: JWT参数"
jwt参数 由客户端请求SDK登录成功后获得, 查看“登录通行证”
请求成功返回
{"code":0, "uid":通行证UID(32位整形数)} // e.g. {"code":0, "uid":20000000}
请求失败返回
{"code":非0错误代码, "error": "错误信息"} // e.g. {"code":1, "error": "凭证过期,请重新登录"}
请注意: code返回非0的情况,游戏服务器需要 禁止客户端继续登录, 客户端需要 退出游戏 或者 执行SDK “切换账号” 操作
需要游戏开发方提供游戏服务器充值的接口.
充值平台向游戏服务器充值接口发起 POST 请求
http://游戏服务器域名/充值接口
POST 通知数据 JSON 类型
data 通知数据,字符串类型
sign 请求验证串
实例: {"data": "{\"productid\":\"......\"}","sign":"......"}
算法生成的哈希值(小写)
md5(data + "_" + AppKey)
data 字符串进行 json_decode 可获得以下数据
productid | 产品标识,作为充值依据 | 字符串 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
uid | 玩家的唯一标识 | 整形数 | ||||||||||||||
order | 本次充值在平台上的订单号 | 字符串 | ||||||||||||||
transactionid | 商店订单号(由Apple, Google, Alipay, 微信等平台提供) | 字符串 | ||||||||||||||
srvid | 游戏服务器ID | 字符串 | ||||||||||||||
nonce | 充值透传参数(可选) | 字符串 | ||||||||||||||
paytype | 支付方式
|
字符串 | ||||||||||||||
expires_date_ms | 订阅过期时间戳(毫秒) 仅续订充值项有效 | 整形数 | ||||||||||||||
is_free_trial | 是否免费试用 仅续订充值项有效 | 布尔型 |
POST 请求收到非 HTTP response status code 200 返回,判定为请求失败. 响应body中可返回任意信息
对于充值失败的订单服务器有重跑机制,一般每5分钟会对充值状态为待充的订单进行重新请求,处理为成功状态,若超过5分钟订单还未执行成功请与运营同学联系。
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"data":"{\"srvid\":\"1\",\"uid\":1329632,\"order\":\"S_A17186305243341197795\",\"productid\":\"com.playcomet.pnsdk.demo.sku.01\",\"nonce\":\"\",\"paytype\":\"apple\",\"transactionid\":\"2000000630508478\",\"is_sandbox\":true,\"is_autofill\":false,\"price\":100,\"currency\":\"USD\",\"user_ip\":\"103.100.176.109\",\"quantity\":1}","sign":"d86579567ef970e5f057fb3b5ec85371"}' http://游戏服务器域名/充值接口
md5('{"srvid":"1","uid":1329632,"order":"S_A17186305243341197795","productid":"com.playcomet.pnsdk.demo.sku.01","nonce":"","paytype":"apple","transactionid":"2000000630508478","is_sandbox":true,"is_autofill":false,"price":100,"currency":"USD","user_ip":"103.100.176.109","quantity":1}_d5678067743c88ad707566749d3171cb') = d86579567ef970e5f057fb3b5ec85371
接口: https://se.17995api.net/rest/v2/online
方法: POST
格式: json
必须头信息: Content-Type: application/json
参数名 | 参数类型 | 参数说明 |
---|---|---|
identifier | string | 在线统计Key,参数可以在提供的对接说明文档中找到 |
online | 整形数 | 在线人数 |
timestamp | 整形数 | 当前统计数据的时间戳(秒),会按照自然1分钟进行数据对齐 |
{
"identifier":"aabbcc123",
"online":123,
"timestamp":1489739590
}
仅游戏存在订阅充值项的情况下,需要游戏服务器提供此订阅通知接口.
充值平台向游戏服务器订阅通知接口发起 POST 请求
http://游戏服务器域名/通知接口
POST 通知数据 JSON 类型
data 通知数据,字符串类型
sign 请求验证串
实例: {"data": "{\"productid\":\"......\"}","sign":"......"}
算法生成的哈希值(小写)
md5(data + "_" + AppKey)
data 字符串进行 json_decode 可获得以下数据
productid | 产品标识 | 字符串 |
---|---|---|
uid | 玩家的唯一标识 | 整形数 |
srvid | 游戏服务器ID | 字符串 |
order | 首次订阅原始平台订单号 | 字符串 |
nonce | 首次订阅原始订单透传参数 | 字符串 |
expires_date_ms | 订阅过期时间戳(毫秒) | 整形数 |
POST 请求收到非 HTTP response status code 200 返回,判定为请求失败. 响应body中可返回任意信息
请求失败时,在每间隔1小时回调一次订阅通知,最多尝试3次
接口: https://push.17995api.net/firebase/notify?sign=[请求验证串]
方法: POST
格式: json
必须头信息: Content-Type: text/plain
参数名 | 参数类型 | 参数说明 |
---|---|---|
appid | string | SDK APPID |
title | string | 消息标题,可为空字符串 必须为UTF-8 |
body | string | 消息内容,不可为空字符串 必须为UTF-8 |
image | string | 展示图片网络地址,可为空字符串 |
ts | int | 当前时间戳 误差不得超过10分钟 |
to | array/string | 推送目标 参数值为 "ALL" 时,对全体用户推送信息 为用户ID数组时 [uid1, uid2, ...] ,对特定用户发送信息 注意:一次最多500个用户 |
label | string | 分析标签,格式为:^[a-zA-Z0-9-_.~%]{1,50}$ |
sign 验证算法
算法生成的哈希值(小写)
md5(POST 内容 + AppKey)
https://push.17995api.net/firebase/notify?sign=4deda4c253999d03b41587ac7d8040a3
POST 内容
{"title":"消息标题","body":"消息内容","image":"","appid":2000001,"to":[300095288,300095289],"ts":1616062391}
sign算法
md5(`{"title":"消息标题","body":"消息内容","image":"","appid":2000001,"to":[300095288,300095289],"ts":1616062391}` + `c4f66848841b1c5af83ae12f6f3273a9`) = 4deda4c253999d03b41587ac7d8040a3
行为 | 发送方 | 接收方 |
---|---|---|
好友召回 | 玩家游戏内点击好友召回按钮,即向3日未上线的好友发送召回推送 | 您的好友[某某]邀请您回到游戏,快来和小伙伴一起并肩作战. |
团战提醒 | 会长在游戏内提醒成员参加团战 | 会长[某某]提醒您,今日[20:00]准时参加团战. |
成员召回 | 公会盟主在游戏内召回公会成员,即向3日未上线的公会成员发送召回推送 | 你的盟主(盟友)[某某]邀请你一起并肩作战. |
通知游戏玩家退款
充值平台向游戏服务器接口发起 GET 请求
http://游戏服务器域名/退款通知接口
GET 参数
orderid 订单号
serverid 游戏服务器ID
nonce 充值创建订单时的nonce参数
notify_type 固定值 REFUND
sign 签名 md5('REFUND_' + orderid + '_' + serverid + '_' + nonce + appkey)
收到非 HTTP response status code 200 返回,判定为请求失败. 响应body中可返回任意信息
需要游戏开发方提供游戏角色查询的接口.
充值平台向游戏服务器接口发起 GET 请求
http://游戏服务器域名/角色查询接口
GET 参数
uid 玩家的唯一标识
srvid 游戏服务器ID
sign 请求验证串
算法生成的哈希值(小写)
md5(uid + "_" srvid + "_" + AppKey)
{
"code":0,
"msg": "成功",
"data":[{
"roleid":"1001",
"rolename":"abc",
"level":1
},
{
"roleid":"1002",
"rolename":"abc2",
"level":1
}]
}
需要游戏开发方提供游戏角色查询的接口,一次性返回用户所有服务器和角色列表
充值平台向游戏服务器接口发起 GET 请求
http://游戏服务器域名/角色查询接口
GET 参数
uid 玩家的唯一标识
sign 请求验证串
算法生成的哈希值(小写)
md5(uid + "_" + AppKey)
{
"code":0,
"msg": "成功",
"data":[
{
"srvid":"1",
"roleid":"1001",
"rolename":"abc",
"level":1
},
{
"srvid":"2",
"roleid":"2001",
"rolename":"abc2",
"level":1
}]
}
网页充值专用接口,需要游戏开发方提供游戏玩家可以购买的所有商品列表(包括常规道具和限时礼包, 不能购买的商品不要返回)
充值平台向游戏服务器接口发起 GET 请求
http://游戏服务器域名/查询商品列表接口
GET 参数
uid 玩家的唯一标识
roleid 角色id
srvid 游戏服务器ID
// 查询成功返回
{
"code":0,
"msg": "成功",
"data":[
{
"productID":"1001", // 产品项id
"nonce":"abc" // 透传信息(可选),如果需要可以通过充值回调接口透传给游戏服务器
}]
}
// 查询失败返回
// 1. 服务器停服维护 (必须跟客户端拦截保持一致)
{
"code":101,
"msg": "服务器停服维护"
}
网页第三方充值专用,网页充值独立在游戏外,如果游戏充值必须使用透传参数,就需要提供生成充值透传参数接口,充值平台调用获取透传参数以后传递给游戏
充值平台向游戏服务器接口发起 POST 请求
http://游戏服务器域名/生成充值透传参数接口
POST 请求数据 JSON 类型
data 请求数据,字符串类型
sign 请求验证串
实例: {"data": "{\"productid\":\"......\"}","sign":"......"}
算法生成的哈希值(小写)
md5(data + "_" + AppKey)
data 字符串进行 json_decode 可获得以下数据
productid | 产品标识 | 字符串 |
---|---|---|
uid | 玩家的唯一标识 | 整形数 |
srvid | 游戏服务器ID | 字符串 |
roleid | 角色id | 字符串 |
product_nonce | 产品项透传参数(通过查询产品列表获取),可选值 | 字符串 |
成功返回: {"code":0, "nonce": 充值透传参数, 充值回调游戏服务器需要带上这个参数}
失败返回: {"code":-1, "msg": ""}