我正在 Mac 和 iOS 应用中进行应用内购买。
当根据https://buy.itunes.apple.com/verifyReceipt验证沙盒环境收据时,我们了解到我们得到的状态代码为 21007: CargoBayStatusSandboxReceiptSentToProduction
。
这在 iOS 中完美运行,但对于 Mac 应用程序,结果是不同的。
我的 Mac 应用程序中有一个有效的沙盒环境收据,我使用https://sandbox.itunes.apple.com/verifyReceipt进行了验证。
当我使用https://buy.itunes.apple.com/verifyReceipt验证同一张收据时, 我需要将状态码取回为 21007,但这并没有发生。相反,我得到以下响应:
<html><head><title>Error</title></head><body>Your request produced an error. <BR>[newNullResponse]</body></html>
基本上,如果我在 Mac 应用商店中提交此应用程序进行验证并且 Apple 人员使用测试 ID,我将获得一个沙盒收据,该收据将失败并显示生产 URL 收据验证的状态代码,然后我可以回退到沙盒 URL 以进行收据验证. 但如前所述,响应不包含有效的状态代码。
我在终端中执行了以下命令:
使用 base 64 编码对收据进行编码,其中
receipt
是收据文件的路径:base64 -i receipt
发布数据以验证收据:
curl -d '{ "receipt-data": "<your b64 string here>" }' https://sandbox.itunes.apple.com/verifyReceipt
或者
curl -d '{ "receipt-data": "<your b64 string here>" }' https://buy.itunes.apple.com/verifyReceipt
生产 URL 的响应是:
<html><head><title>Error</title></head><body>Your request produced an error. <BR>[newNullResponse]</body></html>
理想情况下应该是{status code = 210007}
。以前有人遇到过这个问题吗?还是我错过了什么?