U8SDK——终于啃下【应用宝】这个硬骨头
这两天终于将腾讯应用宝的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、调试在沙箱环境中调试,在后台开启同步沙箱环境。
1 2 3 4 5 6 7 |
5.1、assets下msdkconfig.ini中使用MSDK_URL=http://msdktest.qq.com 作为沙箱环境地址 5.2、config.xml中WG_ENV设置为test,表示沙箱环境,release为线上正式环境。 5.3、服务器端支付查询余额和消费地址都是http://msdktest.qq.com,正式环境是http://msdk.qq.com 5.4、沙箱环境AppKey使用的是沙箱环境对应的AppKey,线上正式环境对应的AppKey不同,注意别弄错了。客户端和服务器端都一致 5.5、沙箱环境,测试支付提供了 发Q币,生成QQ卡,生成支付卡号等工具,可以给QQ号发Q币等,用于测试。 5.6、沙箱环境测试成功之后,记得提交审核,审核通过,才能切到线上环境 |
6、支付接入的是米大师,但是,支付流程和其他渠道不一样。请看下图。目前只支持 “游戏币托管模式”,所谓的“道具直购”模式,虽然文档提了,但是明确说了,暂时不支持此种方式接入
米大师和其他渠道SDK支付不太一样,不是通过配置回调地址,异步通知支付结果。而是,客户端调用支付界面支付成功之后,客户端SDK回调之后,客户端需要通知u8server,让u8server去米大师服务器查询余额。但是,我们希望做到支付和消费是一次性的。而不是每次用户游戏内消费,去调用米大师消费的接口。
所以,我们采用u8server查询到余额之后,里面调用消费的接口,扣除用户账户上当前所有的游戏币。
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