ios – 如何在使用自动可再生应用内购买时恢复正确的交易?

ios – 如何在使用自动可再生应用内购买时恢复正确的交易?,第1张

概述这个问题是关于自动再生IAP的问题,以及如何恢复. 这些链接: this和 this没有帮助我不幸. 在我的应用程序中,我有用户订阅自动可再生应用内购买. 他们可以订阅1,6或12个月. 当他们订阅时,交易收据将发送到我的服务器以备以后验证. 我不会立即验证收据,因为它会减慢用户体验(对苹果服务器的收据验证查询大约需要1 – 2秒).相反,我使用天真的方法,并提供用户订阅的内容,无需任何直接的接收 这个问题是关于自动再生IAP的问题,以及如何恢复.
这些链接: this和 this没有帮助我不幸.

在我的应用程序中,我有用户订阅自动可再生应用内购买.
他们可以订阅1,6或12个月.

当他们订阅时,交易收据将发送到我的服务器以备以后验证.
我不会立即验证收据,因为它会减慢用户体验(对苹果服务器的收据验证查询大约需要1 – 2秒).相反,我使用天真的方法,并提供用户订阅的内容,无需任何直接的接收验证.我安排一个cron工作,每天验证每个用户的收据,并在过期的收据上撤销特权.

现在,由于苹果指南清楚地表明,对于具有自动可再生订阅的应用程序,还需要恢复功能,所以我选择实施.

当我尝试在沙箱模式下恢复购买时,使用:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

我不仅获得当前的订阅,而且所有以前的订阅(包括过时的订阅)在回调到:

- (voID)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

目前我已经尝试了我的IAP约30次,这意味着上述方法发送了30个不同的事务(过时和活跃).对于这些交易中的每一个,我将交易收据上传到我的网络服务,以备后续验证.

现在.如果最后一笔交易有过期的收据(但第二个到最后一个事务实际上是有效的),它将覆盖当前用户的当前(有效)收据,从而虚假地撤销该用户的权限.

基本上我的问题是当调用restoreCompletedTransactions时,我获取了过时和活动事务的列表.而在服务器端,他们可能会使对方无效.最好,我只想检索一个事务(最相关),并将该收据发送到我的服务器进行后续验证.

总而言之,我猜我的主要问题是:

如何确保仅恢复活动(即最新)事务?

解决方法 我的解决方案:检索收据并根据您的productIDentifIErs验证.使用SKPaymentQueue.defaultQueue().restoreCompletedTransactions()进行自动更新订阅并不合适,因为:

>花费太长时间,因为它导致收据验证被称为太多次(一次是过去的每个交易)
>可能导致有效的事务验证被后续的失败事务覆盖

例如,如果您有三个持续时间用于自动续订订阅,则只需对与三个订阅持续时间相关联的三个productIDentifIEr验证收据.

总结

以上是内存溢出为你收集整理的ios – 如何在使用自动可再生应用内购买时恢复正确的交易?全部内容,希望文章能够帮你解决ios – 如何在使用自动可再生应用内购买时恢复正确的交易?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存