所以我遵循了官方手册并实现了这个:
https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1
- 用户在应用中付款
- 应用从苹果获取收据信息
- 此收据信息已发送到我的服务器
- 我的服务器通过调用苹果API验证收据并激活客户端的会员资格
显而易见的问题是3.可能会失败。我有客户抱怨他们付了钱,他们向我发送了被扣除金额的SS,但我的服务器从未收到通知。而且我没有办法找到这些用户。是否有一些CP,我可以按客户电子邮件或交易ID进行搜索,以检查这是经过照片处理的屏幕截图还是有效的屏幕截图?
是否有一些 API 可以调用来按客户的产品和电子邮件列出交易?
https://appstoreconnect.apple.com/- 苹果CP对此毫无用
处没有方法可以将客户详细信息与您的交易详细信息相关联。只有苹果才能做到这一点。
我的第一个怀疑是您在购买过程中可能存在逻辑问题。 如果正确实现,步骤 3 中的暂时性故障无关紧要。
您应该:
- 应用启动后立即创建事务队列观察器。这将使任何待处理的交易能够传递给您的观察者
- 当您在观察器中获得购买交易时,您需要与服务器进行验证
- 只有当您收到服务器响应成功记录购买时,您才会拨打
finishTransaction
。
这样,如果您的服务器出现问题或应用程序崩溃,则事务仍在队列中挂起。
如果您使用的是自动续订和/或非消耗性IAP,那么我 强烈建议您在 蒂奥 这使得用户在出现问题或何时出错时变得简单 他们移动到新设备。
如果您有用户声称他们没有得到他们所支付的费用,那么您可以将他们推荐给 Apple App Store 支持,他们可以退还交易。
如果步骤 3 失败,您可以回退到本地验证,然后让用户通过此会话(或在要求会话成功之前进行一定数量的会话(。 不幸的是,本地身份验证很痛苦,因为收据是加密的。有关示例,请参阅此链接:https://github.com/andrewcbancroft/SwiftyLocalReceiptValidator 。 您还可以向分析工具报告步骤 3 的失败,以便查看谁实际受到此问题的影响(显然,这仅在分析最终获得互联网连接时才有效。