ios - 尝试在服务器端验证配方时出错:iOS 收据验证错误 21002
问题描述
我使用SwiftyStoreKit在我的应用程序中设置了 InAppPurchase,我正在尝试验证我的收据。为此,我将其取出并将其发送给 Apple。
我知道那不是正确的方法,但我只是在测试。如果我让它工作不好在服务器端做。无论如何,问题是响应总是21002,根据 Apple 的说法,女巫的意思是:receipt-data 属性中的数据格式错误或丢失。 但是当我使用 SwiftStore 方法验证我的收据时,它可以工作。
这是我用来获取收据并将其发送到苹果的代码(注意:CarregaDados.callMethodJson 它只是一个内部带有 Alamofire 调用的函数)
SwiftyStoreKit.fetchReceipt(forceRefresh: true) { result in
switch result {
case .success(let receiptData):
let encryptedReceipt = receiptData.base64EncodedString(options: [])
let parametros = ["receipt-data" : encryptedReceipt,
"password" : "XXXXXX",
"exclude-old-transactions" : true] as [String : Any]
CarregaDados.callMethodJson(.post, parametros: parametros,
url: "https://sandbox.itunes.apple.com/verifyReceipt",
nomeCache: "", onCompletion: { (response) in
print(response)
})
case .error(let error):
print("IAP: ERROR: \(error)")
}
}
那总是返回21002。但是当我使用 SwiftyStoreKit 检查它时,它可以工作并返回我需要的所有信息:
let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: "XXXXXX")
SwiftyStoreKit.verifyReceipt(using: appleValidator, forceRefresh: false) { result in
switch result {
case .success(let receipt):
print("Verify receipt success: \(receipt)")
case .error(let error):
print("Verify receipt failed: \(error)")
}
}
所以我不知道是什么问题。
解决方案
推荐阅读
- php - 通过 file_get_contents 从 2 个 url 获取内容
- python - 从命令行脚本强制 -i
- python - Tensorflow 和 Numpy 产生不同的结果
- python - How do i check for two connections to a sockets at once in python
- python - How to connect two list together in python
- ios - 在 SwiftUI 中请求用户位置权限
- php - Laravel Morph 许多来自两列
- assembly - 将寄存器的所有位设置为1,ORI可以这样做吗?
- powerbi - 在 Table.ReplaceErrorValues Power BI 中找不到列
- css - 如何创建带有弯曲边框的三角形?