我该如何批量验证iOS应用内购买收据?

6
我正在开发一款iOS应用程序,将使用苹果的应用内购买框架,让用户创建自动续订的订阅服务。
我希望我的服务器定期检查所有订阅是否已过期。苹果的Receipt Validation Programming Guide中描述了一个verifyReceipt网络服务,该服务似乎可以验证单个收据。
但是,如果我想每隔几天批量验证整个数据库,是否有比大量的单独verifyReceipt调用更好的方法?

订阅到期日会在您不知情的情况下更改吗?为什么需要重新验证? - Chris Prince
@ChrisPrince 是的,如果用户从iTunes取消了他们的订阅,我的Web服务发现这一点的唯一方法是通过轮询苹果服务器来获取订阅状态。 - Bill
目前我还不知道如何将这些请求批处理。我们向苹果建议过这一功能,但至今没有得到任何回应。 - Ric Perrott
1
我还不确定为什么你需要批量验证整个数据库。订阅是在固定时间内有效的。如果用户取消了订阅,这将在下一个续订周期生效,而非立即生效。如果用户有案例(错误的产品购买是其中一个例子),苹果客户服务可以退款订阅费用,但这可能是一个相当低的金额 - 而且你的应用程序在启动时也应该检查有效的订阅。因此,你只需要验证那些已知将在“今天”过期的订阅。 - Paulw11
@Paulw11 非常好的观点:由于订阅持续一个月,我可以跟踪到到期日期,并且只验证可能在作业运行的当天过期的收据。谢谢! - Bill
显示剩余3条评论
2个回答

2
据我所知,目前无法通过批量请求一次性发送多个收据以在iTunes服务器上验证它们...您必须逐个发送(多个请求)...
我不知道您计划如何解决这个问题是否是最佳方法。苹果公司已经扩展了有关处理自动续订订阅的文档,大多数情况下,您可以在应用程序本身中检查订阅的有效性。
请查看应用内购买文档。如果您计划依赖应用内订阅来支持您的业务模型,那么这是一篇非常好的阅读材料: https://developer.apple.com/library/ios/technotes/tn2259/_index.html

2

您无需批量验证整个数据库。订阅有效期为固定时间。如果用户取消订阅,则此操作将在下一个续订期生效,而不是立即生效。

如果用户有问题(错误的产品购买是其中一个示例),则苹果客户服务可以退还订阅费用,但这将是一个相当低的数字 - 您的应用程序也应在启动时检查有效订阅。

因此,您只需要验证已知将于“今天”到期的订阅。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接