查看: 4584|回复: 13

【网游SDK接入】服务端接口(常见问题FAQ)

[复制链接]

40

主题

0

魅力

2万

经验

网游运维

发表于 2016-1-13 16:22:33 |显示全部楼层
本帖最后由 106563120 于 2017-1-24 10:36 编辑

服务端接口

注意SDK服务端请求地址已更新(原旧地址目前仍可使用,与新地址并存,但建议游戏更新地址,旧地址可能后续会生效)
登录验证地址:
更换为:
(原旧地址:
测试环境: http://sdk.test4.g.uc.cn/cp/account.verifySession
扩展数据接口地址:
更换为:
测试环境:http://gamedata.sdk.test4.9game.cn/ng/cpserver/gamedata/ucid.game.gameData正式环境:http://collect.sdkyy.9game.cn:8080/ng/cpserver/gamedata/ucid.game.gameData(原旧地址:


1、登录会话验证接口(account.verifySession)
1) 用户唯一标识是什么,能否直接获取用户的uc账号
游戏使用登录验证返回的账号标识accountId为用户唯一标识,现在SDK服务器不直接返回uc账号,如需查询accountId对应的uc账号,请联系九游运营人员

2) 如何获取用户的账号标识accountId
SDK客户端登录成功后,游戏客户端通过getsid()方法获取SDK客户端的sid,发送给游戏服务器,游戏服务器使用此sid进行服务端接口调用,即可获取账号标示及昵称,随后游戏服务器向游戏客户端发送账号标示及昵称即可。(注:游戏客户端无法直接从SDK客户端获取账号标示
详细流程可见接入文档“02-技术文档-SDK总体机制\UC游戏_SDK_开发参考说明书_总体机制_vX.X.X.pdf”。(注:X.X.X为版本号)

3) 客户端登录成功,但获取用户账号信息时返回“code:11,用户未登录”
返回用户未登录的原因,一般是指当前请求的sid在当前请求地址所属的sid找不到,可能原因:
1、客户端生成的sid与当前服务器请求环境非同一个环境,请检查环境是否一致:
测试环境:客户端初始化:debugMode=true/服务端请求地址:http://sdk.test4.9game.cn/cp/account.verifySession
正式环境:客户端初始化:debugMode=false/服务端请求地址:http://sdk.9game.cn/cp/account.verifySession
2、使用的sid为模拟参数,并且真实的sid,必须用真实的sid才能验证
3、客户端使用的gameId,与服务端请求使用的gameId不一致
4、如使用封装好的语言接口版本,联调环境验证登录时,有时返回成功,有时返回“code:11 未登录“,因封装的接口版本内有智能线路切换功能,如检测到线路访问有超时,会智能切换到正常的IP上,而这IP为正式环境的,故会返回用户未登录,请忽略此问题,游戏接完后切换到正式环境不影响正常使用

4) 获取用户信息的时候返回“code:10,游戏信息配置错误 ”
请检查请求串内使用的gameId是否为九游分配的参数

5) 获取用户信息的时候返回“code:99,系统繁忙请稍后再试”
一般出现该返回内容说明请求串SDK服务器无法处理,可能原因是当前发送的请求串,服务器解析异常,请检查当前使用的请求串是否为标准的json格式,及请求格式是否与SDK接入文档示例一样,如游戏使用JAVA/PHP/C#语言,请使用九游已封装好接口版本调用

6) 获取用户信息的时候返回“code:178,调用的接口类型错误,请联系九游接入组同学”
因服务端接口2014年11月底做过修改,在此日期后创建的游戏默认走新接口,原来使用旧接口serivce“ucid.user.sidInfo”更改为新接口“account.verifySession”,请游戏检查
1、新游戏默认走“account.verifySession”,如果调用使用“ucid.user.sidInfo”改更正
2、客户端使用的gameId与服务端请求使用的gameId不同,且客户端使用的gameId为2014年11月前创建的游戏


7) 获取用户信息的时候返回“code:10,请求校验的数据非本游戏生成,权限受限
客户端使用的gameId与服务端请求验证用的gameId不同同一个,请确保使用相同的参数调试

8) 获取用户信息的时候返回“code:10,无效的请求数据,校验签名失败”
请检查:
1、sign拼接组成是否为“sid=sid值+apikey值,并且需要用小写
2、检查游戏客户端与服务器请求串中使用的gameId\apikey参数是否为九游分配的参数

9)SDK有封装好语言的接口版本,与游戏自己实现请求有什么不同,应该用哪个好
SDK提供java/php/c#语言封装好的接口版本供游戏直接调用,便于游戏接入,且接口内增加智能线路切换,假如游戏访问SDK某台服务器线路有异常时,能智能切换到线路访问正常的IP上,如果游戏自行接入的,出现问题时就比较被动,需要自行切换路线,建议条件允许的情况下,游戏优先选择我们封装的接口版本调用,如游戏使用的语言SDK无提供封装接口,请联系技术接口人说明,我们会尽快安排实现


2、扩展数据接口(ucid.game.gameData)(注:与客户端submitExtendData为同一接口,任选一接入,其它详见客户端接口说明)

常见问题(FAQ)请到这里查看:http://bbs.9game.cn/thread-5370208-1-4.html

3、充值回调接口

1)充值成功后,服务器收不到回调信息
收不到回调地址,联调环境请查看联调工具订单回调日志,正式环境请在开放平台-合同与财务-订单查询详情处检查订单回调信息,可能原因有以下几点
1、订单返回”查询不到用户的统一账户信息“,则说明游戏登录后没有先调用account.verifySession验证账号信息,要求验证登录会话成功后再充值
否则订单查不到账号标识,则不回调游戏服务器

2、订单传递的回调地址不正常,如后台配置正确,请检查是否在客户端传递了其它回调地址
3、通知返回异常信息,如500、未知的主机地址或time out之类的,请检查当前配置的回调地址访问是否正常,如无法判断,建议使用SDK请求的回调信息在本地模拟请求post到回调地址上,看看接收是否正常

2)接收到充值收到的回调信息内容为空
回调异步信息是通过“把结果json串放在http的body里,post给游戏的回调结果地址”这样的形式来进行通知,接收到空数据一般为游戏接收方法有问题,建议参考下DEMO实现,如
1、java先将http请求的body信息获取到,再将信息传入request参数中并进行方法调用。
2、php使用file_get_contents("php://input")接收


3)服务端接收到订单验证签名失败
请检查以下几点
1、sign拼接组成是否为“data内容(按字母升序排列)+apikey值,并且需要用小写
2、检查游戏客户端与服务器请求串中使用的gameId\apikey参数是否正常
3、cpOrdeId字段如为空则不参与签名,其它字段不管是否为空均需参与签名
4、签名内容不应包含“&”符号,拼接签名内容时需把“&”符号剔除。字符
串中若有换行情况,也应把换行符(回车或换行)剔除。

4)客户端下单时传的金额与服务器接收到的回调信息内amount值不一致,应以哪个为准,如何处理金额不符的订单
以服务端接收的回调信息内金额为准,客户端下单时传递的金额可能被玩家使用第三方修改器或其它方式修改了充值金额,不能以此为准,如出现订单金额不符合时,建议按服务器接收到的回调信息内的金额下发游戏币,或不处理订单,如用户投诉再单独处理

5)服务器收到订单后怎么判断是充值成功
游戏需根据orderStatus参数的值判断是否给玩家过账虚拟货币。(S为充值成功、F为充值失败,避免假卡、无效卡充值成功)。

6)同一笔订单SDK服务器多次回调
游戏服务器收到的订单,不管orderStatus参数的值是“S”还是“F”,只要验证签名SIGN匹配正确,都必须返回SUCCESS给UC服务器,此处代表已经接收到UC服务器通知,不需继续通知的含义,否则UC服务器将把未按规定返回内容的订单进行重发,故会产生同一笔订单回调多次

7)订单接收失败或收到后判断为异常订单,应如何返回
接收异常或订单收到后处理失败,建议返回FAILURE,这样我们才能及时发现有异常订单,从而做相应的处理

8)如何自测返回的响应是否正确
联调环境,请使用调联工具,查看订单回调响应,只返回SUCCESS即正确
正式环境,请在开放平台-合同与财务-订单查询,输入测试的UC号或订单号,点击查询订单,通知状态为成功,即正确


0

主题

0

魅力

122

经验

Lv1新手上路

Rank: 1

发表于 2017-3-15 17:24:20 |显示全部楼层
你好,想问一下 关于服务端的签名验证的问题
1.贵方返回的data参数中 除cpOrderId为空不参与验证外 其他的参数全部需要参与验证吗?
2.在参与的参数验证中,顺序是按照首字母升序排列吗?
3.签名只用md5加密就可以了吗?
望回复 谢谢
回复 推荐

举报

0

主题

0

魅力

2725

经验

Lv7略有小成

Rank: 7Rank: 7Rank: 7

发表于 2017-3-22 15:21:03 |显示全部楼层
102875687 发表于 2017-3-15 17:24
你好,想问一下 关于服务端的签名验证的问题
1.贵方返回的data参数中 除cpOrderId为空不参与验证外 其他的 ...

友友你好
1、是的
2、签名是按字母升序排列,参考接入文档
3、签名是采用MD5加密
回复 推荐

举报

0

主题

0

魅力

244

经验

Lv2初学乍练

Rank: 2

发表于 2017-4-27 18:57:29 |显示全部楼层
请问下,我登陆请求的正式接口,为什么报code:178,调用的接口类型错误,请联系九游接入组同学、??我的gameid有什么问题吗
回复 推荐

举报

40

主题

0

魅力

2万

经验

网游运维

发表于 2017-5-4 16:35:49 |显示全部楼层
1607230432 发表于 2017-4-27 18:57
请问下,我登陆请求的正式接口,为什么报code:178,调用的接口类型错误,请联系九游接入组同学、??我的game ...

6) 获取用户信息的时候返回“code:178,调用的接口类型错误,请联系九游接入组同学”
因服务端接口2014年11月底做过修改,在此日期后创建的游戏默认走新接口,原来使用旧接口serivce“ucid.user.sidInfo”更改为新接口“account.verifySession”,请游戏检查
1、新游戏默认走“account.verifySession”,如果调用使用“ucid.user.sidInfo”改更正
2、客户端使用的gameId与服务端请求使用的gameId不同,且客户端使用的gameId为2014年11月前创建的游戏
回复 推荐

举报

0

主题

0

魅力

92

经验

Lv1新手上路

Rank: 1

发表于 2017-5-5 12:13:45 |显示全部楼层
请问一下,我登录请求的是测试接口,但是返回错误信息是code":99,"msg":"系统繁忙,请稍后再试",我仔细比对了请求http中的body与服务端说明文档的body是一样的,但是总是报这个问题,请问是什么情况?
回复 推荐

举报

0

主题

0

魅力

244

经验

Lv2初学乍练

Rank: 2

发表于 2017-5-5 17:36:33 |显示全部楼层
请问,我游戏包登陆测试环境,返回“content:{"id":1493976436756,"state":{"code":41,"msg":"系统繁忙,请稍后再试","desc":"活动不存在","updateFreq":12},"data":{}},”这串,这是什么原因呢
回复 推荐

举报

40

主题

0

魅力

2万

经验

网游运维

发表于 2017-5-9 14:45:44 |显示全部楼层
1607230432 发表于 2017-5-5 17:36
请问,我游戏包登陆测试环境,返回“content:{"id":1493976436756,"state":{"code":41,"msg":"系统繁忙,请 ...

这段日志不影响的,另联调环境已经准备下线,请切到正式环境测试
回复 推荐

举报

40

主题

0

魅力

2万

经验

网游运维

发表于 2017-5-9 14:46:11 |显示全部楼层
1744407421 发表于 2017-5-5 12:13
请问一下,我登录请求的是测试接口,但是返回错误信息是code":99,"msg":"系统繁忙,请稍后再试",我仔细比 ...

请提供下完整的请求日志、请求地址
回复 推荐

举报

0

主题

0

魅力

62

经验

Lv1新手上路

Rank: 1

发表于 2017-5-17 14:38:37 |显示全部楼层
您好,请问服务端验证登录接口的gameId传的是开放平台生成的么?还是游戏厂商自己的或者登陆接口返回的?
回复 推荐

举报

12下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

站点地图| 帮助中心| 微信客服| 九游手机游戏论坛 ( 粤ICP备13078412号-3 粤网文[2014]0209-059号 广州爱九游信息技术有限公司 )

GMT+8, 2017-7-28 04:29 , Processed in 0.061630 second(s), Total 15, Slave 14 queries , Memcache On.

回顶部