首页 文章

iOS自动续订订阅:收据验证流程

提问于
浏览
10

我'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 回答

  • 8

    如果用户购买了订阅,我的收据将自动更新该购买的信息?

    是的,收据本质上是存储在设备上的文件,在购买之后,收据文件被更新并附加最新的交易 .

    如果是这样,是否有必要在购买后立即验证收据,还是应该立即“解锁”应用程序?

    这取决于您对欺诈的关注程度 . 有许多工具可用于破解在监狱破坏的设备上的应用内购买,而不验证可以允许用户免费访问您的内容 . 如果这是一个问题,请在解锁内容之前验证您的收据 .

    在什么情况下我的收据会从NSBundle丢失?

    如果在购买过程中用户失去连接,则收据数据可能无法完全下载,从而使您收到不完整的收据 . 我怀疑还有其他情况,但我自己并没有遇到任何情况 .

    如果发生这种情况,我想我应该使用SKReceiptRefreshRequest刷新收据,并将其发送到服务器进行验证 .

    是的,但请记住,这只会更新收据文件,然后您需要再次调用 appStoreReceiptURL 以从文件中检索收据 .

    如果用户在不同的设备中安装应用程序并恢复他的购买restoreCompletedTransactions,我是否会同时自动获取收据?

    收据文件将被更新,但您需要致电 appStoreReceiptURL 以获取收据 .

    我想我需要在恢复后验证收据,以确保有一个有效的订阅,对吗?

    是的,好主意 .

    当我的服务器尝试验证收据,并且该收据无效时,应用程序端会发生什么?刷新收据(将要求用户提供凭据)并再次将其传递给服务器以进行新的重新验证?

    我会告诉用户您不相信收据有效并提供重试选项 . 致电 SKReceiptRefreshRequest ,再次将收据发送到您的服务器 . 如果随后失败,则再次显示该选项 .

    如果用户进行了欺诈性购买,我怀疑他们会向您或Apple投诉 .

相关问题