@stripe/stripe-react-native 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -1
- package/android/build.gradle +1 -0
- package/android/gradle.properties +1 -1
- package/android/proguard-rules.txt +7 -0
- package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +4 -0
- package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherFragment.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetFragment.kt +4 -1
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +5 -0
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +46 -8
- package/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +132 -0
- package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +144 -0
- package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherFragment.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +10 -9
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +8 -3
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +142 -21
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +3 -1
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherFragment.kt +111 -0
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetEvent.kt +28 -0
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +178 -0
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +67 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +5 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +1 -1
- package/android/src/main/res/drawable/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable/googlepay_button_background_shape.xml +11 -0
- package/android/src/main/res/drawable/googlepay_mark_background.xml +12 -0
- package/android/src/main/res/drawable/googlepay_mark_content.xml +27 -0
- package/android/src/main/res/drawable/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-ar/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-bg/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-ca/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-cs/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-da/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-de/book_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-de/buy_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-de/checkout_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-de/donate_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-de/order_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-de/subscribe_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-el/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-el/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-el/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-el/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-el/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-el/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-et/book_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-et/buy_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-et/checkout_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-et/donate_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-et/order_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml +8 -8
- package/android/src/main/res/drawable-et/subscribe_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/book_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/buy_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/checkout_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/donate_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/order_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml +8 -8
- package/android/src/main/res/drawable-fi/subscribe_with_googlepay_button_content.xml +15 -0
- package/android/src/main/res/drawable-fr/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-fr/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-fr/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-fr/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-fr/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml +5 -5
- package/android/src/main/res/drawable-fr/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-hr/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-id/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-it/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml +5 -5
- package/android/src/main/res/drawable-ja/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-ko/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-ms/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-nl/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-no/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-pl/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-ru/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-sk/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-sl/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-sr/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml +4 -4
- package/android/src/main/res/drawable-sv/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml +6 -6
- package/android/src/main/res/drawable-th/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml +7 -7
- package/android/src/main/res/drawable-tr/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/book_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/buy_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/checkout_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/donate_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/order_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml +5 -5
- package/android/src/main/res/drawable-uk/subscribe_with_googlepay_button_content.xml +14 -0
- package/android/src/main/res/layout/book_with_googlepay_button.xml +20 -0
- package/android/src/main/res/layout/buy_with_googlepay_button.xml +20 -0
- package/android/src/main/res/layout/checkout_with_googlepay_button.xml +20 -0
- package/android/src/main/res/layout/donate_with_googlepay_button.xml +20 -0
- package/android/src/main/res/layout/googlepay_mark_button.xml +18 -0
- package/android/src/main/res/layout/order_with_googlepay_button.xml +20 -0
- package/android/src/main/res/layout/pay_with_googlepay_button.xml +10 -24
- package/android/src/main/res/layout/plain_googlepay_button.xml +17 -0
- package/android/src/main/res/layout/subscribe_with_googlepay_button.xml +20 -0
- package/android/src/main/res/values/googlepay_strings.xml +3 -2
- package/ios/AddressSheet/AddressSheetUtils.swift +98 -0
- package/ios/AddressSheet/AddressSheetView.swift +131 -0
- package/ios/AddressSheet/AddressSheetViewManager.m +25 -0
- package/ios/AddressSheet/AddressSheetViewManager.swift +19 -0
- package/ios/ApplePayButtonManager.m +5 -0
- package/ios/ApplePayButtonManager.swift +3 -1
- package/ios/ApplePayButtonView.swift +21 -0
- package/ios/ApplePayUtils.swift +187 -0
- package/ios/ApplePayViewController.swift +279 -0
- package/ios/PaymentPassFinder.swift +61 -0
- package/ios/PaymentSheetAppearance.swift +24 -23
- package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonManager.m +0 -0
- package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonManager.swift +0 -0
- package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonView.swift +10 -10
- package/ios/PushProvisioning/PushProvisioningUtils.swift +87 -0
- package/ios/StripeSdk.m +29 -0
- package/ios/StripeSdk.swift +200 -130
- package/ios/Tests/AddressSheetUtilsTests.swift +273 -0
- package/ios/Tests/PushProvisioningTests.swift +14 -11
- package/jest/mock.js +44 -0
- package/lib/commonjs/NativeStripeSdk.js.map +1 -1
- package/lib/commonjs/components/AddressSheet.js +2 -0
- package/lib/commonjs/components/AddressSheet.js.map +1 -0
- package/lib/commonjs/components/PlatformPayButton.js +2 -0
- package/lib/commonjs/components/PlatformPayButton.js.map +1 -0
- package/lib/commonjs/functions.js +1 -1
- package/lib/commonjs/functions.js.map +1 -1
- package/lib/commonjs/hooks/usePlatformPay.js +2 -0
- package/lib/commonjs/hooks/usePlatformPay.js.map +1 -0
- package/lib/commonjs/hooks/useStripe.js +1 -1
- package/lib/commonjs/hooks/useStripe.js.map +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/Errors.js +1 -1
- package/lib/commonjs/types/Errors.js.map +1 -1
- package/lib/commonjs/types/PlatformPay.js +2 -0
- package/lib/commonjs/types/PlatformPay.js.map +1 -0
- package/lib/commonjs/types/PushProvisioning.js +2 -0
- package/lib/commonjs/types/PushProvisioning.js.map +1 -0
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/module/NativeStripeSdk.js.map +1 -1
- package/lib/module/components/AddressSheet.js +2 -0
- package/lib/module/components/AddressSheet.js.map +1 -0
- package/lib/module/components/PlatformPayButton.js +2 -0
- package/lib/module/components/PlatformPayButton.js.map +1 -0
- package/lib/module/functions.js +1 -1
- package/lib/module/functions.js.map +1 -1
- package/lib/module/hooks/usePlatformPay.js +2 -0
- package/lib/module/hooks/usePlatformPay.js.map +1 -0
- package/lib/module/hooks/useStripe.js +1 -1
- package/lib/module/hooks/useStripe.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/Errors.js +1 -1
- package/lib/module/types/Errors.js.map +1 -1
- package/lib/module/types/PlatformPay.js +2 -0
- package/lib/module/types/PlatformPay.js.map +1 -0
- package/lib/module/types/PushProvisioning.js +2 -0
- package/lib/module/types/PushProvisioning.js.map +1 -0
- package/lib/module/types/index.js +1 -1
- package/lib/module/types/index.js.map +1 -1
- package/lib/typescript/src/NativeStripeSdk.d.ts +8 -1
- package/lib/typescript/src/components/AddressSheet.d.ts +53 -0
- package/lib/typescript/src/components/PlatformPayButton.d.ts +65 -0
- package/lib/typescript/src/functions.d.ts +73 -1
- package/lib/typescript/src/hooks/usePlatformPay.d.ts +70 -0
- package/lib/typescript/src/hooks/useStripe.d.ts +18 -1
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/types/ApplePay.d.ts +9 -0
- package/lib/typescript/src/types/Common.d.ts +12 -0
- package/lib/typescript/src/types/Errors.d.ts +9 -0
- package/lib/typescript/src/types/GooglePay.d.ts +2 -1
- package/lib/typescript/src/types/PaymentSheet.d.ts +7 -1
- package/lib/typescript/src/types/PlatformPay.d.ts +285 -0
- package/lib/typescript/src/types/PushProvisioning.d.ts +66 -0
- package/lib/typescript/src/types/components/ApplePayButtonComponent.d.ts +2 -2
- package/lib/typescript/src/types/index.d.ts +6 -44
- package/package.json +8 -1
- package/src/NativeStripeSdk.tsx +20 -0
- package/src/components/AddressSheet.tsx +82 -0
- package/src/components/PlatformPayButton.tsx +157 -0
- package/src/functions.ts +181 -0
- package/src/hooks/usePlatformPay.tsx +174 -0
- package/src/hooks/useStripe.tsx +77 -0
- package/src/index.tsx +9 -0
- package/src/types/ApplePay.ts +9 -0
- package/src/types/Common.ts +13 -0
- package/src/types/Errors.ts +11 -0
- package/src/types/GooglePay.ts +2 -1
- package/src/types/PaymentSheet.ts +7 -1
- package/src/types/PlatformPay.ts +326 -0
- package/src/types/PushProvisioning.ts +76 -0
- package/src/types/components/ApplePayButtonComponent.ts +3 -2
- package/src/types/index.ts +8 -64
- package/stripe-react-native.podspec +1 -1
- package/android/src/main/res/drawable/googlepay_button_background.xml +0 -6
- package/android/src/main/res/drawable/googlepay_button_content.xml +0 -48
- package/android/src/main/res/drawable/googlepay_button_overlay.xml +0 -12
- package/android/src/main/res/drawable-af/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-am/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-as/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-az/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-be/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-bn/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-bs/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-cy/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-en-rau/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-en-rca/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-en-rgb/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-en-rin/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-es-res/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-eu/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-fa/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-fil/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-fr-rca/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ga/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-gl/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-gu/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png +0 -0
- package/android/src/main/res/drawable-hu/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-hy/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-is/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-iw/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ka/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-kk/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-km/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-kn/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ky/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-lo/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-lt/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-lv/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png +0 -0
- package/android/src/main/res/drawable-mk/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ml/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-mn/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-mr/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ne/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-pt-rbr/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-pt-rpt/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ro/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-sq/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-sw/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ta/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-te/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-ur/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-uz/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-v21/googlepay_button_background.xml +0 -7
- package/android/src/main/res/drawable-vi/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png +0 -0
- package/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png +0 -0
- package/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png +0 -0
- package/android/src/main/res/drawable-zh-rcn/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-zh-rhk/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-zh-rtw/pay_with_googlepay_button_content.xml +0 -15
- package/android/src/main/res/drawable-zu/pay_with_googlepay_button_content.xml +0 -14
- package/android/src/main/res/layout/googlepay_button.xml +0 -39
- package/ios/pushprovisioning/PushProvisioningUtils.swift +0 -64
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ApplePayViewController.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 9/15/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import Stripe
|
|
10
|
+
|
|
11
|
+
extension StripeSdk : PKPaymentAuthorizationViewControllerDelegate, STPApplePayContextDelegate {
|
|
12
|
+
func paymentAuthorizationViewController(
|
|
13
|
+
_ controller: PKPaymentAuthorizationViewController,
|
|
14
|
+
didAuthorizePayment payment: PKPayment,
|
|
15
|
+
handler completion: @escaping (PKPaymentAuthorizationResult) -> Void
|
|
16
|
+
) {
|
|
17
|
+
applePaymentMethodFlowCanBeCanceled = false
|
|
18
|
+
STPAPIClient.shared.createPaymentMethod(with: payment) { paymentMethod, error in
|
|
19
|
+
if let error = error {
|
|
20
|
+
self.createPlatformPayPaymentMethodResolver?(Errors.createError(ErrorType.Failed, error))
|
|
21
|
+
} else {
|
|
22
|
+
STPAPIClient.shared.createToken(with: payment) { token, error in
|
|
23
|
+
if let error = error {
|
|
24
|
+
self.createPlatformPayPaymentMethodResolver?(Errors.createError(ErrorType.Failed, error))
|
|
25
|
+
} else {
|
|
26
|
+
var promiseResult = ["paymentMethod": Mappers.mapFromPaymentMethod(paymentMethod?.splitApplePayAddressByNewline()) ?? [:]]
|
|
27
|
+
if let token = token {
|
|
28
|
+
promiseResult["token"] = Mappers.mapFromToken(token: token.splitApplePayAddressByNewline())
|
|
29
|
+
}
|
|
30
|
+
self.createPlatformPayPaymentMethodResolver?(promiseResult)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
completion(PKPaymentAuthorizationResult.init(status: .success, errors: nil))
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func paymentAuthorizationViewControllerDidFinish(
|
|
39
|
+
_ controller: PKPaymentAuthorizationViewController
|
|
40
|
+
) {
|
|
41
|
+
if (applePaymentMethodFlowCanBeCanceled) {
|
|
42
|
+
self.createPlatformPayPaymentMethodResolver?(Errors.createError(ErrorType.Canceled, "The payment has been canceled"))
|
|
43
|
+
applePaymentMethodFlowCanBeCanceled = false
|
|
44
|
+
}
|
|
45
|
+
_ = maybeDismissApplePay()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func maybeDismissApplePay() -> Bool {
|
|
49
|
+
if let applePaymentAuthorizationController = applePaymentAuthorizationController {
|
|
50
|
+
DispatchQueue.main.async {
|
|
51
|
+
applePaymentAuthorizationController.dismiss(animated: true)
|
|
52
|
+
}
|
|
53
|
+
return true
|
|
54
|
+
}
|
|
55
|
+
return false
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@available(iOS 15.0, *)
|
|
59
|
+
func paymentAuthorizationViewController(
|
|
60
|
+
_ controller: PKPaymentAuthorizationViewController,
|
|
61
|
+
didChangeCouponCode couponCode: String,
|
|
62
|
+
handler completion: @escaping (PKPaymentRequestCouponCodeUpdate) -> Void
|
|
63
|
+
) {
|
|
64
|
+
if let callback = self.couponCodeEnteredJSCallback {
|
|
65
|
+
self.couponCodeUpdateCompletion = completion
|
|
66
|
+
callback(["couponCode": couponCode])
|
|
67
|
+
} else {
|
|
68
|
+
completion(
|
|
69
|
+
PKPaymentRequestCouponCodeUpdate.init(
|
|
70
|
+
errors: self.applePayCouponCodeErrors,
|
|
71
|
+
paymentSummaryItems: self.applePaySummaryItems,
|
|
72
|
+
shippingMethods: self.applePayShippingMethods
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
func paymentAuthorizationViewController(
|
|
79
|
+
_ controller: PKPaymentAuthorizationViewController,
|
|
80
|
+
didSelect shippingMethod: PKShippingMethod,
|
|
81
|
+
handler completion: @escaping (PKPaymentRequestShippingMethodUpdate) -> Void
|
|
82
|
+
) {
|
|
83
|
+
if let callback = self.shippingMethodUpdateJSCallback {
|
|
84
|
+
self.shippingMethodUpdateCompletion = completion
|
|
85
|
+
callback(["shippingMethod": Mappers.mapFromShippingMethod(shippingMethod: shippingMethod)])
|
|
86
|
+
} else {
|
|
87
|
+
completion(
|
|
88
|
+
PKPaymentRequestShippingMethodUpdate.init(paymentSummaryItems: applePaySummaryItems)
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
func paymentAuthorizationViewController(
|
|
94
|
+
_ controller: PKPaymentAuthorizationViewController,
|
|
95
|
+
didSelectShippingContact contact: PKContact,
|
|
96
|
+
handler completion: @escaping (PKPaymentRequestShippingContactUpdate) -> Void
|
|
97
|
+
) {
|
|
98
|
+
if let callback = self.shippingContactUpdateJSCallback {
|
|
99
|
+
self.shippingContactUpdateCompletion = completion
|
|
100
|
+
callback(["shippingContact": Mappers.mapFromShippingContact(shippingContact: contact)])
|
|
101
|
+
} else {
|
|
102
|
+
completion(
|
|
103
|
+
PKPaymentRequestShippingContactUpdate.init(
|
|
104
|
+
errors: applePayShippingAddressErrors,
|
|
105
|
+
paymentSummaryItems: applePaySummaryItems,
|
|
106
|
+
shippingMethods: applePayShippingMethods
|
|
107
|
+
)
|
|
108
|
+
)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
func applePayContext(
|
|
113
|
+
_ context: STPApplePayContext,
|
|
114
|
+
didSelect shippingMethod: PKShippingMethod,
|
|
115
|
+
handler: @escaping (PKPaymentRequestShippingMethodUpdate) -> Void
|
|
116
|
+
) {
|
|
117
|
+
if let callback = self.shippingMethodUpdateJSCallback {
|
|
118
|
+
self.shippingMethodUpdateCompletion = handler
|
|
119
|
+
callback(["shippingMethod": Mappers.mapFromShippingMethod(shippingMethod: shippingMethod)])
|
|
120
|
+
if (self.hasLegacyApplePayListeners) {
|
|
121
|
+
// Legacy, remove when useApplePay hook is removed
|
|
122
|
+
sendEvent(withName: "onDidSetShippingMethod", body: ["shippingMethod": Mappers.mapFromShippingMethod(shippingMethod: shippingMethod)])
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
handler(
|
|
126
|
+
PKPaymentRequestShippingMethodUpdate.init(paymentSummaryItems: applePaySummaryItems)
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
func applePayContext(
|
|
132
|
+
_ context: STPApplePayContext,
|
|
133
|
+
didSelectShippingContact contact: PKContact,
|
|
134
|
+
handler: @escaping (PKPaymentRequestShippingContactUpdate) -> Void
|
|
135
|
+
) {
|
|
136
|
+
if let callback = self.shippingContactUpdateJSCallback {
|
|
137
|
+
self.shippingContactUpdateCompletion = handler
|
|
138
|
+
callback(["shippingContact": Mappers.mapFromShippingContact(shippingContact: contact)])
|
|
139
|
+
if (self.hasLegacyApplePayListeners) {
|
|
140
|
+
// Legacy, remove when useApplePay hook is removed
|
|
141
|
+
sendEvent(withName: "onDidSetShippingContact", body: ["shippingContact": Mappers.mapFromShippingContact(shippingContact: contact)])
|
|
142
|
+
}
|
|
143
|
+
} else {
|
|
144
|
+
handler(
|
|
145
|
+
PKPaymentRequestShippingContactUpdate.init(
|
|
146
|
+
errors: applePayShippingAddressErrors,
|
|
147
|
+
paymentSummaryItems: applePaySummaryItems,
|
|
148
|
+
shippingMethods: applePayShippingMethods
|
|
149
|
+
)
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
func applePayContext(
|
|
155
|
+
_ context: STPApplePayContext,
|
|
156
|
+
didCreatePaymentMethod paymentMethod: STPPaymentMethod,
|
|
157
|
+
paymentInformation: PKPayment,
|
|
158
|
+
completion: @escaping STPIntentClientSecretCompletionBlock
|
|
159
|
+
) {
|
|
160
|
+
if let clientSecret = self.confirmApplePayPaymentClientSecret {
|
|
161
|
+
completion(clientSecret, nil)
|
|
162
|
+
} else {
|
|
163
|
+
self.applePayCompletionCallback = completion
|
|
164
|
+
let method = Mappers.mapFromPaymentMethod(paymentMethod.splitApplePayAddressByNewline())
|
|
165
|
+
self.deprecatedApplePayRequestResolver?(Mappers.createResult("paymentMethod", method))
|
|
166
|
+
self.deprecatedApplePayRequestRejecter = nil
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
func applePayContext(
|
|
171
|
+
_ context: STPApplePayContext,
|
|
172
|
+
didCompleteWith status: STPPaymentStatus,
|
|
173
|
+
error: Error?
|
|
174
|
+
) {
|
|
175
|
+
switch status {
|
|
176
|
+
case .success:
|
|
177
|
+
if let resolve = self.confirmApplePayResolver {
|
|
178
|
+
if let clientSecret = self.confirmApplePayPaymentClientSecret {
|
|
179
|
+
STPAPIClient.shared.retrievePaymentIntent(withClientSecret: clientSecret) { (paymentIntent, error) in
|
|
180
|
+
guard error == nil else {
|
|
181
|
+
if let lastPaymentError = paymentIntent?.lastPaymentError {
|
|
182
|
+
resolve(Errors.createError(ErrorType.Unknown, lastPaymentError))
|
|
183
|
+
} else {
|
|
184
|
+
resolve(Errors.createError(ErrorType.Unknown, error as NSError?))
|
|
185
|
+
}
|
|
186
|
+
return
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if let paymentIntent = paymentIntent {
|
|
190
|
+
resolve(Mappers.createResult("paymentIntent", Mappers.mapFromPaymentIntent(paymentIntent: paymentIntent)))
|
|
191
|
+
} else {
|
|
192
|
+
resolve(Mappers.createResult("paymentIntent", nil))
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else if let clientSecret = self.confirmApplePaySetupClientSecret {
|
|
196
|
+
STPAPIClient.shared.retrieveSetupIntent(withClientSecret: clientSecret) { (setupIntent, error) in
|
|
197
|
+
guard error == nil else {
|
|
198
|
+
if let lastSetupError = setupIntent?.lastSetupError {
|
|
199
|
+
resolve(Errors.createError(ErrorType.Unknown, lastSetupError))
|
|
200
|
+
} else {
|
|
201
|
+
resolve(Errors.createError(ErrorType.Unknown, error?.localizedDescription))
|
|
202
|
+
}
|
|
203
|
+
return
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if let setupIntent = setupIntent {
|
|
207
|
+
resolve(Mappers.createResult("setupIntent", Mappers.mapFromSetupIntent(setupIntent: setupIntent)))
|
|
208
|
+
} else {
|
|
209
|
+
resolve(Mappers.createResult("setupIntent", nil))
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
} else {
|
|
215
|
+
deprecatedConfirmApplePayPaymentResolver?([])
|
|
216
|
+
}
|
|
217
|
+
break
|
|
218
|
+
case .error:
|
|
219
|
+
if let resolve = self.confirmApplePayResolver {
|
|
220
|
+
resolve(Errors.createError(ErrorType.Failed, error as NSError?))
|
|
221
|
+
} else {
|
|
222
|
+
let message = "Payment not completed"
|
|
223
|
+
deprecatedApplePayCompletionRejecter?(ErrorType.Failed, message, nil)
|
|
224
|
+
deprecatedApplePayRequestRejecter?(ErrorType.Failed, message, nil)
|
|
225
|
+
}
|
|
226
|
+
break
|
|
227
|
+
case .userCancellation:
|
|
228
|
+
let message = "The payment has been canceled"
|
|
229
|
+
if let resolve = self.confirmApplePayResolver {
|
|
230
|
+
resolve(Errors.createError(ErrorType.Canceled, message))
|
|
231
|
+
} else {
|
|
232
|
+
deprecatedApplePayCompletionRejecter?(ErrorType.Canceled, message, nil)
|
|
233
|
+
deprecatedApplePayRequestRejecter?(ErrorType.Canceled, message, nil)
|
|
234
|
+
}
|
|
235
|
+
break
|
|
236
|
+
@unknown default:
|
|
237
|
+
if let resolve = self.confirmApplePayResolver {
|
|
238
|
+
resolve(Errors.createError(ErrorType.Unknown, error as NSError?))
|
|
239
|
+
} else {
|
|
240
|
+
let message = "Payment not completed"
|
|
241
|
+
deprecatedApplePayCompletionRejecter?(ErrorType.Unknown, message, nil)
|
|
242
|
+
deprecatedApplePayRequestRejecter?(ErrorType.Unknown, message, nil)
|
|
243
|
+
}
|
|
244
|
+
break
|
|
245
|
+
}
|
|
246
|
+
confirmApplePayResolver = nil
|
|
247
|
+
confirmApplePayPaymentClientSecret = nil
|
|
248
|
+
confirmApplePaySetupClientSecret = nil
|
|
249
|
+
deprecatedApplePayCompletionRejecter = nil
|
|
250
|
+
deprecatedApplePayRequestRejecter = nil
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
extension STPPaymentMethod {
|
|
256
|
+
func splitApplePayAddressByNewline() -> STPPaymentMethod {
|
|
257
|
+
let address = self.billingDetails?.address?.line1?.split(whereSeparator: \.isNewline)
|
|
258
|
+
if (address?.indices.contains(0) == true) {
|
|
259
|
+
self.billingDetails?.address?.line1 = String(address?[0] ?? "")
|
|
260
|
+
}
|
|
261
|
+
if (address?.indices.contains(1) == true) {
|
|
262
|
+
self.billingDetails?.address?.line2 = String(address?[1] ?? "")
|
|
263
|
+
}
|
|
264
|
+
return self
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
extension STPToken {
|
|
269
|
+
func splitApplePayAddressByNewline() -> STPToken {
|
|
270
|
+
let address = self.card?.address?.line1?.split(whereSeparator: \.isNewline)
|
|
271
|
+
if (address?.indices.contains(0) == true) {
|
|
272
|
+
self.card?.address?.line1 = String(address?[0] ?? "")
|
|
273
|
+
}
|
|
274
|
+
if (address?.indices.contains(1) == true) {
|
|
275
|
+
self.card?.address?.line2 = String(address?[1] ?? "")
|
|
276
|
+
}
|
|
277
|
+
return self
|
|
278
|
+
}
|
|
279
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// PKPaymentPassFinder.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 10/6/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
internal class PaymentPassFinder: NSObject {
|
|
11
|
+
enum PassLocation: String {
|
|
12
|
+
case CURRENT_DEVICE
|
|
13
|
+
case PAIRED_DEVICE
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class func findPassWithLast4(last4: String, hasPairedAppleWatch: Bool, completion: @escaping ((Bool, [PassLocation]) -> Void)) {
|
|
17
|
+
let existingPassOnDevice: PKPass? = {
|
|
18
|
+
if #available(iOS 13.4, *) {
|
|
19
|
+
return PKPassLibrary().passes(of: PKPassType.secureElement)
|
|
20
|
+
.first(where: { $0.secureElementPass?.primaryAccountNumberSuffix == last4 && $0.secureElementPass?.passActivationState != .deactivated && !$0.isRemotePass })
|
|
21
|
+
} else {
|
|
22
|
+
return PKPassLibrary().passes(of: PKPassType.payment)
|
|
23
|
+
.first(where: { $0.paymentPass?.primaryAccountNumberSuffix == last4 && $0.paymentPass?.passActivationState != .deactivated && !$0.isRemotePass })
|
|
24
|
+
}
|
|
25
|
+
}()
|
|
26
|
+
|
|
27
|
+
var passLocations: [PassLocation] = []
|
|
28
|
+
if (existingPassOnDevice != nil) {
|
|
29
|
+
passLocations.append(.CURRENT_DEVICE)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// We're done here if the user does not have a paired Apple Watch
|
|
33
|
+
if (!hasPairedAppleWatch) {
|
|
34
|
+
completion(
|
|
35
|
+
passLocations.count < 1,
|
|
36
|
+
passLocations
|
|
37
|
+
)
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let existingPassOnPairedDevices: PKPass? = {
|
|
42
|
+
if #available(iOS 13.4, *) {
|
|
43
|
+
return PKPassLibrary().remoteSecureElementPasses
|
|
44
|
+
.first(where: { $0.secureElementPass?.primaryAccountNumberSuffix == last4 && $0.secureElementPass?.passActivationState != .deactivated })
|
|
45
|
+
} else {
|
|
46
|
+
return PKPassLibrary().remotePaymentPasses()
|
|
47
|
+
.first(where: { $0.paymentPass?.primaryAccountNumberSuffix == last4 && $0.paymentPass?.passActivationState != .deactivated })
|
|
48
|
+
}
|
|
49
|
+
}()
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
if (existingPassOnPairedDevices != nil) {
|
|
53
|
+
passLocations.append(.PAIRED_DEVICE)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
completion(
|
|
57
|
+
passLocations.count < 2,
|
|
58
|
+
passLocations
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
//
|
|
7
7
|
import StripePaymentSheet
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
func
|
|
9
|
+
internal class PaymentSheetAppearance {
|
|
10
|
+
class func buildAppearanceFromParams(userParams: NSDictionary?) throws -> PaymentSheet.Appearance {
|
|
11
11
|
var appearance = PaymentSheet.Appearance()
|
|
12
|
+
guard let userParams = userParams else { return appearance }
|
|
12
13
|
|
|
13
14
|
if let fontParams = userParams[PaymentSheetAppearanceKeys.FONT] as? NSDictionary {
|
|
14
15
|
appearance.font = try buildFont(params: fontParams)
|
|
@@ -30,7 +31,7 @@ extension StripeSdk {
|
|
|
30
31
|
return appearance
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
private func buildFont(params: NSDictionary) throws -> PaymentSheet.Appearance.Font {
|
|
34
|
+
private class func buildFont(params: NSDictionary) throws -> PaymentSheet.Appearance.Font {
|
|
34
35
|
var font = PaymentSheet.Appearance.Font()
|
|
35
36
|
if let fontName = params[PaymentSheetAppearanceKeys.FAMILY] as? String {
|
|
36
37
|
guard let customFont = UIFont(name: fontName, size: UIFont.systemFontSize) else {
|
|
@@ -41,8 +42,8 @@ extension StripeSdk {
|
|
|
41
42
|
font.sizeScaleFactor = params[PaymentSheetAppearanceKeys.SCALE] as? CGFloat ?? PaymentSheet.Appearance.default.font.sizeScaleFactor
|
|
42
43
|
return font
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
-
private func buildColors(params: NSDictionary) throws -> PaymentSheet.Appearance.Colors {
|
|
45
|
+
|
|
46
|
+
private class func buildColors(params: NSDictionary) throws -> PaymentSheet.Appearance.Colors {
|
|
46
47
|
var colors = PaymentSheet.Appearance.Colors()
|
|
47
48
|
|
|
48
49
|
if (params.object(forKey: PaymentSheetAppearanceKeys.LIGHT) != nil && params.object(forKey: PaymentSheetAppearanceKeys.DARK) == nil ||
|
|
@@ -53,25 +54,25 @@ extension StripeSdk {
|
|
|
53
54
|
let lightModeParams = params[PaymentSheetAppearanceKeys.LIGHT] as? NSDictionary ?? params
|
|
54
55
|
let darkModeParams = params[PaymentSheetAppearanceKeys.DARK] as? NSDictionary ?? params
|
|
55
56
|
|
|
56
|
-
colors.primary = try
|
|
57
|
-
colors.background = try
|
|
58
|
-
colors.componentBackground = try
|
|
59
|
-
colors.componentBorder = try
|
|
60
|
-
colors.componentDivider = try
|
|
61
|
-
colors.text = try
|
|
62
|
-
colors.textSecondary = try
|
|
63
|
-
colors.componentText = try
|
|
64
|
-
colors.componentPlaceholderText = try
|
|
65
|
-
colors.icon = try
|
|
66
|
-
colors.danger = try
|
|
57
|
+
colors.primary = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.PRIMARY, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.primary
|
|
58
|
+
colors.background = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.BACKGROUND, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.background
|
|
59
|
+
colors.componentBackground = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.COMPONENT_BACKGROUND, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.componentBackground
|
|
60
|
+
colors.componentBorder = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.COMPONENT_BORDER, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.componentBorder
|
|
61
|
+
colors.componentDivider = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.COMPONENT_DIVIDER, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.componentDivider
|
|
62
|
+
colors.text = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.PRIMARY_TEXT, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.text
|
|
63
|
+
colors.textSecondary = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.SECONDARY_TEXT, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.textSecondary
|
|
64
|
+
colors.componentText = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.COMPONENT_TEXT, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.componentText
|
|
65
|
+
colors.componentPlaceholderText = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.PLACEHOLDER_TEXT, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.componentPlaceholderText
|
|
66
|
+
colors.icon = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.ICON, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.icon
|
|
67
|
+
colors.danger = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.ERROR, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.colors.danger
|
|
67
68
|
|
|
68
69
|
return colors
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
private func buildShadow(params: NSDictionary) throws -> PaymentSheet.Appearance.Shadow {
|
|
72
|
+
private class func buildShadow(params: NSDictionary) throws -> PaymentSheet.Appearance.Shadow {
|
|
72
73
|
var shadow = PaymentSheet.Appearance.Shadow()
|
|
73
74
|
|
|
74
|
-
if let color = try
|
|
75
|
+
if let color = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.SHADOW_COLOR, lightParams: params, darkParams: params) {
|
|
75
76
|
shadow.color = color
|
|
76
77
|
}
|
|
77
78
|
if let opacity = params[PaymentSheetAppearanceKeys.OPACITY] as? CGFloat {
|
|
@@ -89,7 +90,7 @@ extension StripeSdk {
|
|
|
89
90
|
return shadow
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
private func buildPrimaryButton(params: NSDictionary) throws -> PaymentSheet.Appearance.PrimaryButton {
|
|
93
|
+
private class func buildPrimaryButton(params: NSDictionary) throws -> PaymentSheet.Appearance.PrimaryButton {
|
|
93
94
|
var primaryButton = PaymentSheet.Appearance.PrimaryButton()
|
|
94
95
|
|
|
95
96
|
if let fontName = (params[PaymentSheetAppearanceKeys.FONT] as? NSDictionary)?[PaymentSheetAppearanceKeys.FAMILY] as? String {
|
|
@@ -118,15 +119,15 @@ extension StripeSdk {
|
|
|
118
119
|
let lightModeParams = colorParams[PaymentSheetAppearanceKeys.LIGHT] as? NSDictionary ?? colorParams
|
|
119
120
|
let darkModeParams = colorParams[PaymentSheetAppearanceKeys.DARK] as? NSDictionary ?? colorParams
|
|
120
121
|
|
|
121
|
-
primaryButton.backgroundColor = try
|
|
122
|
-
primaryButton.textColor = try
|
|
123
|
-
primaryButton.borderColor = try
|
|
122
|
+
primaryButton.backgroundColor = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.BACKGROUND, lightParams: lightModeParams, darkParams: darkModeParams)
|
|
123
|
+
primaryButton.textColor = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.TEXT, lightParams: lightModeParams, darkParams: darkModeParams)
|
|
124
|
+
primaryButton.borderColor = try buildUserInterfaceStyleAwareColor(key: PaymentSheetAppearanceKeys.BORDER, lightParams: lightModeParams, darkParams: darkModeParams) ?? PaymentSheet.Appearance.default.primaryButton.borderColor
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
return primaryButton
|
|
127
128
|
}
|
|
128
129
|
|
|
129
|
-
private
|
|
130
|
+
private class func buildUserInterfaceStyleAwareColor(key: String, lightParams: NSDictionary, darkParams: NSDictionary) throws -> UIColor? {
|
|
130
131
|
guard let lightHexString = lightParams[key] as? String, let darkHexString = darkParams[key] as? String else {
|
|
131
132
|
return nil
|
|
132
133
|
}
|
|
File without changes
|
|
File without changes
|
|
@@ -19,20 +19,10 @@ class AddToWalletButtonView: UIView {
|
|
|
19
19
|
@objc var ephemeralKey: NSDictionary?
|
|
20
20
|
@objc var onCompleteAction: RCTDirectEventBlock?
|
|
21
21
|
|
|
22
|
-
override init(frame: CGRect) {
|
|
23
|
-
super.init(frame: frame)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
22
|
required init?(coder: NSCoder) {
|
|
27
23
|
fatalError("init(coder:) has not been implemented")
|
|
28
24
|
}
|
|
29
25
|
|
|
30
|
-
override func layoutSubviews() {
|
|
31
|
-
if let addToWalletButton = self.addToWalletButton {
|
|
32
|
-
addToWalletButton.frame = self.bounds
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
26
|
override func didSetProps(_ changedProps: [String]!) {
|
|
37
27
|
if let addToWalletButton = addToWalletButton {
|
|
38
28
|
addToWalletButton.removeFromSuperview()
|
|
@@ -96,6 +86,16 @@ class AddToWalletButtonView: UIView {
|
|
|
96
86
|
let vc = findViewControllerPresenter(from: UIApplication.shared.delegate?.window??.rootViewController ?? UIViewController())
|
|
97
87
|
vc.present(controller!, animated: true, completion: nil)
|
|
98
88
|
}
|
|
89
|
+
|
|
90
|
+
override init(frame: CGRect) {
|
|
91
|
+
super.init(frame: frame)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
override func layoutSubviews() {
|
|
95
|
+
if let addToWalletButton = self.addToWalletButton {
|
|
96
|
+
addToWalletButton.frame = self.bounds
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//
|
|
2
|
+
// PushProvisioningUtils.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 6/9/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import Stripe
|
|
10
|
+
|
|
11
|
+
internal class PushProvisioningUtils {
|
|
12
|
+
class func canAddCardToWallet(
|
|
13
|
+
last4: String,
|
|
14
|
+
primaryAccountIdentifier: String,
|
|
15
|
+
testEnv: Bool,
|
|
16
|
+
hasPairedAppleWatch: Bool,
|
|
17
|
+
completion: @escaping (_ canAddCard: Bool, _ status: AddCardToWalletStatus?) -> Void
|
|
18
|
+
) {
|
|
19
|
+
if (!PKAddPassesViewController.canAddPasses()) {
|
|
20
|
+
completion(false, AddCardToWalletStatus.UNSUPPORTED_DEVICE)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let canAddCard = canAddPaymentPass(
|
|
24
|
+
primaryAccountIdentifier: primaryAccountIdentifier,
|
|
25
|
+
isTestMode: testEnv)
|
|
26
|
+
|
|
27
|
+
if (!canAddCard) {
|
|
28
|
+
completion(canAddCard, AddCardToWalletStatus.MISSING_CONFIGURATION)
|
|
29
|
+
} else {
|
|
30
|
+
PaymentPassFinder.findPassWithLast4(last4: last4, hasPairedAppleWatch: hasPairedAppleWatch) { canAddCardToADevice, passLocations in
|
|
31
|
+
var status: AddCardToWalletStatus? = nil
|
|
32
|
+
if (!canAddCardToADevice) {
|
|
33
|
+
status = AddCardToWalletStatus.CARD_ALREADY_EXISTS
|
|
34
|
+
} else if (passLocations.contains(.PAIRED_DEVICE)) {
|
|
35
|
+
status = AddCardToWalletStatus.CARD_EXISTS_ON_PAIRED_DEVICE
|
|
36
|
+
} else if (passLocations.contains(.CURRENT_DEVICE)) {
|
|
37
|
+
status = AddCardToWalletStatus.CARD_EXISTS_ON_CURRENT_DEVICE
|
|
38
|
+
}
|
|
39
|
+
completion(canAddCardToADevice, status)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
class func canAddPaymentPass(primaryAccountIdentifier: String, isTestMode: Bool) -> Bool {
|
|
45
|
+
if (isTestMode) {
|
|
46
|
+
return STPFakeAddPaymentPassViewController.canAddPaymentPass()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if #available(iOS 13.4, *) {
|
|
50
|
+
return PKPassLibrary().canAddSecureElementPass(primaryAccountIdentifier: primaryAccountIdentifier)
|
|
51
|
+
} else {
|
|
52
|
+
return PKAddPaymentPassViewController.canAddPaymentPass()
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
class func getPassLocation(last4: String) -> PaymentPassFinder.PassLocation? {
|
|
57
|
+
let existingPassOnDevice: PKPass? = {
|
|
58
|
+
if #available(iOS 13.4, *) {
|
|
59
|
+
return PKPassLibrary().passes(of: PKPassType.secureElement)
|
|
60
|
+
.first(where: { $0.secureElementPass?.primaryAccountNumberSuffix == last4 && $0.secureElementPass?.passActivationState != .suspended && !$0.isRemotePass })
|
|
61
|
+
} else {
|
|
62
|
+
return PKPassLibrary().passes(of: PKPassType.payment)
|
|
63
|
+
.first(where: { $0.paymentPass?.primaryAccountNumberSuffix == last4 && $0.paymentPass?.passActivationState != .suspended && !$0.isRemotePass })
|
|
64
|
+
}
|
|
65
|
+
}()
|
|
66
|
+
|
|
67
|
+
let existingPassOnPairedDevices: PKPass? = {
|
|
68
|
+
if #available(iOS 13.4, *) {
|
|
69
|
+
return PKPassLibrary().remoteSecureElementPasses
|
|
70
|
+
.first(where: { $0.secureElementPass?.primaryAccountNumberSuffix == last4 && $0.secureElementPass?.passActivationState != .suspended })
|
|
71
|
+
} else {
|
|
72
|
+
return PKPassLibrary().remotePaymentPasses()
|
|
73
|
+
.first(where: { $0.paymentPass?.primaryAccountNumberSuffix == last4 && $0.paymentPass?.passActivationState != .suspended })
|
|
74
|
+
}
|
|
75
|
+
}()
|
|
76
|
+
|
|
77
|
+
return existingPassOnDevice != nil ? PaymentPassFinder.PassLocation.CURRENT_DEVICE : (existingPassOnPairedDevices != nil ? PaymentPassFinder.PassLocation.PAIRED_DEVICE : nil)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
enum AddCardToWalletStatus: String {
|
|
81
|
+
case UNSUPPORTED_DEVICE
|
|
82
|
+
case MISSING_CONFIGURATION
|
|
83
|
+
case CARD_ALREADY_EXISTS
|
|
84
|
+
case CARD_EXISTS_ON_CURRENT_DEVICE
|
|
85
|
+
case CARD_EXISTS_ON_PAIRED_DEVICE
|
|
86
|
+
}
|
|
87
|
+
}
|
package/ios/StripeSdk.m
CHANGED
|
@@ -19,6 +19,35 @@ RCT_EXTERN_METHOD(
|
|
|
19
19
|
resolver: (RCTPromiseResolveBlock)resolve
|
|
20
20
|
rejecter: (RCTPromiseRejectBlock)reject)
|
|
21
21
|
|
|
22
|
+
RCT_EXTERN_METHOD(
|
|
23
|
+
isPlatformPaySupported:(NSDictionary *)params
|
|
24
|
+
resolver: (RCTPromiseResolveBlock)resolve
|
|
25
|
+
rejecter: (RCTPromiseRejectBlock)reject)
|
|
26
|
+
|
|
27
|
+
RCT_EXTERN_METHOD(
|
|
28
|
+
createPlatformPayPaymentMethod:(NSDictionary *)params
|
|
29
|
+
resolver: (RCTPromiseResolveBlock)resolve
|
|
30
|
+
rejecter: (RCTPromiseRejectBlock)reject)
|
|
31
|
+
|
|
32
|
+
RCT_EXTERN_METHOD(
|
|
33
|
+
confirmPlatformPay:(NSString *)clientSecret
|
|
34
|
+
params:(NSDictionary *)params
|
|
35
|
+
isPaymentIntent:(BOOL)isPaymentIntent
|
|
36
|
+
resolver: (RCTPromiseResolveBlock)resolve
|
|
37
|
+
rejecter: (RCTPromiseRejectBlock)reject
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
RCT_EXTERN_METHOD(
|
|
41
|
+
dismissPlatformPay: (RCTPromiseResolveBlock)resolve
|
|
42
|
+
rejecter: (RCTPromiseRejectBlock)reject)
|
|
43
|
+
|
|
44
|
+
RCT_EXTERN_METHOD(
|
|
45
|
+
updatePlatformPaySheet:(NSArray *)summaryItems
|
|
46
|
+
shippingMethods:(NSArray *)summaryItems
|
|
47
|
+
errors: (NSArray *)errors
|
|
48
|
+
resolver: (RCTPromiseResolveBlock)resolve
|
|
49
|
+
rejecter: (RCTPromiseRejectBlock)reject)
|
|
50
|
+
|
|
22
51
|
RCT_EXTERN_METHOD(
|
|
23
52
|
presentApplePay:(NSDictionary *)params
|
|
24
53
|
resolver: (RCTPromiseResolveBlock)resolve
|