|
|
@@ -30,14 +30,14 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
|
|
|
void pay() async {
|
|
|
sendPayBefore();
|
|
|
try {
|
|
|
- final bool isAvailable = await _iap.isAvailable().timeout(timeout);
|
|
|
- if (!isAvailable) {
|
|
|
+ final bool isAe = await isAvailable();
|
|
|
+ if (!isAe) {
|
|
|
sendError(AgilePayCode.payCodeNotConnectStore,
|
|
|
AgilePayCode.getMessageByCode(AgilePayCode.payCodeNotConnectStore));
|
|
|
return;
|
|
|
}
|
|
|
- final ProductDetailsResponse response = await InAppPurchase.instance
|
|
|
- .queryProductDetails({_payInfo.productId});
|
|
|
+ final ProductDetailsResponse response =
|
|
|
+ await queryProductDetails({_payInfo.productId});
|
|
|
if (response.notFoundIDs.isNotEmpty || response.productDetails.isEmpty) {
|
|
|
sendError(
|
|
|
AgilePayCode.payCodeProductNotFindStore,
|
|
|
@@ -49,12 +49,12 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
|
|
|
for (var element in products) {
|
|
|
bool isSend;
|
|
|
if (_payInfo.type == ProductType.consumable) {
|
|
|
- isSend = await _iap.buyConsumable(
|
|
|
+ isSend = await buyConsumable(
|
|
|
purchaseParam: PurchaseParam(
|
|
|
productDetails: element,
|
|
|
applicationUserName: _payInfo.accountToken));
|
|
|
} else {
|
|
|
- isSend = await _iap.buyNonConsumable(
|
|
|
+ isSend = await buyNonConsumable(
|
|
|
purchaseParam: PurchaseParam(
|
|
|
productDetails: element,
|
|
|
applicationUserName: _payInfo.accountToken));
|
|
|
@@ -80,6 +80,22 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ Future<bool> isAvailable() {
|
|
|
+ return _iap.isAvailable().timeout(timeout);
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<ProductDetailsResponse> queryProductDetails(Set<String> identifiers) {
|
|
|
+ return InAppPurchase.instance.queryProductDetails(identifiers);
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<bool> buyConsumable({required PurchaseParam purchaseParam}) {
|
|
|
+ return _iap.buyConsumable(purchaseParam: purchaseParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<bool> buyNonConsumable({required PurchaseParam purchaseParam}) {
|
|
|
+ return _iap.buyNonConsumable(purchaseParam: purchaseParam);
|
|
|
+ }
|
|
|
+
|
|
|
void dispose() {
|
|
|
_purchaseUpdatedSubscription.cancel();
|
|
|
}
|
|
|
@@ -87,30 +103,32 @@ abstract class AppleOrGooglePay extends AgilePayStateInfo {
|
|
|
void listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) {
|
|
|
for (var purchaseDetails in purchaseDetailsList) {
|
|
|
debugPrint(
|
|
|
- 'agilePay-applePay--PurchaseUpdated-> ${purchaseDetails.toString()}');
|
|
|
+ 'agilePay-purchasePay--PurchaseUpdated-> ${purchaseDetails.toString()}');
|
|
|
if (purchaseDetails.status == PurchaseStatus.pending) {
|
|
|
+ verifyPendingPurchase(purchaseDetails);
|
|
|
} else if (purchaseDetails.status == PurchaseStatus.error) {
|
|
|
- _verifyErrorPurchase(purchaseDetails);
|
|
|
+ verifyErrorPurchase(purchaseDetails);
|
|
|
} else if (purchaseDetails.status == PurchaseStatus.purchased) {
|
|
|
- _verifySuccessPurchase(purchaseDetails);
|
|
|
+ verifySuccessPurchase(purchaseDetails);
|
|
|
} else if (purchaseDetails.status == PurchaseStatus.canceled) {
|
|
|
- sendError(AgilePayCode.payCodeCancelError,
|
|
|
- AgilePayCode.getMessageByCode(AgilePayCode.payCodeCancelError));
|
|
|
+ verifyCancelPurchase(purchaseDetails);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- void _verifyErrorPurchase(PurchaseDetails purchaseDetails) {
|
|
|
- if (purchaseDetails.error?.code == 'store_kit_network_error') {
|
|
|
- sendError(AgilePayCode.payCodeNetError,
|
|
|
- AgilePayCode.getMessageByCode(AgilePayCode.payCodeNetError));
|
|
|
- } else {
|
|
|
- sendError(AgilePayCode.payCodeOtherError,
|
|
|
- AgilePayCode.getMessageByCode(AgilePayCode.payCodeOtherError));
|
|
|
- }
|
|
|
+ void verifyPendingPurchase(PurchaseDetails purchaseDetails) {}
|
|
|
+
|
|
|
+ void verifyCancelPurchase(PurchaseDetails purchaseDetails) {
|
|
|
+ sendError(AgilePayCode.payCodeCancelError,
|
|
|
+ AgilePayCode.getMessageByCode(AgilePayCode.payCodeCancelError));
|
|
|
+ }
|
|
|
+
|
|
|
+ void verifyErrorPurchase(PurchaseDetails purchaseDetails) {
|
|
|
+ sendError(AgilePayCode.payCodePayError,
|
|
|
+ AgilePayCode.getMessageByCode(AgilePayCode.payCodePayError));
|
|
|
}
|
|
|
|
|
|
- void _verifySuccessPurchase(PurchaseDetails purchaseDetails) {
|
|
|
+ void verifySuccessPurchase(PurchaseDetails purchaseDetails) {
|
|
|
sendPaySuccess(purchaseDetails.purchaseID);
|
|
|
}
|
|
|
}
|