沙盒环境中的 macOS 应用内购买未经授权

macOS In-App Purchase in sandbox environment not authorised

我正在尝试使用与 iOS 相同的 Swift 代码、沙盒测试器和 iTunes Connect 帐户,让应用内购买 (IAP) 在 macOS 应用程序中运行应用程序。但是,我无法让它工作。我正在使用 macOS High Sierra 10.13.6。

打开应用

找到 Apple 的 IAP 测试建议 here:

On a development macOS device, sign out of the Mac App Store. Then build your app in Xcode and launch it from the Finder.

If the text “[Environment: Sandbox]” doesn’t appear, you’re using the production environment. Make sure you’re running a development-signed build of your app. Production-signed builds use the production environment.

我已按照这些步骤退出 Mac App Store,并构建我的应用程序 - 签署开发 - 然后从 Finder 启动它。不幸的是,这意味着我没有得到调试日志。

导航至 table 的应用内产品

这是我的 table 产品:

我可以按 "Free" 按钮或“£4.99”按钮购买产品。

尝试按 "Free"

购买产品

稍等片刻后,弹出 'Sign-in required'。我使用我的一个沙盒测试人员登录(注意:我现在已经尝试了五个不同的测试帐户,所有这些都在同一 iTunes Connect 帐户下的 iOS 应用程序上运行),注册的电子邮件地址 不是 Apple ID:

选择 'Buy' 后,稍等片刻,将出现下一个弹出窗口:

选择'Cancel'后(推荐here),稍等片刻后,出现下一个弹窗:

You are not authorized to make purchases of this InApp in Sandbox at this time.
[Environment: Sandbox]

所以我不确定它是否让我登录,我假设我的购买失败了(我的 table UI 没有更新说 'purchased' ).请注意,我也尝试过在此处按'Change Store',但最终还是失败了。

再次按 "Free" 尝试购买产品

这一次,我没有提示登录;相反,我会立即被问到是否愿意购买该产品。我点击 'Confirm'。

但是,现在购买交易从未完成:

我可能做错了什么?我是否也需要在 Settings > Internet Accounts 中注销任何内容(例如 iCloud)?

看起来很蹩脚,但我最终通过创建新的 Sandbox 测试帐户解决了这个问题(提示:这次,我将它们配置为基于美国的,以避免在支付流程中切换商店的复杂性)。

我认为问题在于我没有验证我一直在使用的沙盒测试员帐户。这要么是因为 Apple 要求我 verify/activate 沙盒测试员帐户的电子邮件被分类到我的垃圾邮件中并完全错过了,要么是因为当我单击他们电子邮件中的 link 时他们的后端出现问题(我经历过这两种行为。