检查用户是否实际支付了应用内购买费用 [iOS, Swift]

Check to see if user actually payed for in-app purchase [iOS, Swift]

给你一个奇怪的:)

我有一个 iOS 应用程序,它有一个非消耗性产品作为用户可以购买的应用程序内购买。如果您愿意,可以终身订阅。

问题是我的代码中有一个错误,允许用户通过点击“恢复购买”按钮“订阅”我的应用程序。

我现在修复了这个错误,但我遇到了问题。现在大约有 50 位用户订阅了这项服务,但从未支付过费用。

有没有办法查看用户是否真的以某种方式为此付费?如果他们不付款,我想退订他们。

系统是这样工作的:

用户点击“购买”,Apple 会为我处理购买事宜,在处理付款队列时,如果购买成功,我会通过将他们的 iCloud ID 添加到我的数据库来订阅用户。所以我拥有的唯一数据是他们的 iCloud id,没有别的。我不知道哪个 iCloud ID 是“付费”的,哪个是“作弊”:)

您可以从用户的设备上获取收据,并通过苹果终端查询用户是否进行了有效购买。理想情况下,您应该从应用程序中获取收据并将其发送到您的服务器以在后端执行验证。

查看此文档以获取设备收据 - https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store

查看此文档以使用 Apple 端点调用验证收据 - https://developer.apple.com/documentation/appstorereceipts/verifyreceipt