我如何知道应用内购买收据是否来自沙箱?

时间:2013-04-24 08:36:02

标签: ios security in-app-purchase

iOS IAP文档states,如果您要测试商店,则应该从设置应用程序中的youunes帐户注销。在进行应用内购买时,系统会要求您输入用户名和密码。但是,在应用程序内部,我不知道用户是否已登录或是否正在使用沙盒帐户。

事实上,我并不关心它是否是沙盒交易,但是:在服务器上,我必须通过URL https://buy.itunes.apple.com/verifyReceipt验证真实收据,并通过URL https://sandbox.itunes.apple.com/verifyReceipt验证沙箱收据。如何在服务器上知道收据是沙箱收据还是真实收据?

或者应用程序如何知道收据是真实的还是沙箱,因为将应用程序中的其他参数传递给我的服务器没有问题。

什么行不通:您不能只说应用程序的DEBUG版本使用沙箱环境,应用程序的ADHOC或RELEASE版本使用生产环境。使用ADHOC版本,完全可以使用iTunes测试帐户进行应用内购买。

1 个答案:

答案 0 :(得分:9)

验证收据时,如果收到状态代码21007,则表示其为沙箱收据。看这里:https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

  

我应该使用哪个网址来验证收据?
  始终首先使用生产URL验证收据;如果您收到21007状态代码,请继续使用沙箱URL进行验证。遵循此方法可确保您在沙盒中测试或查看应用程序时,不必在URL之间切换,也不必在App Store中进行切换。

     

21007状态代码表示此收据是沙盒收据,但已发送到生产服务进行验证。状态为0表示收据已正确验证。有关详细信息,请参阅WWDC 2012: Managing Subscriptions with In-App Purchase