Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS应用内购买:苹果评论员会测试实时环境还是沙盒环境?_Ios_In App Purchase_Sandbox - Fatal编程技术网

iOS应用内购买:苹果评论员会测试实时环境还是沙盒环境?

iOS应用内购买:苹果评论员会测试实时环境还是沙盒环境?,ios,in-app-purchase,sandbox,Ios,In App Purchase,Sandbox,我使用应用内支付销售ingame耗材。 成功付款后,我将付款收据转发到我的后端,这将使用iTunes支付后端验证收据。 这在沙箱环境中可以完美地工作 现在我提交了我的应用程序,这样它就可以得到苹果公司的批准,并在应用程序商店中发布。当然,我确保我的后端将通过itunes后端的生产环境验证付款收据,因为我希望苹果公司的人在生产模式下测试应用程序。 然而,该应用程序被拒绝。作为一个原因,我被告知购买我的消耗品不起作用(由于收据无效,被我的后端拒绝)。 检查我的日志后,我看到3次尝试购买。我解码了使用

我使用应用内支付销售ingame耗材。 成功付款后,我将付款收据转发到我的后端,这将使用iTunes支付后端验证收据。 这在沙箱环境中可以完美地工作

现在我提交了我的应用程序,这样它就可以得到苹果公司的批准,并在应用程序商店中发布。当然,我确保我的后端将通过itunes后端的生产环境验证付款收据,因为我希望苹果公司的人在生产模式下测试应用程序。 然而,该应用程序被拒绝。作为一个原因,我被告知购买我的消耗品不起作用(由于收据无效,被我的后端拒绝)。 检查我的日志后,我看到3次尝试购买。我解码了使用过的收据,发现所有这些都是“环境”=“沙盒”

这是否意味着苹果在沙箱模式下测试提交的应用程序?那太疯狂了!我应该允许在我的生产环境中使用沙箱支付吗?
关于这方面的任何事实?

托马斯,你一定要阅读苹果关于应用内购买的常见问题:

始终首先使用生产URL验证您的收据;如果收到21007状态代码,请继续使用沙盒URL进行验证。遵循这种方法可以确保在应用程序在沙箱中测试或审阅或在应用商店中运行时,不必在URL之间切换


是的,他们有点疯狂。但是我们知道,不是吗?

@janp的答案是正确的。如果您想快速回答是/否,常见问题解答中的具体答案是

您应该在审查应用程序时使用沙箱

(15) 我应该使用什么url来验证我的收据?
在sandbox中测试应用程序时,以及在应用程序处于审阅状态时,请使用sandbox URL。

快速回答:如果应用程序处于审阅状态,请使用sandbox

我应该使用什么url来验证我的收据?使用沙盒URL 在测试你的 应用程序在沙箱中,并且在您的应用程序正在审查时

使用生产URL一次 您的应用程序在应用商店中实时运行


哇,谢谢你…我真不敢相信我花了多少时间调试代码。你难道不知道我在哪里可以找到一个示例服务器端验证代码,它实现了这个工作流吗?我知道这有点遥不可及,但我不想再浪费一周时间在苹果的评论上。我已经能够实现答案中描述的工作流程,但我有一个问题。使用此配置,我是否可以通过在生产应用程序中使用测试帐户来破解应用程序?谢谢谢谢你。。。it save my day:-)@JulianOsorio一旦应用程序上线,苹果将不再允许sandox帐户购买应用程序内购买,因此不会生成收据以确保安全。除使用(震惊、恐怖)外,我们如何知道应用程序何时在审查中计时器还是ping到服务器?@DrMickeyLauer实现这一点的唯一方法是重写逻辑,让它先尝试生产,然后再尝试沙箱。荒谬但真实。更多细节在这里:好的。这将不适用于本地收据验证,但这是我仍然喜欢的,特别是对于离线功能的应用程序。