收据日期与沙盒持续时间不匹配
The receipt date does not match to the sandbox duration
我的应用有自动更新订阅。我试图测试订阅的正确工作流程。根据 WWDC 2018:
我创建了为期一周的新订阅。我创建了一个新的沙盒用户,并尝试激活我的新订阅。这是代码:
guard let httpResponce = responce as? HTTPURLResponse,
let contentType = httpResponce.allHeaderFields["Date"] as? String,
let expirationDate = self.parcedReceipt?.inAppPurchaseReceipt?.subscriptionExpirationDate,
let serverDate = self.parseDateAndTime(getResDate: contentType) else {
result(false, ReceiptError.unexpectedError.localizedDescription)
return
}
self.saveDateAndTime(dateForSave: serverDate)
self.ls.pmsg("serverTime:\(serverDate), receiptDate:\(expirationDate)")
我与服务器验证日期和时间。结果是一样的——我总是得到这样的 receiptDate:当前时间 + 一小时:
XXX.swift validateTimeWithServer(result:) serverTime:2018-07-11 13:18:16 +0000, receiptDate:2018-07-11 14:18:16 +0000
但是我的订阅只有一周。
为什么会这样?有没有可能收据日期是一小时,但实际上 AppStore 在 3 分钟后更新?
这是因为促销价。如果订阅有介绍价,则订阅期将是错误的。在我的例子中,我删除了介绍性价格,沙盒用户的持续时间开始为 3 分钟。
我的应用有自动更新订阅。我试图测试订阅的正确工作流程。根据 WWDC 2018:
我创建了为期一周的新订阅。我创建了一个新的沙盒用户,并尝试激活我的新订阅。这是代码:
guard let httpResponce = responce as? HTTPURLResponse,
let contentType = httpResponce.allHeaderFields["Date"] as? String,
let expirationDate = self.parcedReceipt?.inAppPurchaseReceipt?.subscriptionExpirationDate,
let serverDate = self.parseDateAndTime(getResDate: contentType) else {
result(false, ReceiptError.unexpectedError.localizedDescription)
return
}
self.saveDateAndTime(dateForSave: serverDate)
self.ls.pmsg("serverTime:\(serverDate), receiptDate:\(expirationDate)")
我与服务器验证日期和时间。结果是一样的——我总是得到这样的 receiptDate:当前时间 + 一小时:
XXX.swift validateTimeWithServer(result:) serverTime:2018-07-11 13:18:16 +0000, receiptDate:2018-07-11 14:18:16 +0000
但是我的订阅只有一周。
为什么会这样?有没有可能收据日期是一小时,但实际上 AppStore 在 3 分钟后更新?
这是因为促销价。如果订阅有介绍价,则订阅期将是错误的。在我的例子中,我删除了介绍性价格,沙盒用户的持续时间开始为 3 分钟。