(1) 苹果内购的坑 - 掉单

在iOS开发中,苹果内购过程中遇到的一个主要问题是掉单,即客户端无法将支付状态通知服务器导致用户已付款但未收到商品。为解决这个问题,开发者可以将支付成功的票据保存到本地,并在用户支付后立即请求服务器进行验证。如果请求失败,可以使用信号量机制进行多次尝试,确保服务器最终能接收到支付信息,从而减少丢单现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

苹果内购问题

在iOS开发中,支付方式可以用微信、支付宝、银联啥的,但是购买虚拟物品比如游戏中的金币、视频会员等等,苹果规定必须用内购,好了嘛,那就用啊,可是过程中会遇到好多坑。。。
当然我遇到的坑已经添上了,希望这文章可以帮你避开那些坑。

掉单问题最为严重
大家都知道,微信和支付宝支付是比较完善的,当用户支付成功后,他们会给服务器一个支付结果回调,这样就算客户端有什么意外没拿到结果,服务器也是知道支付状态的。
内购可不是这样,坑就坑在,它只有客户端能拿到支付状态,成功或是失败之后通知自己的服务器,服务器去验证票据,如果这个环节断了,比如突然退出app、网络不好没有通知到,都有可能,这时候服务器没有拿到票据就没办法给用户发货,但用户钱已经付了啊,这就尴尬了,,很可能引起用户不满,投诉我们,。


对于上面的问题我们的解决办法是
当用户支付成功后吧需要验证的票据立刻保存到本地,然后请求自己服务器,当服务期成功返回后,我们再把票据本地删除,并且删除当前事物

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

删除事物是必要的,无论成功,失败还是取消,都需要删除&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值