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

Mic*_*ael 3 security in-app-purchase ios

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

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

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

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

JDx*_*JDx 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:使用应用程序内购买管理订阅.

  • 非常小心依赖于21007.请阅读这里的重要说明http://stackoverflow.com/questions/9677193/ios-storekit-can-i-detect-when-im-in-the-sandbox (2认同)