ios内购返回html,iOS内购掉单问题处理方法

iOS内购提供了两种模式,一种是单机(本地验证)模式,另一种是服务器端验证模式。

单机验证模式:适用于单机应用,安全性低,数据易被篡改。

服务器验证模式:应用服务器提交支付票据到苹果服务器验证,安全性较高。

这里我画了一下我们iOS内购支付的时序图

54b26410372c84961613bc91af6fe06b.png

什么是掉单?

用户选定商品支付完成后,服务器不能正确及时的获取支付状态,导致这笔已支付的订单未能发货。

为什么会产生掉单?

1. 手机网络情况复杂多变。

2. 苹果服务器在境外连通性不确定。

以上两个客观原因,我们无法改变,会导致如下情况:

1. 用户支付完成之后,苹果服务器将支付票据返回给客户端,客户端发送票据到游戏服务器。(可能会断网,未能提交到游戏服务器)

2. 游戏服务器拿到支付票据,请求苹果服务器票据验证。(游戏服务器连接苹果服务器超时,未能验证票据)。

优化方案

掉单的原因目前已经找到了,那么需要从客户端和服务器两个方面做优化,彻底解决掉iOS支付掉单问题。

客户端需要做什么优化?

客户端在拿到苹果支付票据后,一定要先将支付票据和用户账号做映射,标记为未验证,保存到本地数据库中,然后把票据提交到游戏服务器,在确保得到游戏服务器的反馈,在将本地数据库中该条记录删除,确保游戏服务器收到该票据。

服务器端做什么优化?

服务器接收到客户端的票据以及验证信息时,先将票据存储到数据库中,然后请求苹果服务器验证票据,如果因为连接苹果服务器超时或者其他网络情况,标记该票据为验证证状态,后续交给定时任务处理,确保能够正确验证票据结果。

参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值