我正在我的应用中实现自动续订订阅。我能够完美地完成所有购买和修复。但我对保存收据细节的最佳方法感到震惊。以下是我的问题。
我知道一些方法。但想知道最好的方法。请指导我实现上述目标的最佳步骤。谢谢。
答案 0 :(得分:2)
我会尝试回答您的问题,但您可能会看到WWDC StoreKit视频,1和2。
我会将购买状态存储在您存储所有其他客户端状态的相同位置。
我不会保存整张收据。这将是过度的,只需提取您需要的信息并保存。始终可以从Bundle.appStoreReceiptURL
访问收据,因此您无需存储收据。
对于订阅,您需要使用Apple的verifyReceipt
端点验证收据,并找到给定IAP产品标识符的最新expires_date
。存储此日期(默认值或其他地方)并使用它来计算用户的状态。
获取最新到期日期的正确方法是将收据发送到您自己的服务器,存储它,并定期针对verifyReceipt
端点进行检查,并从latest_receipt_info
更新到期日期响应中的字段。一个不太好的解决方案是确保您的应用中始终有SKPaymentQueue
观察者设置,因为当定期订阅续订时,新事务将出现在队列中。如果你处理这个,阅读新的收据数据,并完成交易,你不需要一个完整的后端,但是,如果没有独立于你的后端验证收据,它将容易受到IAP破解者的攻击。</ p>
当您向/verifyReceipt
发送收据时,您将收到一封JSON回复,其中包含将包含最新交易的密钥latest_receipt_info
。无论收据多长,这都是真的。
IAP,特别是订阅不是一个简单的系统,因此我强烈建议您花些时间观看WWDC视频并阅读Apple的guides on StoreKit。