如何确定应用内购买收据是否来自沙盒环境?

5
iOS IAP文档说明,如果您想测试商店,应该在设置应用程序中退出您的iTunes帐户。进行应用内购买时,然后会要求您输入用户名和密码。但是,在应用程序内部,我不知道用户是否已登录或者他是否使用沙盒帐户。
实际上,我并不关心它是否是沙盒交易,但是:在服务器上,我必须通过URL https://buy.itunes.apple.com/verifyReceipt 验证真实收据和通过URL https://sandbox.itunes.apple.com/verifyReceipt 验证沙盒收据。如何在服务器上知道收据是沙盒收据还是真实收据?
或者应用程序如何知道收据是真实的还是沙盒的,因为我没有问题将额外的参数从应用程序传递到我的服务器。
无法使用以下方法:您不能仅仅说DEBUG版本的应用程序使用沙盒环境,而ADHOC或RELEASE版本的应用程序使用生产环境。使用ADHOC版本可以完全使用iTunes测试帐户进行应用内购买。
1个回答

11

当您验证收据时,如果收到状态码21007,表示这是一个沙盒收据。请查看此处:https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

应使用哪个网址来验证我的收据?
总是先用生产网址验证收据;如果收到21007状态码,则继续使用沙盒网址进行验证。按照此方法确保您在应用程序在沙盒中进行测试或审核,或在App Store上线期间无需在不同的网址之间切换。

状态码21007表示此收据是沙盒收据,但已发送到生产服务进行验证。状态0表示收据已正确验证。有关更多信息,请参见WWDC 2012:使用应用内购买管理订阅


2
非常小心依赖于21007。在这里阅读关键说明:https://dev59.com/jmkw5IYBdhLWcg3wwNJ5 - Fattie

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