一次ios内购 IAP问题

昨天游戏玩家反映 支付2笔订单后 没有收到东西,查询了服务器发现了问题。。。

玩家2笔充值记录  相差10s钟

后台下单数据

客户端 把订单id和iap支付票据 搞叉了。。。。app每次到应用服务器下完单之后,应用服务器给app的订单号  app只保存在内存中 而且是覆盖保存,所以会出现先付款的票据 + 后下单的orderid,解决方案其实也很简单,app把订单id 做队列记录。。。。

比如说  orderid:xxxx---->商品名称:com.kx880.devilhunter.1010011----->票据:xxxxxxxx,下单了A商品 支付成功了还没有收到票据的话,就不让接着买A商品了这是最保险的。。当然也可以让它记着买,先回来的票据就和队列里边先下单的orderid匹配

一个map里边存放购买该队列的所有oriderid,下单一次就队列里边push一个orderid,票据回来一个 就从队列里边取一个orderid 匹配。。。。

伪代码:

m["com.kx880.devilhunter.1010011"]  = [1001,1005]

m["com.kx880.devilhunter.1010012"]  = [1002,1003]

m["com.kx880.devilhunter.1010013"]  = [1004,1005]

回来了一个 com.kx880.devilhunter.1010012 类型商品的票据  那么就让它去和1002 匹配  发给服务器就好了。。。。。。。

具体的  有人已经封装好了客户端的sdk   https://juejin.cn/post/6844903538259132430 。。。。。

服务器其实也是可以做这些东西的,client 省略了不少工作

客户端下单的时候,服务器记录  以1001001这个玩家为例,下单之后 就把orderid 加入到队列,如果客户端取消支付了也通知服务器,就把最后一个orderid给删除了。。。。。

支付过后 收到票据发给服务器,服务器去校验,如果校验正常 就告诉客户端,客户端可以去消单了,如果有异常就把当前的消息保存下来(异常可能是自己服务器的网络,也有可能是IAP服务器的问题等等),后台有个定时任务去校验这些第一次校验有异常的订单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值