|
|
@@ -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();
|
|
|
}
|
|
|
}
|
|
|
|