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

iOS IAP文档指出 ,如果你想testing商店,你应该在设置应用程序中注销itunes帐户。 在进行应用程序内购买时,您需要input用户名和密码。 但是,在应用程序内部,我不知道用户是否已经login,或者他是否正在使用沙盒帐户。

实际上,我并不在乎它是否是一个沙盒事务,但是:在服务器上,我必须通过URL https://buy.itunes.apple.com/verifyReceipt和沙盒收据validation实际收据,通过URL https ://sandbox.itunes.apple.com/verifyReceipt 。 如何在服务器上知道收据是沙箱收据还是实际收据?

或者,应用程序如何知道收据是真实的还是沙箱,因为从应用程序传递额外的参数到我的服务器没有问题。

什么不起作用:您不能只说应用程序的DEBUG版本使用沙盒环境,应用程序的ADHOC或RELEASE版本使用生产环境。 使用ADHOC版本,完全可以使用iTunes Test Accounts进行应用程序内购买。

当您validation收据时,如果您收到状态码21007,则表示它是沙盒收据。 看这里: https : //developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

我应该使用什么url来validation我的收据?
请始终使用生产urlvalidation您的收据; 如果您收到21007状态码,请继续使用沙盒url进行validation。 遵循这种方法可确保您的应用程序在沙箱中进行testing或查看或在App Store中生效时不必在URL之间进行切换。

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