您可以在提交应用程序或相关 IAP 之前使用 App Store 沙盒测试(特别是verifyReceipt)吗?
Posted
技术标签:
【中文标题】您可以在提交应用程序或相关 IAP 之前使用 App Store 沙盒测试(特别是verifyReceipt)吗?【英文标题】:Can you use App Store Sandbox testing (verifyReceipt specifically) before submitting the app or the related IAPs? 【发布时间】:2021-03-30 08:17:20 【问题描述】:我一直在尝试使用verifyReceipt
端点来验证应用内购买交易,但没有成功。
这就是我的做法。
1.在ios中读取收据数据(这里是复制粘贴from Apple's documentation):
if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
FileManager.default.fileExists(atPath: appStoreReceiptURL.path)
do
let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
print(receiptData)
let receiptString = receiptData.base64EncodedString(options: [])
// sendReceiptToBackEnd(receiptString)
catch print("Couldn't read receipt data with error: " + error.localizedDescription)
2. 在后台,我关注了来自 Apple 的 this advice:
作为最佳实践,始终首先调用 verifyReceipt 的生产 URL,如果收到 21007 状态代码,则继续使用沙盒 URL 进行验证。
所以首先我试试这个(python 代码):
data =
'receipt-data': receipt_string, # this is what we get from the frontend
'password': settings.APP_STORE_SHARED_SECRET
url = 'https://buy.itunes.apple.com/verifyReceipt'
response = requests.post(url, json=data)
response_data = response.json()
status = response_data['status']
这里的状态是21007
,根据上面的建议,这是预期的。那我试试沙盒:
url = 'https://sandbox.itunes.apple.com/verifyReceipt'
response = requests.post(url, json=data)
response_data = response.json()
status = response_data['status']
我收到了21002
- 这意味着我发送的内容可能有问题。
最初我试图测试这个using Xcode locally,但后来我发现verifyReceipt
不能使用这个功能,因为应用程序没有被App Store 签名。所以我删除了本地配置并将方案中的 StoreKit 配置设置回none
,并验证该应用正在使用 App Store Connect,因为它正在获取我在价格中所做的任何更改。
我不知道如何进一步调试,所以我想知道这可能是因为应用程序和 IAP 尚未提交吗?目前,应用程序处于“准备提交”状态,IAP 处于“准备提交”状态。或者也许我还缺少其他东西?
编辑:我的问题的答案是“是的,你可以”。我复制并粘贴了 json 并使用 Postman 手动发送它,它工作正常,所以后端发生了一些事情。我将问题留作参考,但如果有人建议删除,请告诉我。
【问题讨论】:
【参考方案1】:我看到了您的编辑,但正如后续代码 21002 是“格式错误的正文”响应(或者理论上是 Apple 服务器问题,但我只在修改收据数据时才看到它)。
您可以在此处查看代码和含义的完整列表:
https://developer.apple.com/documentation/appstorereceipts/status
顺便说一句,当您构建我们的服务器来处理 iTunes 响应时,您可能会发现本指南对于处理服务器上的收据很有用:
https://www.namiml.com/blog/app-store-verify-receipt-definitive-guide
【讨论】:
谢谢 - 我的问题是我在工作到很晚时引入的一个愚蠢且难以发现的错误 :)以上是关于您可以在提交应用程序或相关 IAP 之前使用 App Store 沙盒测试(特别是verifyReceipt)吗?的主要内容,如果未能解决你的问题,请参考以下文章