Explorar o código

[fix]修复苹果支付toast问题

zk hai 1 ano
pai
achega
23dcf15740
Modificáronse 1 ficheiros con 28 adicións e 18 borrados
  1. 28 18
      lib/sdk/pay/assist/apple_or_google_pay.dart

+ 28 - 18
lib/sdk/pay/assist/apple_or_google_pay.dart

@@ -23,8 +23,7 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
         _iap.purchaseStream.listen((purchaseDetailsList) {
       listenToPurchaseUpdated(purchaseDetailsList);
     }, onDone: () {
-      debugPrint('agilePay-appleOrGooglePay---> onDone');
-      _purchaseUpdatedSubscription.cancel();
+      dispose();
     }, onError: (error) {});
   }
 
@@ -97,26 +96,37 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
     return _iap.buyNonConsumable(purchaseParam: purchaseParam);
   }
 
+  void dispose() {
+    _purchaseUpdatedSubscription.cancel();
+  }
+
   void listenToPurchaseUpdated(
       List<PurchaseDetails> purchaseDetailsList) async {
-    for (var purchaseDetails in purchaseDetailsList) {
-      debugPrint(
-          'agilePay-purchasePay--PurchaseUpdated-> ${purchaseDetails.toString()}');
-      if (purchaseDetails.status == PurchaseStatus.pending) {
-        verifyPendingPurchase(purchaseDetails);
-      } else {
-        if (purchaseDetails.status == PurchaseStatus.error) {
-          verifyErrorPurchase(purchaseDetails);
-        } else if (purchaseDetails.status == PurchaseStatus.purchased) {
-          verifySuccessPurchase(purchaseDetails);
-        } else if (purchaseDetails.status == PurchaseStatus.canceled) {
-          verifyCancelPurchase(purchaseDetails);
-        }
-
-        if (purchaseDetails.pendingCompletePurchase) {
-          await InAppPurchase.instance.completePurchase(purchaseDetails);
+    try {
+      for (var purchaseDetails in purchaseDetailsList) {
+        debugPrint(
+            'agilePay-purchasePay--PurchaseUpdated-> ${purchaseDetails.toString()}');
+        if (purchaseDetails.status == PurchaseStatus.pending) {
+          verifyPendingPurchase(purchaseDetails);
+        } else {
+          if (purchaseDetails.status == PurchaseStatus.error) {
+            verifyErrorPurchase(purchaseDetails);
+          } else if (purchaseDetails.status == PurchaseStatus.purchased) {
+            verifySuccessPurchase(purchaseDetails);
+          } else if (purchaseDetails.status == PurchaseStatus.canceled) {
+            verifyCancelPurchase(purchaseDetails);
+          }
+
+          if (purchaseDetails.pendingCompletePurchase) {
+            await InAppPurchase.instance.completePurchase(purchaseDetails);
+          }
         }
       }
+    } catch (e) {
+      sendError(AgilePayCode.payCodeOtherError,
+          AgilePayCode.getMessageByCode(AgilePayCode.payCodeOtherError));
+    } finally {
+      dispose();
     }
   }