我'm implementing an auto-renewable subscription scenario, where the receipt validation will be handled by my server-side code. Following Apple',我将从 NSBundle
获取收据数据,并将该数据传递给我的服务器,该服务器将联系Apple以验证收据并通知应用程序结果 .
现在我的问题与收据验证相关的必要流程有关:
-
如果用户购买了订阅,我的收据将自动更新该购买的信息?如果是这样,是否有必要在购买后立即验证收据,还是应该立即“解锁”应用程序?
-
在
NSBundle
中我的收据遗失的情况是什么?如果发生这种情况,我想我应该使用SKReceiptRefreshRequest
刷新收据,并将其发送到服务器进行验证 . -
如果用户在其他设备上安装该应用并恢复购买
restoreCompletedTransactions
我是否会同时自动获取收据?我想我需要在恢复后验证收据,以确保有一个有效的订阅,对吗? -
当我的服务器尝试验证收据,并且该收据无效时,应用程序端会发生什么?刷新收据(将要求用户提供凭据)并再次将其传递给服务器以进行新的重新验证?
1 回答
是的,收据本质上是存储在设备上的文件,在购买之后,收据文件被更新并附加最新的交易 .
这取决于您对欺诈的关注程度 . 有许多工具可用于破解在监狱破坏的设备上的应用内购买,而不验证可以允许用户免费访问您的内容 . 如果这是一个问题,请在解锁内容之前验证您的收据 .
如果在购买过程中用户失去连接,则收据数据可能无法完全下载,从而使您收到不完整的收据 . 我怀疑还有其他情况,但我自己并没有遇到任何情况 .
是的,但请记住,这只会更新收据文件,然后您需要再次调用
appStoreReceiptURL
以从文件中检索收据 .收据文件将被更新,但您需要致电
appStoreReceiptURL
以获取收据 .是的,好主意 .
我会告诉用户您不相信收据有效并提供重试选项 . 致电
SKReceiptRefreshRequest
,再次将收据发送到您的服务器 . 如果随后失败,则再次显示该选项 .如果用户进行了欺诈性购买,我怀疑他们会向您或Apple投诉 .