iOS 应用内购买:Apple 评论者会测试实时环境还是沙盒环境?
Posted
技术标签:
【中文标题】iOS 应用内购买:Apple 评论者会测试实时环境还是沙盒环境?【英文标题】:iOS In App Purchase: Will Apple reviewers test live or sandbox environment? 【发布时间】:2012-07-29 04:30:45 【问题描述】:我使用应用内付款来销售游戏内消耗品。 付款成功后,我将付款收据转发到我的后端,该后端会通过 iTunes 付款后端验证收据。 这在沙盒环境中完美运行。
现在我提交了我的应用程序,以便它可以得到 Apple 人员的批准并在 App Store 中发布。当然,我确保我的后端将使用 iTunes 后端的生产环境验证付款收据,因为我希望 Apple 人员在生产模式下测试该应用程序。 但是,该应用程序被拒绝了。作为一个原因,我被告知购买我的消耗品不起作用(由于收据无效而被我的后端拒绝)。 检查我的日志后,我看到 3 次尝试购买。我解码了使用的收据,发现所有这些都是“环境”=“沙盒”。
这是否意味着 Apple 在沙盒模式下测试提交的应用程序?那会很疯狂!我应该在我的生产环境中允许沙盒支付还是什么? 有任何关于此的事实吗?
【问题讨论】:
【参考方案1】:Thomas,您绝对应该阅读 Apple 关于应用内购买的常见问题解答: https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL
始终首先使用生产 URL 验证您的收据;如果您收到 21007 状态代码,请继续使用沙盒 URL 进行验证。遵循这种方法可确保您在沙盒中测试或审查您的应用程序或在 App Store 中运行时不必在 URL 之间切换。
所以是的,他们有点疯狂。但我们知道,不是吗?
【讨论】:
哇,谢谢你...我不敢相信我花了多少时间尝试调试代码 难道你不知道我在哪里可以找到实现了这个工作流的示例服务器端验证代码吗?我知道这有点远,但我不想再浪费一周的时间来审查苹果。 我已经能够实现答案中描述的工作流程,但我有一个问题。使用此配置,我是否可以通过在生产应用程序中使用测试帐户来破解该应用程序?谢谢 谢谢...它拯救了我的一天:-) @JulianOsorio 应用上线后,苹果不再允许 Sandox 帐户购买应用内购买,因此收据本身不会生成,因此很安全。【参考方案2】:@Jan P 的回答是正确的。如果您正在寻找一个快速的“是/否”答案,FAQ 中的具体答案是:
您应该在审核您的应用程序时使用沙盒。
(15) 我应该使用什么网址来验证我的收据? 在沙盒中测试您的应用程序时使用沙盒 URL https://sandbox.itunes.apple.com/verifyReceipt以及当您的应用程序处于审查阶段时。
【讨论】:
除了使用(震惊、恐怖)计时器或 ping 服务器之外,我们如何知道应用程序何时处于审核状态? @DrMickeyLauer 实现此目的的唯一方法是重写您的逻辑,使其先尝试生产,然后再尝试沙盒。荒谬但真实。更多详情在这里:developer.apple.com/library/archive/technotes/tn2413/… 好的。但是,这不适用于本地收据验证,这仍然是我更喜欢的,尤其是对于支持离线的应用程序。【参考方案3】:快速回答:如果您的应用正在审核中,请使用沙盒。
我应该使用什么网址来验证我的收据?使用沙盒 URL https://sandbox.itunes.apple.com/verifyReceipt 在测试你的 应用程序在沙盒中,并且您的应用程序正在审核中。
使用一次生产 URL https://buy.itunes.apple.com/verifyReceipt 您的应用已在 App Store 中上线。
【讨论】:
以上是关于iOS 应用内购买:Apple 评论者会测试实时环境还是沙盒环境?的主要内容,如果未能解决你的问题,请参考以下文章
Apple iOS 应用内购买服务器到服务器通知的“取消”通知案例?