【问题标题】:iOS auto-renewable subscriptions: receipt validation flowsiOS 自动更新订阅:收据验证流程
【发布时间】:2014-11-10 02:22:24
【问题描述】:

我正在实现一个自动续订订阅方案,其中收据验证将由我的服务器端代码处理。按照 Apple 的documentation,我将从NSBundle 获取收据数据,并将该数据传递到我的服务器,服务器将联系Apple 验证收据并通知应用程序结果。

现在我的问题与收据验证相关的必要流程有关:

  1. 如果用户购买了订阅,我的收据是否会自动更新为购买的信息?如果是这样,是否有必要在购买后立即验证收据,还是应该立即“解锁”应用?

  2. 在什么情况下NSBundle 会丢失我的收据?如果发生这种情况,我想我应该使用SKReceiptRefreshRequest 刷新收据,并将其发送到服务器进行验证。

  3. 如果用户在不同的设备上安装应用程序并恢复他的购买restoreCompletedTransactions,我是否会同时自动获得收据?我想我需要在恢复后验证收据以确保订阅有效,对吗?

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

【问题讨论】:

  • 瑞,你已经弄清楚这其中的来龙去脉了吗?如果您(或其他人)可以提供这个问题的答案,那就太好了。
  • 您也可以查看此关于收据验证的常见问题解答:blog.apphud.com/receipt-validation

标签: ios in-app-purchase subscription auto-renewing receipt-validation


【解决方案1】:

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

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

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

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

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

如果用户在购买过程中断开连接,收据数据可能无法完全下载,从而导致您收到不完整的收据。我怀疑还有其他情况,但我自己还没有遇到过。

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

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

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

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

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

是的,好主意。

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

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

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

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2018-06-02
    • 2016-02-25
    • 2015-11-16
    相关资源
    最近更新 更多