苹果内购问题
在iOS开发中,支付方式可以用微信、支付宝、银联啥的,但是购买虚拟物品比如游戏中的金币、视频会员等等,苹果规定必须用内购,好了嘛,那就用啊,可是过程中会遇到好多坑。。。
当然我遇到的坑已经添上了,希望这文章可以帮你避开那些坑。
掉单问题最为严重
大家都知道,微信和支付宝支付是比较完善的,当用户支付成功后,他们会给服务器一个支付结果回调,这样就算客户端有什么意外没拿到结果,服务器也是知道支付状态的。
内购可不是这样,坑就坑在,它只有客户端能拿到支付状态,成功或是失败之后通知自己的服务器,服务器去验证票据,如果这个环节断了,比如突然退出app、网络不好没有通知到,都有可能,这时候服务器没有拿到票据就没办法给用户发货,但用户钱已经付了啊,这就尴尬了,,很可能引起用户不满,投诉我们,。
对于上面的问题我们的解决办法是
当用户支付成功后吧需要验证的票据立刻保存到本地,然后请求自己服务器,当服务期成功返回后,我们再把票据本地删除,并且删除当前事物
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
删除事物是必要的,无论成功,失败还是取消,都需要删除&#