我正在尝试首次实现In-AppPurchaceses(自动更新)。
我正在尝试使用itunes.apple.com/verifyReceipt验证收据。 但是在响应中,“ purchase_date_ms”和“ expires_date_ms”相等,
我的意思是'purchase_date_ms'是正确的,但是'expires_date_ms'应该与订阅期限保持一致,不是吗?
但这不是我的,是否会因为我在sandBox环境中而发生?
订阅是一个月的自动续订。
验证配方代码
guard let receiptURL = Bundle.main.appStoreReceiptURL else {return}
guard let receipt = NSData(contentsOf: receiptURL) else {return}
let requestContents: [String: Any] = [
"receipt-data": receipt.base64EncodedString(options: []),
"password": "8ae••••••••••••••••••••"
]
let appleServer = receiptURL.lastPathComponent == "sandboxReceipt" ? "sandbox" : "buy"
let stringURL = "https://\(appleServer).itunes.apple.com/verifyReceipt"
var request = URLRequest(url: URL(string: stringURL)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: requestContents)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if error != nil{
print("====================")
print(error.debugDescription)
return
}
guard let data = data else {return}
guard let response = response else {return}
guard let httpStatus = response as? HTTPURLResponse else {return}
if(httpStatus.statusCode == 200){
do {
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
print(json)
}catch let error{
print(error)
}
}
}
task.resume()
响应的一部分
{
"status": 0,
"environment": "Sandbox",
"receipt": {
"receipt_type": "ProductionSandbox",
"app_item_id": 0,
"receipt_creation_date": "2019-06-03 05:24:56 Etc/GMT",
"bundle_id": "•••••",
"original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
"in_app": [
{
"quantity": "1",
"purchase_date_ms": "1559277785000",
"expires_date": "2019-05-31 04:48:05 Etc/GMT",
"expires_date_pst": "2019-05-30 21:48:05 America/Los_Angeles",
"is_in_intro_offer_period": "false",
"transaction_id": "1000000533091664",
"is_trial_period": "false",
"original_transaction_id": "1000000532336547",
"purchase_date": "2019-05-31 04:43:05 Etc/GMT",
"product_id": "••••••••",
"original_purchase_date_pst": "2019-05-29 01:41:31 America/Los_Angeles",
"original_purchase_date_ms": "1559119291000",
"web_order_line_item_id": "1000000044695000",
"expires_date_ms": "1559278085000",
"purchase_date_pst": "2019-05-30 21:43:05 America/Los_Angeles",
"original_purchase_date": "2019-05-29 08:41:31 Etc/GMT"
}
],
"adam_id": 0,
"receipt_creation_date_pst": "2019-06-02 22:24:56 America/Los_Angeles",
"request_date": "2019-06-03 05:25:10 Etc/GMT",
"request_date_pst": "2019-06-02 22:25:10 America/Los_Angeles",
"version_external_identifier": 0,
"request_date_ms": "1559539510983",
"original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",
"application_version": "88",
"original_purchase_date_ms": "1375340400000",
"receipt_creation_date_ms": "1559539496000",
"original_application_version": "1.0",
"download_id": 0
},
"pending_renewal_info": [
{
"product_id": "Monthly.Global.JGSW.Lawganizer",
"original_transaction_id": "1000000532336547",
"is_in_billing_retry_period": "1",
"auto_renew_product_id": "••••••••",
"auto_renew_status": "1"
},
{
"expiration_intent": "4",
"original_transaction_id": "1000000531941094",
"is_in_billing_retry_period": "1",
"auto_renew_product_id": "••••••",
"product_id": "global.JGSW.Lawganizer.3Months",
"auto_renew_status": "1"
}
],
"latest_receipt_info": [
{
"quantity": "1",
"purchase_date_ms": "1559277785000",
"expires_date": "2019-05-31 04:48:05 Etc/GMT",
"expires_date_pst": "2019-05-30 21:48:05 America/Los_Angeles",
"is_in_intro_offer_period": "false",
"transaction_id": "1000000533091664",
"is_trial_period": "false",
"original_transaction_id": "1000000532336547",
"purchase_date": "2019-05-31 04:43:05 Etc/GMT",
"product_id": "••••••••••",
"original_purchase_date_pst": "2019-05-29 01:41:31 America/Los_Angeles",
"original_purchase_date_ms": "1559119291000",
"web_order_line_item_id": "1000000044695000",
"expires_date_ms": "1559278085000",
"purchase_date_pst": "2019-05-30 21:43:05 America/Los_Angeles",
"original_purchase_date": "2019-05-29 08:41:31 Etc/GMT"
}
],
"latest_receipt": "rtyu...56"
}
答案 0 :(得分:1)
在沙盒模式下,每月自动续订订阅每5分钟更新一次,半小时后自动取消。如果是年度订阅,它将在半小时内自动续订。