沙盒环境中的 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 时他们的后端出现问题(我经历过这两种行为。
我正在尝试使用与 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 时他们的后端出现问题(我经历过这两种行为。