有没有办法快速区分自动续订订阅中的新购买和旧购买?

问题描述 投票:0回答:1

有什么方法可以快速识别下面委托中的新购买。

 func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    
    for transaction in transactions {
        switch transaction.transactionState {
        case .purchased:
            hideLoader()
            if let transactionID = transaction.transactionIdentifier {
                print("Transaction ID: \(transactionID)")
                SubscriptionViewController.store.complete(transaction: transaction)
                // updateUserStatus(subscriptionType: currentSubscription)
                validateReceipt(transId: transaction.transactionIdentifier ?? "") // after verify also update on backend
            }
            break
        case .failed:
            self.currentSubscription = nil
            hideLoader()
            SubscriptionViewController.store.fail(transaction: transaction)
            break
        case .restored:
            hideLoader()
            break
        case .deferred:
            hideLoader()
            break
        case .purchasing:
            break
        @unknown default:
            hideLoader()
            print("Unknown case happens")
            break
        }
    }
    }

当我已经拥有活跃会员资格时,我遇到问题,当我再次点击“购买”时,它显示您已经有活跃订阅,这是正确的,并且它提示两个选项,即“管理”或“确定”,当我点击“确定”时,我的上面的代表调用并再次进入已购买状态,上面的代表在我购买新产品时也调用,我只想对新购买的产品进行 destinguish ,因为我需要更新到服务器,任何人都可以告诉我如何仅在 UpdatedTransactions 中检查新购买方法。

ios swift iphone in-app-purchase auto-renewable
1个回答
0
投票

您使用的 transactionId 会改变每个购买流程。因此,您无法将以前的订阅与新购买的订阅进行比较。您应该使用originalTransactionId。对于订阅产品和购买,originalTransactionId 是唯一的。您应该将其保存在服务器上,并在第二次订阅购买时,可以使用服务器上的originalTransactionId进行检查。

参考自; https://developer.apple.com/documentation/appstoreserverapi/originaltransactionid

© www.soinside.com 2019 - 2024. All rights reserved.