SDK服务端接入说明文档

1. 接入必读

该文档主要包含用户鉴权接口定义、游戏发货接口定义;
更新说明

日期 说明
2022-01-28 4.1登录验证接口增加用户是否是预约用户的标识
4.9增加预约用户发奖接口

2. 准备工作

3. 接口说明

  • 接口协议:HTTP POST; content-type设为application/json;
  • 交互数据格式:JSON格式(以UTF-8进行编码); 数据直接通过HTTP消息体传输(非KEY-VALUE模式); 注意单次消息体大小不能大于512K;

4. 接口

4.1 登录验证接口

基本信息

Method: POST

接口描述:

  1. 该接口由龙图运营技术平台提供,负责对用户信息进行验证,该接口可以避免客户端随意修改信息的漏洞;需要游戏服务端进行调用;
  2. 接口地址

中国大陆地址:http://auth.longtugame.cn/ucenter2.0/entry/authToken.htm
港澳台地址:http://auth-usa.longtugame.net/ucenter2.0/entry/authToken.htm
韩国地址:http://auth-kr.longtugame.net/ucenter2.0/entry/authToken.htm
日本地址:http://auth-jp.longtugame.net/ucenter2.0/entry/authToken.htm
全球地址:http://auth-usa.longtugame.net/ucenter2.0/entry/authToken.htm

  1. 响应码介绍
响应码 描述
10000 成功
20001 请求的service有误
20002 sessionId参数有误
20003 session失效或无效
20004 请求方式异常
20009 服务异常

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Body

名称类型是否必须默认值备注其他信息
servicestring必须接口标识,固定为:longtu.platform.ucenter.getUserInfo
sessionIdstring必须会话ID, 来源自SDK客户端登录成功之后的tokenId。

返回数据

名称类型是否必须默认值备注其他信息
statusstring必须状态码 0:失败 1:成功
errorCodestring必须响应码;10000:接收成功;详见响应码介绍
errorDescstring非必须描述
dataobject必须地域信息
├─ userIdstring必须用户ID
├─ userPlatformIdstring必须用户系统ID
├─ userNamestring非必须用户名
├─ nickNamestring非必须昵称
├─ phonestring非必须登录手机号
├─ emailstring非必须用户邮箱
├─ identityLimitobject非必须
├─ preTimeCoststring非必须用户每次限额 ,-1 代表不限额,单位:分
├─ monthTotalCoststring非必须用户每月限额,-1 代表不限额,单位:分
├─ cardNostring非必须用户身份证号md5
├─ returnJsonJSONObject非必须隐形登录返回的第三方数据
├─ loginTypestring必须登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段)
speedyLogin:快速登录
speedyRegister:快速注册
commonLogin:普通登录
commonRegister:普通注册
phoneLogin:手机登录
phoneRegister:手机注册
thirdHiddenLogin:第三方用户登录
thirdHiddenRegister : 第三方用户注册
phoneVerifyCodeLogin:手机验证码登录
phoneVerifyCodeRegister:手机验证码注册
├─ originalUserTypestring必须原生用户登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段)
speedy:快登用户
common:普通用户名密码用户
phone:手机号注册用户
thirdHidden:第三方隐性用户
thirdHiddenNeedBindingCommon:第三方需要绑定 官网账户
├─ currentUserTypestring必须当前用户登录类型(该字段已放弃维护,请使用客户端登录回调中的相关字段)
speedy:快登用户
common:普通用户名密码用户
phone:手机号注册用户
thirdHidden:第三方隐性用户
thirdHiddenNeedBindingCommon:第三方需要绑定 官网账户
├─ appointmentUserobject []必须预约用户预约渠道信息;目前仅全球发行区域支持;若GSC上预约渠道开关关闭,则返回空

item 类型:object

├─ channelstring必须预约渠道标识:
google标识谷歌渠道,
appstore标识苹果预约,
phone标识官网手机号预约
├─ statusstring必须是否领取过奖励;0:未领取;1:已领取

返回示例:

渠道用户

  1. {
  2. "data": {
  3. "phone": "",
  4. "userPlatformId": "0286",
  5. "email": "",
  6. "nickName": "",
  7. "userId": "0102860000000000000000000000000022763457",
  8. "identityLimit":{
  9. "preTimeCost":"-1",
  10. "monthTotalCost":"-1",
  11. "cardNo":"9d7ad320f04052c4fbcace636b6d8369"
  12. },
  13. "returnJson": {
  14. "sex": "",
  15. "accessToken": "1.a3e0d5b2410e2b12aa7cf25541745695.55f048d5072366f7f6c03b7cb810e450.1494315064144",
  16. "nickname": "CCNK1417056083257",
  17. "brithday": "",
  18. "highDefUrl": "",
  19. "expires_in": "7776000",
  20. "openid": "22763457",
  21. "refresh_token": "4123dnasjonrfwjkr329439wijm3ir9u328faicy78ehc8m3urc329",
  22. "rtn_code": "0",
  23. "headIconUrl": ""
  24. },
  25. "userName": "CCNK1417056083257@coolyun_10000538.com",
  26. "originalUserType": "0",
  27. "currentUserType": "0",
  28. "loginType":"thirdHiddenLogin"
  29. },
  30. "errorCode": "10000",
  31. "errorDesc": "成功",
  32. "status": "1"
  33. }

官网用户

  1. {
  2. "data": {
  3. "phone": "13888886666",
  4. "userPlatformId": "0001",
  5. "email": "",
  6. "nickName": "玩家001",
  7. "userId": "0100010000000000000000000000000174323454",
  8. "nickName": "玩家001",
  9. "identityLimit":{
  10. "preTimeCost":"-1",
  11. "monthTotalCost":"-1"
  12. },
  13. "returnJson": {
  14. },
  15. "userName": "longtuUser",
  16. "originalUserType": "1",
  17. "currentUserType": "1",
  18. "loginType":"commonLogin"
  19. },
  20. "appointmentUser":[
  21. {
  22. "channel":"appstore",
  23. "status":"0"
  24. },
  25. {
  26. "channel":"phone",
  27. "status":"1"
  28. }
  29. ],
  30. "errorCode": "10000",
  31. "errorDesc": "成功",
  32. "status": "1"
  33. }

4.2 充值发货接口

该接口由游戏按规范提供,龙图运营技术平台通过该接口实现游戏发货功能;

  • 4.2.1 安全验证
    1.游戏需验证订单金额(chargePrice)和游戏内该商品价格是否相等,如果不相等,应该不予发货,返回“商品异常”即可;
    2.为了保证数据安全性,建议游戏服务器对平台的请求IP地址做鉴权处理,需要认证的IP详见附录五
    3.游戏发货时要判断价格和商品ID相匹配,才能发货,否则不发货。比如6480钻石的价格是648元人民币,商品ID是com.shangpin.rmb648,当通知游戏发货的价格变为1元,商品ID不变的时候,应拒绝发货,不能仅判断商品ID去发货。
    4.游戏发货时需要判断用户ID[userId]和角色ID[roleId]是否匹配(即判断该角色ID是否属于该用户ID),防止出现跨平台作弊充值的情况;若出现该情况请返回指定的响应码
响应码 描述
0001 成功
1000 订单异常(该订单已经发货)
1001 用户异常
1002 角色异常
1003 逻辑服异常
1004 商品异常
1005 发货失败
1006 用户ID与角色ID不匹配
1007 限购商品,不允许发货
1100 预留扩展(该扩展由游戏方定义,定义后请反馈计费中心)

自动重新通知:因网络抖动或游戏服务器维护导致请求超时或通知失败,平台会在间隔2、4、8、16分钟后重新进行通知,第四次(16分钟)如果还是通知失败,则不再进行重新通知,需要运营人员手动在GSC上进行“通知发货”;另外,重新通知在极端情况下(平台侧检测到请求超时,但是研发侧已经正常发货的情况)也会进行重发,因此需要研发确保相同平台侧的订单号(orderId)若已经正常发货则不可重复发货,此时返回“接收成功”即可。

  • 4.2.2 请求参数
参数父节点 参数名称 类型 限制策略 说明
- status 字符串 必填 状态外码 1:消耗类 2:订阅类
- reset 字符串 必填 内码;1000:发货成功, 2000:订阅商品首次订购成功 , 2001:退款成功, 2002:订阅商品续订成功,
- resetDesc 字符串 必填 状态详细描述
- subscription{expireTime} 字符串 可选 订阅过期时间,时间戳格式
- serviceId 字符串 必填 产品平台ID,查看如何从SDK中获取
- channelId 字符串 必填 推广渠道ID,查看如何从SDK中获取
- deviceGroupId 字符串 必填 机型组ID
- localeId 字符串 必填 语言ID
- propId 字符串 必填 商品ID
- roleId 字符串 必填 游戏角色ID
- userId 字符串 必填 游戏用户ID
- serverId 字符串 必填 逻辑服ID
- payChannelId 字符串 必填 支付方式ID
- chargePrice 字符串 必填 订单金额,建议用此字段进行商品价格校验;详见附录4货币类型及对应ID
- actualPrice 字符串 必填 实际支付金额,若存在商品打折情况,该字段可能和chargePrice不一致;详见附录4货币类型及对应ID
- currencyType 字符串 必填 货币类型,详见附录4货币类型及对应ID
- orderId 字符串 必填 订单号
- testOrder 字符串 必填 是否是测试订单
0:不是
1:是
strategy{rebate} price 字符串 可选 返利金额(为整数,如果有小数则进1)
strategy{rebate} goodId 字符串 可选 返利商品ID
strategy{rebate} rebateType 字符串 可选 返利类型
GOODID:按照商品ID返利
PRICE:按照充值金额进行返利
- extendParams 字符串 可选 自定义扩展字段
- sign 字符串 必填 签名
Md5(subscription.expireTime
+serviceId
+channelId
+deviceGroupId
+localeId
+propId
+roleId
+userId
+serverId
+payChannelId
+chargePrice
+actualPrice
+currencyType
+orderId
+testOrder
+strategy.rebate.price
+strategy.rebate.goodId
+strategy.rebate.rebateType
+extendParams
+secretKey(约定秘钥))
不存在的字段则“”(空串)代替。
  • 4.2.3 返回参数
父节点 参数名称 类型 说明
common deliverCode 字符串 响应码;
0001:接收成功;
失败详见响应码介绍
common deliverDesc 字符串 通知结果描述(需要做UrlEncode,编码方式UTF-8)
  • 4.2.4 请求示例
    1. {
    2. "status":"2",
    3. "reset":"2000",
    4. "resetDesc":"",
    5. "subscription":{
    6. "expireTime":"1568877748000"
    7. },
    8. "serviceId":"1000053831111600000",
    9. "channelId":"3111160031111600",
    10. "deviceGroupId":"0000",
    11. "localeId":"01",
    12. "propId":"0001",
    13. "roleId":"14325",
    14. "userId":"0103400000000000000000000000000000150595",
    15. "serverId":"10",
    16. "payChannelId":"211116000014000051014300",
    17. "chargePrice":"100",
    18. "actualPrice":"100",
    19. "currencyType":"1",
    20. "orderId":"0992017101611521566000",
    21. "testOrder":"0",
    22. "extendParams":"测试-我是扩展参数",
    23. "sign":"8bccb12d3095b898accdebd895fd14c5"
    24. }
  • 4.2.6 返回示例
    1. {
    2. "common":{
    3. "deliverCode":"0001",
    4. "deliverDesc":"通知成功"
    5. }
    6. }

4.3 礼包码发货接口

该接口由游戏按规范提供,龙图运营技术平台通过该接口实现礼包码发货功能;
注意:

自动重新通知:因网络抖动或游戏服务器维护导致请求超时或通知失败,平台会在间隔2、4、8、16分钟后重新进行通知,第四次(16分钟)如果还是通知失败,则不再进行重新通知;重新通知时有可能研发侧已经给玩家发过该礼包(平台侧请求超时时,可能出现这种情况),需要给平台返回对应的状态,已经领取并且不能再给此玩家再次发放礼包。所以需要游戏方面对礼包发放进行判断。同一个角色+同一个礼包码,一天内最多能领取一次,不能重复发。避免在特殊情况下可能会给玩家重复发礼包。

响应码介绍

响应码 描述
0001 成功
1000 订单异常(该订单已经发货)
1001 用户异常
1002 角色异常
1003 逻辑服异常
1004 商品异常
1005 发货失败
1006 用户ID与角色ID不匹配
1100 预留扩展(该扩展由游戏方定义,定义后请反馈计费中心)
  • 4.3.1 安全验证
    1.为了保证数据安全性,建议游戏服务器对平台的请求IP地址做鉴权处理,需要认证的IP详见附录五

  • 4.3.2 请求参数

参数父节点 参数名称 类型 限制策略 说明
- serviceId 字符串 必填 产品平台ID,查看如何从SDK中获取
- channelId 字符串 必填 推广渠道ID,查看如何从SDK中获取
- deviceGroupId 字符串 必填 机型组ID
- localeId 字符串 必填 语言ID
- roleId 字符串 必填 游戏角色ID
- userId 字符串 必填 游戏用户ID
- serverId 字符串 必填 逻辑服ID
- gamePackageId 字符串 可选 礼包ID,即游戏内的物品包ID;gamePackageId和goodsInfo必须选择一项
- gamePackageName 字符串 必填 礼包名称,需要做urlencoding
- gamePackageDesc 字符串 必填 礼包描述,需要做urlencoding
- gameCode 字符串 必填 礼包码(用户输入的码号)
- extendParams 字符串 必填 自定义字段,多个参数之间 以“|” 分隔
- goodsInfo 字符串 可选 道具信息,数组
goodsInfo goodsId 字符串 可选 商品ID
goodsInfo goodsNum 字符串 可选 商品数量
goodsInfo goodsName 字符串 可选 商品名称,需要做urlencoding
goodsInfo goodsDesc 字符串 可选 商品描述,需要做urlencoding
goodsInfo extendInfo 字符串 可选 物品扩展信息
- sign 字符串 必填 签名
Md5(serviceId
+channelId
+deviceGroupId
+localeId
+roleId
+userId
+serverId
+gamePackageId
+gamePackageName
+gamePackageDesc
+gameCode
+extendParams
+goodsInfo[0].goodsId
+goodsInfo[0].goodsNum
+goodsInfo[0].goodsName
+goodsInfo[0].goodsDesc
+goodsInfo[0].extendInfo
+…+goodInfos[n].goodsId
+goodsInfo[n].goodsNum
+goodsInfo[n].goodsName
+goodsInfo[n].goodsDesc
+goodsInfo[n].extendInfo
+secretKey(约定秘钥))
注:goodsInfo数组中的数据要循环依次加到字符串中,然后算取sign值,
不存在的字段则“”(空串)代替。
  • 4.3.3 返回参数
父节点 参数名称 类型 说明
common deliverCode 字符串 响应码;
0001:接收成功;
失败详见响应码介绍
common deliverDesc 字符串 通知结果描述(需要做UrlEncode,编码方式UTF-8)
  • 4.3.4 请求示例
    1. {
    2. "serviceId":"1000053831111600000",
    3. "channelId":"3111160031111600",
    4. "deviceGroupId":"0000",
    5. "localeId":"01",
    6. "roleId":"143235",
    7. "userId":"0103400000000000000000000000000000150595",
    8. "serverId":"10",
    9. "gamePackageId":"374",
    10. "gamePackageName":"测试礼包",
    11. "gamePackageDesc":"测试礼包",
    12. "gameCode":"2E2A3VPR8NNTM1",
    13. "extendParams":"",
    14. "goodsInfo":[
    15. {
    16. "goodsId":"13452",
    17. "goodsNum":"1",
    18. "goodsName":"测试商品",
    19. "goodsDesc":"测试商品",
    20. "extendInfo":""
    21. }
    22. ],
    23. "sign":"ccae56d2aed76fa2dca6b90fb0ef4e42"
    24. }
  • 4.3.6 返回示例
    1. {
    2. "common":{
    3. "deliverCode":"0001",
    4. "deliverDesc":"通知成功"
    5. }
    6. }

4.4 查询区服下某个用户角色接口 [该功能已经迁移至GM,后续请接入GM的对应接口2.4]

4.5 查询渠道下某个用户角色接口[该功能已经迁移至GM,后续请接入GM的对应接口2.4]

4.6 查询该用户绑定哪些渠道

该接口由平台提供,游戏通过该接口查询用户绑定的第三方渠道;

响应码 描述
10000 成功
20001 请求的service有误
20002 sessionId参数有误
20003 session失效或无效
20004 请求方式异常
20009 服务异常
  • 4.6.2 请求参数
参数父节点 参数名称 类型 限制策略 说明
- service 字符串 必填 接口标识,固定为:longtu.platform.ucenter.getUserBindInfo
- sessionId 字符串 必填 会话ID
  • 4.6.3 返回参数
父节点 参数名称 类型 说明
- status 字符串 状态码
0:失败
1:成功
- errorCode 字符串 响应码;
10000:接收成功;
其他详见响应码介绍
- errorDesc 字符串 描述
data userId 字符串 用户ID
data bindChannelIds list字符串 绑定的渠道id(4位数字)
0001:官网
0231:facebook
0329:gameCenter
0493:apple
0494:google
  • 4.6.4 返回示例
    1. {
    2. "data": {
    3. "bindChannelIds": [
    4. "0231",
    5. "0494",
    6. "0001"
    7. ],
    8. "userId": "0800010000000000000000000000000025655354"
    9. },
    10. "errorCode": "10000",
    11. "errorDesc": "成功",
    12. "status": "1"
    13. }

4.7 积分墙发货接口

该接口由游戏按规范提供,龙图平台通过该接口实现用户绑定渠道;
该接口在接入海外SDK Applovin功能IronSourceTapjoy积分墙时需要接入。
详见安卓海外SDK接入的ApplovinSDK功能接入【选接】

  • 4.7.1 接口地址
    为了保证数据安全性,建议游戏服务器对平台的请求IP地址做鉴权处理,需要认证的IP详见附录五
  • 4.7.2 请求参数
参数父节点 参数名称 类型 限制策略 说明
- localeId 字符串 必填 语言ID
- channelId 字符串 必填 通道id
- userId 字符串 必填 用户id
- serverId 字符串 必填 游戏服务器id
- productId 字符串 必填 游戏ID,同gameId
- transtionid 字符串 必填 积分墙唯一标识,
- extendParams 字符串 可选 扩展参数
- roleId 字符串 必填 角色id
- rewards 字符串 必填 积分
(注意:如果是正数就是添加积分,负数为扣减积分。。。这个参数也是翻倍后的数)
- sign 字符串 必填 MD5(localeId
+productId
+serverId
+roleId
+channelId
+userId
+rewards
+transtionid
+extendParams
+secretKey(约定秘钥)))
  • 4.7.3 请求示例
  1. {
  2. "sign": "403a50fc55e9290703ec7d7b79461e5a",
  3. "localeId": "01",
  4. "channelId": "210017000114000051014300",
  5. "userId": "0100010000000000000000000000000141765589",
  6. "serverId": "1",
  7. "productId": "20000034",
  8. "roleId": "1",
  9. "transtionid":"3e9c0c01fa7b47903cfb14acbf9bda21",
  10. "rewards":"2"
  11. }
参数名称 类型 说明
Content-Type 字符串 必填 application/json
platform-auth-version 字符串 必填 固定写死 v3
platform-auth-timestamp 字符串 必填 时间戳
platform-auth-key-id 字符串 必填 秘钥keyId,
platform-auth-checksum 字符串 必填 详见校验码规则
  • 4.8.3 请求参数
参数父节点 参数名称 类型 限制策略 说明
- ip string [] 必填 ip数组
ip[i] - string 必填 IP

示例
(单次请求ip不可以超过200个,逗号分隔)

  1. {
  2. "ip":["1.0.1.0","0.0.1.0","1.18.122.0"]
  3. }
  • 4.8.3 返回参数
父节点 参数名称 类型 说明
- status 字符串 状态码;1:成功;0:失败;
- errorCode 字符串 具体响应码;
- errorDesc 字符串 状态描述
- data JSON对象 该数据为数组
data[i] ip 字符串 IP
data[i] ipCity 字符串 地市级编码
data[i] ipProvince 字符串 省级编码
data[i] ipCountry 字符串 国家编码

示例

  1. {
  2. "status": "1",
  3. "errorCode": "10000",
  4. "errorDesc": "成功",
  5. "data": [
  6. {
  7. "ip": "1.0.1.0",
  8. "ipCountry": "156",
  9. "ipProvince": "35",
  10. "ipCity": "00"
  11. },
  12. {
  13. "ip": "0.0.1.0",
  14. "ipCountry": null,
  15. "ipProvince": null,
  16. "ipCity": null
  17. },
  18. {
  19. "ip": "1.18.122.0",
  20. "ipCountry": "840",
  21. "ipProvince": "00",
  22. "ipCity": "00"
  23. }
  24. ]
  25. }

响应码介绍

响应码 描述
10000 成功
204401 参数不正确
204402 参数不能为空
204403 校验码未通过
204404 参数值超过规定长度
204405 请求已过有效期
204406 header参数缺失
204999 未知异常错误

4.9 预约用户发奖接口

Method: POST
接口描述:

1.该接口由龙图运营技术平台提供,游戏服务端进行调用, 目的是实现对预约用户发放预约礼包;
注意:每个用户ID在每个预约渠道中只能发放一次; 调用该接口后,平台会再次进行判断该用户是否可以发放该渠道的预约礼包,若预约状态正常且未发放过则启动异步线程通过4.3的礼包发放接口进行通知游戏服服务端,游戏服端需要在收到4.3的礼包发放接口通知后才可进行预约奖励礼包发放;
2 接口地址
国内地址:http://billing.longtugame.cn/billingcenter2.0/gameServer/appointment.do
全球地址:http://billing-usa.longtugame.net/billingcenter2.0/gameServer/appointment.do
韩国地址:暂时不支持
3 校验码规则
校验码规则
4 状态内码,
若出现非 0001 2002 2003的内码,需要支持重新发起对平台的调用

状态内码介绍
0001成功
2001session失效或不存在,需要重新登录;
2002该用户非该预约渠道的预约用户
2003该用户已经领取过该预约渠道的礼包
2999其他错误

5 请求示例

  1. {
  2. "sessionId":"69c551db2241b-4224-bf59-b045304bc86f",
  3. "userId":"0100010000000000000000000000000155964419",
  4. "extendParams":"",
  5. "gameServerId":"1001",
  6. "roleId":"800110001",
  7. "roleLevel":"5",
  8. "roleName":"testrole",
  9. "roleVipLevel":"1",
  10. "channel":"appstore"
  11. }

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json
platform-auth-checksum 请求数据计算后的校验码 校验码规则详见描述
platform-auth-key-id 秘钥keyId(即业务代码),接入时,找相关负责人获取
platform-auth-timestamp 时间戳,毫秒数
platform-auth-version v3 固定值

Body

名称类型是否必须默认值备注其他信息
sessionIdstring必须平台用户登录后的sessionId
userIdstring必须用户ID
extendParamsstring必须透传参数可为空
gameServerIdstring必须服务器id
roleIdstring必须角色id
roleLevelstring必须角色等级
roleNamestring必须角色名
roleVipLevelstring必须角色vip等级
channelstring必须预约渠道,注意不是游戏包的渠道,对应4.1接口中返回的appointmentUser下的channel;google标识谷歌渠道,appstore标识苹果预约,phone标识官网手机号预约

返回数据

名称类型是否必须默认值备注其他信息
statusstring非必须状态码 0:失败 1:成功
errorCodestring非必须状态内码
errorDesc string非必须状态描述

附录四

货币类型及对应ID

货币ID 货币名称 货币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当

附录五

IP鉴权处理

为了保证数据安全性,游戏服务器务必要对平台的请求IP地址做鉴权处理,需要认证的IP如下:
韩国:150.109.251.150 , 150.109.251.83,150.109.251.176
日本:124.156.229.117 , 124.156.229.124
港澳台:47.56.235.244 , 47.91.226.95
全球:34.83.139.53 , 35.185.215.4 , 35.227.137.164
大陆:121.40.90.246 , 121.40.98.30 , 121.196.220.70;