U8SDK——终于啃下【应用宝】这个硬骨头

作者: 分类: U8SDK 发布时间: 2015-10-15 20:21 615条评论

这两天终于将腾讯应用宝的SDK给搞定了,之前U8SDK仅仅接入了应用宝的SDK,U8Server并没有实现服务器对应的逻辑。主要是应用宝的支付流程和其他的渠道SDK实在不一样,加上,所问无人解答,事情很多,就被延迟了。目前接入的版本是2.8.1
 
这两天,应U8SDK部分用户的要求,就想着硬着头皮把应用宝这个顽固给破解掉,哪怕方法不一定好,但至少是完整可用的。经过几天的摸索和尝试,终于在沙箱环境中测试通过。接下来就记录下应用宝的接入过程,把一些踩过的坑标一标
 
1,去后台申请注册一个游戏(http://open.qq.com),可能要实名认证。
 
2、注册一个新的移动应用,然后申请参数
 
3、2.8.1版本之后,采用了MSDK KEY,之前微信AppKey不再使用。这里要注意,参数别使用错了
 
4、登录包含QQ登录和微信登录,素材直接在网站上下载,U8SDK接入的方式,为了不耦合游戏层,这里写一个弹窗,展示QQ登录和微信登录按钮。
 
5、调试在沙箱环境中调试,在后台开启同步沙箱环境。
 

6、支付接入的是米大师,但是,支付流程和其他渠道不一样。请看下图。目前只支持 “游戏币托管模式”,所谓的“道具直购”模式,虽然文档提了,但是明确说了,暂时不支持此种方式接入
 
米大师和其他渠道SDK支付不太一样,不是通过配置回调地址,异步通知支付结果。而是,客户端调用支付界面支付成功之后,客户端SDK回调之后,客户端需要通知u8server,让u8server去米大师服务器查询余额。但是,我们希望做到支付和消费是一次性的。而不是每次用户游戏内消费,去调用米大师消费的接口。
所以,我们采用u8server查询到余额之后,里面调用消费的接口,扣除用户账户上当前所有的游戏币。

 800px-Liuchengxu

7、游戏币托管模式,就是在腾讯应用宝后台,设置好Q币和游戏里面的支付获取的游戏币的比例关系,然后,支付之后,应用宝返回给你的是游戏币的数量,而不是充值的金额。

8、鉴于米大师,是这种游戏币托管模式,所以类似充值赠送就做不了了,同时客户端充值商品条目必须是固定比例的充值金额,比如
 
充值10元,获得100元宝
充值50元,获得500元宝
充值100元,获得1000元宝
 
这样就是OK的。
 
充值10元,获得100元宝(赠送20元宝)
充值50元,获得500元宝(赠送100元宝)
充值100元,获得1000元宝(赠送300元宝)
 
这样就做不到。因为当多次充值连续,或者充值延时的时候,用户账户上的余额,无法确定为对应的是哪个商品条目。
 
充值10元,获得40元宝
充值50元,获得300元宝
充值100元,获得800元宝
 
这样也做不到,游戏币和人民币的比例必须固定

8、沙箱环境中,测试出现“系统异常,请稍后重试”等,是因为沙箱环境不稳定,一段时间之后再试。多种支付方式换着测

9、为了防止丢单,我们需要在用户每次进游戏的时候,都去请求U8server去查询余额,并消费。这样,可以避免用户丢单的情况。
同时,防止部分支付方式延迟,支付之后,u8server如果没有查询到余额,需要定时去查询,持续2分钟,20秒一次

10、应用宝后台支持分区,鉴于“游戏币托管模式” 流程无法支持当前的订单流程,所以,我们需要将服务器ID和应用宝后台配置的分区ID要一致。
因为没有订单的概念,请求支付前,不需要去u8server获取订单号了,所以也没办法携带自定义参数,表示当前充值的用户roleID,serverID等信息
u8server支付成功之后,返回数据给游戏服务器,游戏服务器无从得知当前是哪个服务器,哪个角色。

11、因为没有订单的概率,数据库中我们单独建立一张表存储应用宝的支付信息。作为数据统计查询使用

12、u8server处理好通知游戏服,这里让游戏服单独提供一个回调接口,给应用宝,因为对于应用宝的回调,游戏服务器直接根据当前游戏币,发送对应的游戏币即可,不再根据支付选项。

13、查询余额和消费的协议,中cookie中的字段别设置错了,刚被坑过,大意了。

14、最后,过程中遇到任何问题,可以咨询腾讯企业QQ:800013811(这一点做的还不错)

最后不得不说,腾讯这里文档的繁杂,真不是一点点。各个地方的描述还不一样,也不晓得哪个是最新哪个是老的。被文档坑了不少次。

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1927

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入