Browse Source

【订阅】订单筛选逻辑完善

lizhe 1 year ago
parent
commit
6c05b41a9a

+ 18 - 6
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift

@@ -213,9 +213,13 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
         KMPrint("服务器返回数据")
         if transactions.count > 0 {
-            let transaction = transactions.first!
+            var resultTransaction = transactions.first!
+            var isExist = false
             for transaction in transactions {
                 if kPRODUCTS.contains(transaction.original?.payment.productIdentifier ?? PRODUCT_1) {
+                    isExist = true
+                    resultTransaction = transaction
+                    
                     // 检查购买的产品是否是订阅产品
                     switch transaction.transactionState {
                         case .purchased:
@@ -237,6 +241,11 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
                     break
                 }
             }
+            if !isExist {
+                handleError(transaction: resultTransaction)
+            }
+        } else {
+            handleError(transaction: nil)
         }
     }
     
@@ -409,15 +418,18 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
         return true
     }
     
-    func handleError(transaction: SKPaymentTransaction) {
+    func handleError(transaction: SKPaymentTransaction?) {
         // 处理购买失败的逻辑
-        SKPaymentQueue.default().finishTransaction(transaction)
-        if transaction.transactionState == .restored {
-            self.handleAction(state: .restoreFailed)
+        if let t = transaction {
+            SKPaymentQueue.default().finishTransaction(t)
+            if t.transactionState == .restored {
+                self.handleAction(state: .restoreFailed)
+            } else {
+                self.handleAction(state: .failed)
+            }
         } else {
             self.handleAction(state: .failed)
         }
-        // ...
     }
     
     func verifyPurchase(purchase: [String: Any]) -> KMPurchaseManagerState {