沙盒模式下的应用内购买会返回同一产品 ID 上的多个交易。
使用语言:Swift 4.0
func validateAppReceipt(_ receipt: Data) {
let base64encodedReceipt = receipt.base64EncodedString()
print(base64encodedReceipt)
let requestDictionary = ["receipt-data":base64encodedReceipt]
guard JSONSerialization.isValidJSONObject(requestDictionary) else { print("requestDictionary is not valid JSON"); return }
do {
let requestData = try JSONSerialization.data(withJSONObject: requestDictionary)
let validationURLString = "https://sandbox.itunes.apple.com/verifyReceipt" // this works but as noted above it's best to use your own trusted server
guard let validationURL = URL(string: validationURLString) else { print("the validation url could not be created, unlikely error"); return }
let session = URLSession(configuration: URLSessionConfiguration.default)
var request = URLRequest(url: validationURL)
request.httpMethod = "POST"
request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
let task = session.uploadTask(with: request, from: requestData) { (data, response, error) in
if let data = data , error == nil {
do {
print(data)
let appReceiptJSON = try JSONSerialization.jsonObject(with: data)
print("success. here is the json representation of the app receipt: \(appReceiptJSON)")
self.getAppReceipt()
} catch let error as NSError {
print("json serialization failed with error: \(error)")
}
} else {
print("the upload task returned an error: \(error)")
}
}
task.resume()
} catch let error as NSError {
print("json serialization failed with error: \(error)")
}
}
回复:
问题:
为什么我会在同一个 ID 上收到多笔交易
这个回应是否正确
如果正确,验证哪个ID
我尝试了来自苹果和堆栈溢出的一些链接,但仍然对理解这一点存有疑问。有人可以向我描述一下所有这些吗?
我认为您已经在应用程序购买中实现了自动更新。
你的回应是正确的。
为什么我会在同一个 ID 上收到多笔交易
正如您每 5 分钟执行一次自动续订产品的响应交易(沙盒环境在 5 分钟内续订产品,而不是 App Store 中的 1 个月)。
这个回应是否正确
Yes
如果正确,验证哪个ID
您必须获取您的产品 ID 的所有交易tfc.premium.subscription
然后获取最后一个对象并将其用作您的最新/最后一笔交易。
读这个苹果文档 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html#//apple_ref/doc/uid/TP40008267-CH7-SW8以便正确理解。
自动续订订阅的行为在不同版本之间有所不同
测试环境和生产环境。
在测试环境中,订阅续订发生在
加速速率,自动续订订阅最多续订
每天六次。这使您能够测试您的应用程序如何处理
订阅续订、订阅失效和订阅历史记录
其中包括差距。请参阅测试自动续订订阅
iTunes Connect 的应用内购买配置指南,供您了解
用于测试的订阅持续时间。
由于过期和续订率加快,
订阅可能会在系统尝试续订之前过期
认购,在认购期间留下一个小间隔。这样的
由于多种原因,生产中也可能出现失误——
确保您的应用程序正确处理它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)