【问题标题】:Expiration date of the auto renewing subscription自动续订订阅的到期日期
【发布时间】:2017-11-01 10:46:37
【问题描述】:

对订阅的到期日期有疑问。我有以下代码,在我验证收据和遇到小问题的地方没有错误。我的到期日期没有改变。因此,如果我一次又一次地购买订阅,我的到期日期保持不变,我总是落入 else 条款,因为到期日期“旧”比“新”一个。

我做错了什么?

private func complete(transaction: SKPaymentTransaction) {

        let receiptValidator = ReceiptValidator()
        let result = receiptValidator.validateReceipt()

        switch result {
        case let .success(receipt):
            guard let purchase =  receipt.inAppPurchaseReceipts?.filter({ $0.productIdentifier == IAPProducts.autoRenewable.rawValue }).first else {
                NotificationCenter.default.post(name: Notification.Name(transaction.payment.productIdentifier), object: nil)
                return
            }

            if purchase.subscriptionExpirationDate?.compare(Date()) == .orderedDescending {
                print("expirationDate: \(purchase.subscriptionExpirationDate!)")
                print(" now's date: \(Date())")
            // true clause stuff
            } else {

                // false clause stuff
                print("Subscription has ended")
            }

            // other stuff

        case let .error(error):
            print("receipt is invalid")
            print(error.localizedDescription)
        }

        paymentQueue.finishTransaction(transaction)
    }

所以控制台输出是这样的:

有效期:2017-11-01 09:08:11 +0000
现在的日期:2017-11-01 10:35:11 +0000

我错过了什么?

谢谢!

【问题讨论】:

    标签: swift in-app-purchase


    【解决方案1】:

    哦,我发现我的沙盒用户进行了太多交易。所以我创建了另一个,现在代码按预期工作。

    【讨论】:

    • 我遇到了同样的问题,我只是在我的 IAPManager 中复制了你的函数,它给了我错误 ReceiptValidator() -> 使用未解析的标识符 ReceiptValidator 还有 paymentQueue.finishTransaction(transaction) -> 类型的值(SKPaymentQueue [SKPaymentTransaction])->()没有成员finishTransaction,你能分享如何摆脱这些错误,非常感谢你的帮助,不用说我只是一个初学者,你的帮助会有很长的路要走
    猜你喜欢
    • 2013-10-27
    • 2021-10-06
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多