苹果内购漏单的问题一直都是个头疼的问题,相信有很多公司都遇到这样的问题,今天来说说我是怎么解决苹果内购漏单的问题的。
解决思路:
1.用户下单成功后我们需要保存用户的下单数据,将productid,orderid,cporderid等信息保存到本地数据库;
2.拉起内购让用户完成购买行为;
3.用户购买成功后,我们可以根据苹果推给我们的productid去数据库查询对应的产品(必须保证transactionid为空,这是为了保证用户最新购买成功的订单),只需要获取数据库相同productid最后一条数据就可以了,然后把这条数据更新,更新的内容是添加receipt,transactionid,这条数据就标记为用户购买成功但是并没有发货的数据了;
4.将这条数据推给服务器,让服务器去和苹果校验并完成发货。如果发货成功则删除这条数据,如果发货不成功,则在用户每次下单的时候先检查数据库是否有没有发货成功的订单,如果有责继续完成发货操作,如果没有就可以重新下单了。
5.用户每次下单前先检查数据库是否存在发货失败的订单(这次可以根据transactionid查询数据库,有这个字段的都是购买成功但是没有发货的订单),如果有则通知服务器发货,发货成功删除,发货不成功继续保存,下次继续这样的操作,如果数据库没有查询到数据,则可以开始心的下单操作。
iOS 内购漏单问题解决参考方案
iOS内购漏单问题的处理
ios内购——因缺少“恢复购买”功能被拒解决方案
List item
如果我们在苹果后台创建了 “非消耗型” 的商品,苹果会要求app内必须设置 “恢复购买” 的功能。否则就会有审核被拒风险,前几天我们的app就因为这个被拒审了。
9月24日被拒,原因如下:
Guideline 3.1.1-Business - Payments - In-App Purchase
We found that your app offers in-app purchases that can be restored but does not include a “Restore Purchases” feature to allow users to restore the previously purchased in-app purchases, as specified in the “Restoring Purchase Products” section of the In-App Purchase Programming Guide:
“Users restore transactions to maintain access to content they’ve already purchased. For example, when they upgrade to a new phone, they don’t lose all of the items they purchased on the old phone. Include some mechanism in your app to let the user restore their purchases, such as a Restore Purchases button.”
Next Steps
To restore previously purchased in-app purchase products, it would be appropriate to provide a “Restore” button and initiate the restore process when the “Restore” button is tapped by the user. Note that automatically restoring purchases on launch will not resolve this issue.
中文大意为:我们发现你们的app包含内购功能,却没有给用户提供一个“恢复购买”的按钮。用户可以使用“恢复购买”功能保持对已购买内容的访问。例如,当他们升级到新手机时,他们不会丢失在旧手机上购买的所有商品。
解决方案:经check,我们的app包含“恢复购买”的代码和功能,只是一直没有在app上设置“恢复购买”的按钮,于是修改后重新提审。
9月25日再次被拒:原因很简单,我们用错单词了?苹果很认真地告诉我们要使用“restore”,而不是“resume”。
解决方案:修改了文案,英文使用“Restore Purchases”,中文使用“恢复购买”,当天修改后提审,第二天过审。
————————————————