apple_pay.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'dart:async';
  2. import 'package:electronic_assistant/sdk/pay/applepay/apple_pay_info.dart';
  3. import 'package:flutter/widgets.dart';
  4. import 'package:in_app_purchase/in_app_purchase.dart';
  5. import '../assist/apple_or_google_pay.dart';
  6. import '../code/agile_pay_code.dart';
  7. import '../listener/i_agile_pay.dart';
  8. class ApplePay extends AppleOrGooglePay implements IAgilePay {
  9. final ApplePayInfo _payInfo;
  10. ApplePay(this._payInfo) : super(_payInfo);
  11. @override
  12. void listenToPurchaseUpdated(List<PurchaseDetails> purchaseDetailsList) {
  13. for (var purchaseDetails in purchaseDetailsList) {
  14. debugPrint(
  15. 'agilePay-applePay--PurchaseUpdated-> ${purchaseDetails.toString()}');
  16. if (purchaseDetails.status == PurchaseStatus.pending) {
  17. } else if (purchaseDetails.status == PurchaseStatus.error) {
  18. _verifyErrorPurchase(purchaseDetails);
  19. } else if (purchaseDetails.status == PurchaseStatus.purchased) {
  20. _verifySuccessPurchase(purchaseDetails);
  21. } else if (purchaseDetails.status == PurchaseStatus.canceled) {
  22. sendError(AgilePayCode.payCodeCancelError,
  23. AgilePayCode.getMessageByCode(AgilePayCode.payCodeCancelError));
  24. }
  25. }
  26. }
  27. void _verifyErrorPurchase(PurchaseDetails purchaseDetails) {
  28. if (purchaseDetails.error?.code == 'store_kit_network_error') {
  29. sendError(AgilePayCode.payCodeNetError,
  30. AgilePayCode.getMessageByCode(AgilePayCode.payCodeNetError));
  31. } else {
  32. sendError(AgilePayCode.payCodeOtherError,
  33. AgilePayCode.getMessageByCode(AgilePayCode.payCodeOtherError));
  34. }
  35. }
  36. void _verifySuccessPurchase(PurchaseDetails purchaseDetails) {
  37. sendPaySuccess(purchaseDetails.purchaseID);
  38. }
  39. }