一般来说,iOS的内购是相当的让人蛋疼的,既要明目张胆的收你的钱,还给你提供垃圾的服务,就是要恶心你,让你一遍咒骂还要一边想办法解决问题。
接下来就简单的来分析一下,我所遇到的内购的坑。
iOS的内购大致上分为两种:1,内置模式流程
2 服务器模式流程
(两种模块的区别,请自行百度)本人这里和后台对接以后,采用的是第二种模式。第一个版本上线以后,基本没有什么问题,可是到后来就慢慢的出现,用户明明就付款成功了,但是我们的后台服务器没有改变对应的余额给用户。这就导致被投诉。没有办法,就只有自己加条件,减少这种情况的出现。具体做法,见代码。
第一步:
第二步:
第三步:
第四步:
第五步:将后台给的校验接口,进行二次调用。第一次调用,让后台将教育凭证上传到服务器保存起来。
第六步:第二次调用的时候,对交易凭证进行对比,如果凭证一样,那么就移除凭证。如果不一样或者服务器请求超时,那么这个凭证就会被保留下来。当再次调起APP的时候,内购的漏单校验代理会再次去检测本地是否还有未完成的订单,如果有那么就执行,这样用户对于的余额就对了。
最后在推荐一个比较机械化的办法,就是对内购流程进行埋点处理。用用户名和订单号加时间戳的办法去记录每一笔订单,如果出现了漏单的情况,这个日志记录就可以去查询用户是否付款成功,但是可用余额又没有到账的情况。查询以后,叫后台去人为的修改数据即可。
根据本人的经验,特别是晚上的时候,进行内购充值的时候,常常会发生服务器异常半天充不成功的情况。所有双保险吧,两种方法都用上。
打字配图不易,求关注,求喜欢。