@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
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.22.0 - 2022-12-02
|
|
6
|
+
|
|
7
|
+
### Breaking changes
|
|
8
|
+
|
|
9
|
+
### New features
|
|
10
|
+
|
|
11
|
+
- Added the `hasPairedAppleWatch` option to `canAddCardToWallet`. [#1219](https://github.com/stripe/stripe-react-native/pull/1219)
|
|
12
|
+
- Added new functions and a new component to streamline integrating with Apple and Google Pay and add more feature support. See the [Migrating to Platform Pay guide](https://github.com/stripe/stripe-react-native/blob/master/docs/Platform-Pay-Migration.md) for more details. The old Apple and Google Pay APIs are marked as `deprecated` and will be removed in a future release, but are still supported in this version.
|
|
13
|
+
|
|
14
|
+
## Fixes
|
|
15
|
+
|
|
16
|
+
- Fixed an issue where builds would error with the message `'const' enums are not supported.` [see commit](https://github.com/stripe/stripe-react-native/commit/f882bfa588aa6d23a980b4b43d2cca660ca1dd2a)
|
|
17
|
+
- Fixed an issue where the `canAddCardToWallet` method would sometimes wrongly return `false` with a `details.status` of `MISSING_CONFIGURATION` in production builds. [#1215](https://github.com/stripe/stripe-react-native/pull/1215)
|
|
18
|
+
- Fixed an issue on Android where, for certain countries, the postal code would not be enabled but would still be required. [#1213](https://github.com/stripe/stripe-react-native/pull/1213)
|
|
19
|
+
- Fixed an issue on iOS where `canAddCardToWallet` would return `false` if the card had already been provisioned on a paired device like an Apple Watch, but had not yet been provisioned on the current device, and would also return `false` if the card had been provisioned on the current device, but not on a paired Apple Watch. [#1219](https://github.com/stripe/stripe-react-native/pull/1219)
|
|
20
|
+
|
|
21
|
+
## 0.21.0 - 2022-11-15
|
|
22
|
+
|
|
23
|
+
### Breaking changes
|
|
24
|
+
|
|
25
|
+
### New features
|
|
26
|
+
|
|
27
|
+
- Added the `<AddressSheet />` component, which enables you to collect local and international shipping or billing addresses from your customers _with_ address autocomplete. [#1169](https://github.com/stripe/stripe-react-native/pull/1169)
|
|
28
|
+
- [Find the docs here](https://stripe.com/docs/elements/address-element?platform=react-native)
|
|
29
|
+
- Added the `defaultShippingDetails` field to the `params` argument in `initPaymentSheet(params)`. This will allow you to collect shipping details (either in your own UI or using the new `<AddressSheet />` component) for payments in the Payment Sheet. [#1169](https://github.com/stripe/stripe-react-native/pull/1169)
|
|
30
|
+
|
|
31
|
+
## Fixes
|
|
32
|
+
|
|
33
|
+
- Fixed a build error on Android when using Kotlin version 1.7.10. [#1195](https://github.com/stripe/stripe-react-native/pull/1195)
|
|
34
|
+
|
|
5
35
|
## 0.20.0 - 2022-11-03
|
|
6
36
|
|
|
7
37
|
### Breaking changes
|
|
@@ -25,7 +55,7 @@
|
|
|
25
55
|
- Fixed an issue with Financial Connections on iOS where the app wouldn't properly redirect back after authentication. [#1178](https://github.com/stripe/stripe-react-native/pull/1178)
|
|
26
56
|
- Fixed `borderWidth` and `borderRadius` for `<CardField />` and `CardForm />` was inconsistent across iOS and Android. [#1182](https://github.com/stripe/stripe-react-native/pull/1182)
|
|
27
57
|
|
|
28
|
-
## 0.19.0 - 2022-09-16
|
|
58
|
+
## 0.19.0 - 2022-09-16 (📌 Expo SDK 47)
|
|
29
59
|
|
|
30
60
|
### Breaking changes
|
|
31
61
|
|
package/android/build.gradle
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
StripeSdk_kotlinVersion=1.6.21
|
|
2
|
-
StripeSdk_stripeVersion=20.
|
|
2
|
+
StripeSdk_stripeVersion=20.16.+
|
|
@@ -204,6 +204,10 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
204
204
|
|
|
205
205
|
fun setPostalCodeEnabled(isEnabled: Boolean) {
|
|
206
206
|
mCardWidget.postalCodeEnabled = isEnabled
|
|
207
|
+
|
|
208
|
+
if (isEnabled === false) {
|
|
209
|
+
mCardWidget.postalCodeRequired = false
|
|
210
|
+
}
|
|
207
211
|
}
|
|
208
212
|
|
|
209
213
|
/**
|
|
@@ -125,7 +125,7 @@ class FinancialConnectionsSheetFragment : Fragment() {
|
|
|
125
125
|
private fun commitFragmentAndStartFlow(currentActivity: AppCompatActivity) {
|
|
126
126
|
try {
|
|
127
127
|
currentActivity.supportFragmentManager.beginTransaction()
|
|
128
|
-
.add(this,
|
|
128
|
+
.add(this, TAG)
|
|
129
129
|
.commit()
|
|
130
130
|
} catch (error: IllegalStateException) {
|
|
131
131
|
promise.resolve(createError(ErrorType.Failed.toString(), error.message))
|
|
@@ -133,6 +133,8 @@ class FinancialConnectionsSheetFragment : Fragment() {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
companion object {
|
|
136
|
+
internal const val TAG = "financial_connections_sheet_launch_fragment"
|
|
137
|
+
|
|
136
138
|
private fun createTokenResult(result: FinancialConnectionsSheetForTokenResult.Completed): WritableMap {
|
|
137
139
|
return WritableNativeMap().also {
|
|
138
140
|
it.putMap("session", mapFromSession(result.financialConnectionsSession))
|
|
@@ -239,6 +241,7 @@ class FinancialConnectionsSheetFragment : Fragment() {
|
|
|
239
241
|
FinancialConnectionsAccount.Permissions.TRANSACTIONS -> "transactions"
|
|
240
242
|
FinancialConnectionsAccount.Permissions.ACCOUNT_NUMBERS -> "accountNumbers"
|
|
241
243
|
FinancialConnectionsAccount.Permissions.UNKNOWN -> "unparsable"
|
|
244
|
+
FinancialConnectionsAccount.Permissions.ACCOUNT_NUMBERS -> "accountNumbers"
|
|
242
245
|
}
|
|
243
246
|
}
|
|
244
247
|
|
|
@@ -17,6 +17,11 @@ class GooglePayButtonManager : SimpleViewManager<GooglePayButtonView?>() {
|
|
|
17
17
|
|
|
18
18
|
@ReactProp(name = "buttonType")
|
|
19
19
|
fun buttonType(view: GooglePayButtonView, buttonType: String) {
|
|
20
|
+
view.setButtonType(buttonType)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@ReactProp(name = "type")
|
|
24
|
+
fun type(view: GooglePayButtonView, buttonType: Int) {
|
|
20
25
|
view.setType(buttonType)
|
|
21
26
|
}
|
|
22
27
|
|
|
@@ -1,28 +1,66 @@
|
|
|
1
1
|
package com.reactnativestripesdk
|
|
2
2
|
|
|
3
3
|
import android.view.LayoutInflater
|
|
4
|
+
import android.view.View
|
|
4
5
|
import android.widget.FrameLayout
|
|
5
6
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
7
|
|
|
7
8
|
class GooglePayButtonView(private val context: ThemedReactContext) : FrameLayout(context) {
|
|
9
|
+
private var button: View? = null
|
|
10
|
+
// Used in legacy GooglePayButton implementations
|
|
8
11
|
private var buttonType: String? = null
|
|
9
12
|
|
|
13
|
+
// Used in the new PlatformPayButton implementations
|
|
14
|
+
private var type: Int? = null
|
|
15
|
+
|
|
10
16
|
fun initialize() {
|
|
11
|
-
val
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
val resAsset: Int =
|
|
18
|
+
if (type != null) {
|
|
19
|
+
when (type) {
|
|
20
|
+
0 -> R.layout.plain_googlepay_button
|
|
21
|
+
1 -> R.layout.buy_with_googlepay_button
|
|
22
|
+
6 -> R.layout.book_with_googlepay_button
|
|
23
|
+
5 -> R.layout.checkout_with_googlepay_button
|
|
24
|
+
4 -> R.layout.donate_with_googlepay_button
|
|
25
|
+
11 -> R.layout.order_with_googlepay_button
|
|
26
|
+
1000 -> R.layout.pay_with_googlepay_button
|
|
27
|
+
7 -> R.layout.subscribe_with_googlepay_button
|
|
28
|
+
1001 -> R.layout.googlepay_mark_button
|
|
29
|
+
else -> R.layout.plain_googlepay_button
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
when (buttonType) {
|
|
33
|
+
"pay" -> R.layout.pay_with_googlepay_button
|
|
34
|
+
"standard" -> R.layout.plain_googlepay_button
|
|
35
|
+
else -> R.layout.plain_googlepay_button
|
|
36
|
+
}
|
|
16
37
|
}
|
|
17
38
|
|
|
18
|
-
|
|
19
|
-
|
|
39
|
+
button = LayoutInflater.from(context).inflate(
|
|
40
|
+
resAsset, null
|
|
20
41
|
)
|
|
21
42
|
|
|
22
43
|
addView(button)
|
|
44
|
+
viewTreeObserver.addOnGlobalLayoutListener { requestLayout() }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
override fun requestLayout() {
|
|
48
|
+
super.requestLayout()
|
|
49
|
+
post(mLayoutRunnable)
|
|
23
50
|
}
|
|
24
51
|
|
|
25
|
-
|
|
52
|
+
private val mLayoutRunnable = Runnable {
|
|
53
|
+
measure(
|
|
54
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
55
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY))
|
|
56
|
+
button?.layout(left, top, right, bottom)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
fun setButtonType(type: String) {
|
|
26
60
|
buttonType = type
|
|
27
61
|
}
|
|
62
|
+
|
|
63
|
+
fun setType(type: Int) {
|
|
64
|
+
this.type = type
|
|
65
|
+
}
|
|
28
66
|
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
package com.reactnativestripesdk
|
|
2
|
+
|
|
3
|
+
import android.os.Bundle
|
|
4
|
+
import android.view.LayoutInflater
|
|
5
|
+
import android.view.View
|
|
6
|
+
import android.view.ViewGroup
|
|
7
|
+
import android.widget.FrameLayout
|
|
8
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
9
|
+
import androidx.fragment.app.Fragment
|
|
10
|
+
import com.facebook.react.bridge.*
|
|
11
|
+
import com.reactnativestripesdk.utils.*
|
|
12
|
+
import com.reactnativestripesdk.utils.createError
|
|
13
|
+
import com.reactnativestripesdk.utils.createMissingActivityError
|
|
14
|
+
import com.stripe.android.googlepaylauncher.GooglePayEnvironment
|
|
15
|
+
import com.stripe.android.googlepaylauncher.GooglePayLauncher
|
|
16
|
+
|
|
17
|
+
class GooglePayLauncherFragment : Fragment() {
|
|
18
|
+
enum class Mode {
|
|
19
|
+
ForSetup, ForPayment
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private lateinit var launcher: GooglePayLauncher
|
|
23
|
+
private lateinit var clientSecret: String
|
|
24
|
+
private lateinit var mode: Mode
|
|
25
|
+
private lateinit var configuration: GooglePayLauncher.Config
|
|
26
|
+
private lateinit var currencyCode: String
|
|
27
|
+
private lateinit var callback: (result: GooglePayLauncher.Result?, error: WritableMap?) -> Unit
|
|
28
|
+
|
|
29
|
+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
|
30
|
+
savedInstanceState: Bundle?): View {
|
|
31
|
+
return FrameLayout(requireActivity()).also {
|
|
32
|
+
it.visibility = View.GONE
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
37
|
+
launcher = GooglePayLauncher(
|
|
38
|
+
fragment = this,
|
|
39
|
+
config = configuration,
|
|
40
|
+
readyCallback = ::onGooglePayReady,
|
|
41
|
+
resultCallback = ::onGooglePayResult
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
fun presentGooglePaySheet(clientSecret: String, mode: Mode, googlePayParams: ReadableMap, context: ReactApplicationContext, callback: (GooglePayLauncher.Result?, error: WritableMap?) -> Unit) {
|
|
46
|
+
this.clientSecret = clientSecret
|
|
47
|
+
this.mode = mode
|
|
48
|
+
this.callback = callback
|
|
49
|
+
this.currencyCode = googlePayParams.getString("currencyCode") ?: "USD"
|
|
50
|
+
this.configuration = GooglePayLauncher.Config(
|
|
51
|
+
environment = if (googlePayParams.getBoolean("testEnv")) GooglePayEnvironment.Test else GooglePayEnvironment.Production,
|
|
52
|
+
merchantCountryCode = googlePayParams.getString("merchantCountryCode").orEmpty(),
|
|
53
|
+
merchantName = googlePayParams.getString("merchantName").orEmpty(),
|
|
54
|
+
isEmailRequired = googlePayParams.getBooleanOr("isEmailRequired", false),
|
|
55
|
+
billingAddressConfig = buildBillingAddressParameters(googlePayParams.getMap("billingAddressConfig")),
|
|
56
|
+
existingPaymentMethodRequired = googlePayParams.getBooleanOr("existingPaymentMethodRequired", false),
|
|
57
|
+
allowCreditCards = googlePayParams.getBooleanOr("allowCreditCards", true),
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
(context.currentActivity as? AppCompatActivity)?.let {
|
|
61
|
+
attemptToCleanupPreviousFragment(it)
|
|
62
|
+
commitFragmentAndStartFlow(it)
|
|
63
|
+
} ?: run {
|
|
64
|
+
callback(null, createMissingActivityError())
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private fun attemptToCleanupPreviousFragment(currentActivity: AppCompatActivity) {
|
|
70
|
+
currentActivity.supportFragmentManager.beginTransaction()
|
|
71
|
+
.remove(this)
|
|
72
|
+
.commitAllowingStateLoss()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private fun commitFragmentAndStartFlow(currentActivity: AppCompatActivity) {
|
|
76
|
+
try {
|
|
77
|
+
currentActivity.supportFragmentManager.beginTransaction()
|
|
78
|
+
.add(this, TAG)
|
|
79
|
+
.commit()
|
|
80
|
+
} catch (error: IllegalStateException) {
|
|
81
|
+
callback(
|
|
82
|
+
null,
|
|
83
|
+
createError(ErrorType.Failed.toString(), error.message)
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private fun onGooglePayReady(isReady: Boolean) {
|
|
89
|
+
if (isReady) {
|
|
90
|
+
when (mode) {
|
|
91
|
+
Mode.ForSetup -> {
|
|
92
|
+
launcher.presentForSetupIntent(clientSecret, currencyCode)
|
|
93
|
+
}
|
|
94
|
+
Mode.ForPayment -> {
|
|
95
|
+
launcher.presentForPaymentIntent(clientSecret)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
callback(
|
|
100
|
+
null,
|
|
101
|
+
createError(
|
|
102
|
+
GooglePayErrorType.Failed.toString(),
|
|
103
|
+
"Google Pay is not available on this device. You can use isPlatformPaySupported to preemptively check for Google Pay support."
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
private fun onGooglePayResult(result: GooglePayLauncher.Result) {
|
|
110
|
+
callback(result, null)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
companion object {
|
|
114
|
+
const val TAG = "google_pay_launcher_fragment"
|
|
115
|
+
|
|
116
|
+
private fun buildBillingAddressParameters(params: ReadableMap?): GooglePayLauncher.BillingAddressConfig {
|
|
117
|
+
val isRequired = params?.getBooleanOr("isRequired", false)
|
|
118
|
+
val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
|
|
119
|
+
val format = when (params?.getString("format").orEmpty()) {
|
|
120
|
+
"FULL" -> GooglePayLauncher.BillingAddressConfig.Format.Full
|
|
121
|
+
"MIN" -> GooglePayLauncher.BillingAddressConfig.Format.Min
|
|
122
|
+
else -> GooglePayLauncher.BillingAddressConfig.Format.Min
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return GooglePayLauncher.BillingAddressConfig(
|
|
126
|
+
isRequired = isRequired ?: false,
|
|
127
|
+
format = format,
|
|
128
|
+
isPhoneNumberRequired = isPhoneNumberRequired ?: false
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
package com.reactnativestripesdk
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import android.content.Intent
|
|
5
|
+
import androidx.appcompat.app.AppCompatActivity
|
|
6
|
+
import com.facebook.react.bridge.Promise
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap
|
|
8
|
+
import com.facebook.react.bridge.WritableNativeMap
|
|
9
|
+
import com.google.android.gms.tasks.Task
|
|
10
|
+
import com.google.android.gms.wallet.*
|
|
11
|
+
import com.reactnativestripesdk.utils.*
|
|
12
|
+
import com.reactnativestripesdk.utils.createError
|
|
13
|
+
import com.reactnativestripesdk.utils.mapFromPaymentMethod
|
|
14
|
+
import com.reactnativestripesdk.utils.mapFromToken
|
|
15
|
+
import com.stripe.android.ApiResultCallback
|
|
16
|
+
import com.stripe.android.GooglePayJsonFactory
|
|
17
|
+
import com.stripe.android.Stripe
|
|
18
|
+
import com.stripe.android.model.GooglePayResult
|
|
19
|
+
import com.stripe.android.model.PaymentMethod
|
|
20
|
+
import com.stripe.android.model.PaymentMethodCreateParams
|
|
21
|
+
import org.json.JSONObject
|
|
22
|
+
import java.util.*
|
|
23
|
+
|
|
24
|
+
class GooglePayRequestHelper {
|
|
25
|
+
companion object {
|
|
26
|
+
internal const val LOAD_PAYMENT_DATA_REQUEST_CODE = 414243
|
|
27
|
+
|
|
28
|
+
internal fun createPaymentRequest(activity: AppCompatActivity, factory: GooglePayJsonFactory, googlePayParams: ReadableMap): Task<PaymentData> {
|
|
29
|
+
val transactionInfo = buildTransactionInfo(googlePayParams)
|
|
30
|
+
val merchantInfo = GooglePayJsonFactory.MerchantInfo(googlePayParams.getString("merchantName").orEmpty())
|
|
31
|
+
val billingAddressParameters = buildBillingAddressParameters(googlePayParams.getMap("billingAddressConfig"))
|
|
32
|
+
val shippingAddressParameters = buildShippingAddressParameters(googlePayParams.getMap("shippingAddressConfig"))
|
|
33
|
+
|
|
34
|
+
val request = factory.createPaymentDataRequest(
|
|
35
|
+
transactionInfo = transactionInfo,
|
|
36
|
+
merchantInfo = merchantInfo,
|
|
37
|
+
billingAddressParameters = billingAddressParameters,
|
|
38
|
+
shippingAddressParameters = shippingAddressParameters,
|
|
39
|
+
isEmailRequired = googlePayParams.getBooleanOr("isEmailRequired", false),
|
|
40
|
+
allowCreditCards = googlePayParams.getBooleanOr("allowCreditCards", true)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
val walletOptions = Wallet.WalletOptions.Builder()
|
|
44
|
+
.setEnvironment(if (googlePayParams.getBoolean("testEnv")) WalletConstants.ENVIRONMENT_TEST else WalletConstants.ENVIRONMENT_PRODUCTION)
|
|
45
|
+
.build()
|
|
46
|
+
return Wallet.getPaymentsClient(activity, walletOptions).loadPaymentData(PaymentDataRequest.fromJson(request.toString()))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@Suppress("UNCHECKED_CAST")
|
|
50
|
+
private fun buildShippingAddressParameters(params: ReadableMap?): GooglePayJsonFactory.ShippingAddressParameters {
|
|
51
|
+
val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
|
|
52
|
+
val isRequired = params?.getBooleanOr("isRequired", false)
|
|
53
|
+
val allowedCountryCodes = if (params?.hasKey("allowedCountryCodes") == true)
|
|
54
|
+
params.getArray("allowedCountryCodes") as Array<String> else Locale.getISOCountries()
|
|
55
|
+
|
|
56
|
+
return GooglePayJsonFactory.ShippingAddressParameters(
|
|
57
|
+
isRequired = isRequired ?: false,
|
|
58
|
+
allowedCountryCodes = allowedCountryCodes.toSet(),
|
|
59
|
+
phoneNumberRequired = isPhoneNumberRequired ?: false
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private fun buildBillingAddressParameters(params: ReadableMap?): GooglePayJsonFactory.BillingAddressParameters {
|
|
64
|
+
val isRequired = params?.getBooleanOr("isRequired", false)
|
|
65
|
+
val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
|
|
66
|
+
val format = when (params?.getString("format").orEmpty()) {
|
|
67
|
+
"FULL" -> GooglePayJsonFactory.BillingAddressParameters.Format.Full
|
|
68
|
+
"MIN" -> GooglePayJsonFactory.BillingAddressParameters.Format.Min
|
|
69
|
+
else -> GooglePayJsonFactory.BillingAddressParameters.Format.Min
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return GooglePayJsonFactory.BillingAddressParameters(
|
|
73
|
+
isRequired = isRequired ?: false,
|
|
74
|
+
format = format,
|
|
75
|
+
isPhoneNumberRequired = isPhoneNumberRequired ?: false
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private fun buildTransactionInfo(params: ReadableMap): GooglePayJsonFactory.TransactionInfo {
|
|
80
|
+
val countryCode = params.getString("merchantCountryCode").orEmpty()
|
|
81
|
+
val currencyCode = params.getString("currencyCode") ?: "USD"
|
|
82
|
+
val amount = params.getInt("amount")
|
|
83
|
+
|
|
84
|
+
return GooglePayJsonFactory.TransactionInfo(
|
|
85
|
+
currencyCode = currencyCode,
|
|
86
|
+
totalPriceStatus = GooglePayJsonFactory.TransactionInfo.TotalPriceStatus.Estimated,
|
|
87
|
+
countryCode = countryCode,
|
|
88
|
+
totalPrice = amount,
|
|
89
|
+
checkoutOption = GooglePayJsonFactory.TransactionInfo.CheckoutOption.Default
|
|
90
|
+
)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
internal fun createPaymentMethod(request: Task<PaymentData>, activity: AppCompatActivity) {
|
|
94
|
+
AutoResolveHelper.resolveTask(
|
|
95
|
+
request,
|
|
96
|
+
activity,
|
|
97
|
+
LOAD_PAYMENT_DATA_REQUEST_CODE
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
internal fun handleGooglePaymentMethodResult(resultCode: Int, data: Intent?, stripe: Stripe, promise: Promise) {
|
|
102
|
+
when (resultCode) {
|
|
103
|
+
Activity.RESULT_OK -> {
|
|
104
|
+
data?.let { intent ->
|
|
105
|
+
PaymentData.getFromIntent(intent)?.let {
|
|
106
|
+
resolveWithPaymentMethodAndToken(it, stripe, promise)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
Activity.RESULT_CANCELED -> {
|
|
111
|
+
promise.resolve(createError(ErrorType.Canceled.toString(), "The payment has been canceled"))
|
|
112
|
+
}
|
|
113
|
+
AutoResolveHelper.RESULT_ERROR -> {
|
|
114
|
+
AutoResolveHelper.getStatusFromIntent(data)?.let {
|
|
115
|
+
promise.resolve(createError(ErrorType.Failed.toString(), it.statusMessage))
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
private fun resolveWithPaymentMethodAndToken(paymentData: PaymentData, stripe: Stripe, promise: Promise) {
|
|
122
|
+
val paymentInformation = JSONObject(paymentData.toJson())
|
|
123
|
+
val googlePayResult = GooglePayResult.fromJson(paymentInformation)
|
|
124
|
+
val promiseResult = WritableNativeMap()
|
|
125
|
+
googlePayResult.token?.let {
|
|
126
|
+
promiseResult.putMap("token", mapFromToken(it))
|
|
127
|
+
}
|
|
128
|
+
stripe.createPaymentMethod(
|
|
129
|
+
PaymentMethodCreateParams.createFromGooglePay(paymentInformation),
|
|
130
|
+
callback = object : ApiResultCallback<PaymentMethod> {
|
|
131
|
+
override fun onError(e: Exception) {
|
|
132
|
+
promise.resolve(createError("Failed", e))
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
override fun onSuccess(result: PaymentMethod) {
|
|
136
|
+
promiseResult.putMap("paymentMethod", mapFromPaymentMethod(result))
|
|
137
|
+
promise.resolve(promiseResult)
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
@@ -2,27 +2,28 @@ package com.reactnativestripesdk
|
|
|
2
2
|
|
|
3
3
|
import android.graphics.Color
|
|
4
4
|
import android.os.Bundle
|
|
5
|
+
import com.facebook.react.bridge.ReactContext
|
|
5
6
|
import com.reactnativestripesdk.utils.PaymentSheetAppearanceException
|
|
6
7
|
import com.stripe.android.paymentsheet.PaymentSheet
|
|
7
8
|
|
|
8
|
-
fun
|
|
9
|
+
fun buildPaymentSheetAppearance(userParams: Bundle?, context: ReactContext): PaymentSheet.Appearance {
|
|
9
10
|
val colorParams = userParams?.getBundle(PaymentSheetAppearanceKeys.COLORS)
|
|
10
11
|
val lightColorParams = colorParams?.getBundle(PaymentSheetAppearanceKeys.LIGHT) ?: colorParams
|
|
11
12
|
val darkColorParams = colorParams?.getBundle(PaymentSheetAppearanceKeys.DARK) ?: colorParams
|
|
12
13
|
|
|
13
14
|
return PaymentSheet.Appearance(
|
|
14
|
-
typography = buildTypography(userParams?.getBundle(PaymentSheetAppearanceKeys.FONT)),
|
|
15
|
+
typography = buildTypography(userParams?.getBundle(PaymentSheetAppearanceKeys.FONT), context),
|
|
15
16
|
colorsLight = buildColors(lightColorParams, PaymentSheet.Colors.defaultLight),
|
|
16
17
|
colorsDark = buildColors(darkColorParams, PaymentSheet.Colors.defaultDark),
|
|
17
18
|
shapes = buildShapes(userParams?.getBundle(PaymentSheetAppearanceKeys.SHAPES)),
|
|
18
|
-
primaryButton = buildPrimaryButton(userParams?.getBundle(PaymentSheetAppearanceKeys.PRIMARY_BUTTON))
|
|
19
|
+
primaryButton = buildPrimaryButton(userParams?.getBundle(PaymentSheetAppearanceKeys.PRIMARY_BUTTON), context)
|
|
19
20
|
)
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
private fun
|
|
23
|
+
private fun buildTypography(fontParams: Bundle?, context: ReactContext): PaymentSheet.Typography {
|
|
23
24
|
return PaymentSheet.Typography.default.copy(
|
|
24
25
|
sizeScaleFactor = getFloatOr(fontParams, PaymentSheetAppearanceKeys.SCALE, PaymentSheet.Typography.default.sizeScaleFactor),
|
|
25
|
-
fontResId = getFontResId(fontParams, PaymentSheetAppearanceKeys.FAMILY, PaymentSheet.Typography.default.fontResId)
|
|
26
|
+
fontResId = getFontResId(fontParams, PaymentSheetAppearanceKeys.FAMILY, PaymentSheet.Typography.default.fontResId, context)
|
|
26
27
|
)
|
|
27
28
|
}
|
|
28
29
|
|
|
@@ -64,7 +65,7 @@ private fun buildShapes(shapeParams: Bundle?): PaymentSheet.Shapes {
|
|
|
64
65
|
)
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
private fun
|
|
68
|
+
private fun buildPrimaryButton(params: Bundle?, context: ReactContext): PaymentSheet.PrimaryButton {
|
|
68
69
|
if (params == null) {
|
|
69
70
|
return PaymentSheet.PrimaryButton()
|
|
70
71
|
}
|
|
@@ -83,7 +84,7 @@ private fun PaymentSheetFragment.buildPrimaryButton(params: Bundle?): PaymentShe
|
|
|
83
84
|
borderStrokeWidthDp = getFloatOrNull(shapeParams, PaymentSheetAppearanceKeys.BORDER_WIDTH),
|
|
84
85
|
),
|
|
85
86
|
typography = PaymentSheet.PrimaryButtonTypography(
|
|
86
|
-
fontResId = getFontResId(fontParams, PaymentSheetAppearanceKeys.FAMILY, null)
|
|
87
|
+
fontResId = getFontResId(fontParams, PaymentSheetAppearanceKeys.FAMILY, null, context)
|
|
87
88
|
)
|
|
88
89
|
)
|
|
89
90
|
}
|
|
@@ -120,7 +121,7 @@ private fun getFloatOrNull(bundle: Bundle?, key: String): Float? {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
@Throws(PaymentSheetAppearanceException::class)
|
|
123
|
-
private fun
|
|
124
|
+
private fun getFontResId(bundle: Bundle?, key: String, defaultValue: Int?, context: ReactContext): Int? {
|
|
124
125
|
val fontErrorPrefix = "Encountered an error when setting a custom font:"
|
|
125
126
|
if (bundle?.containsKey(key) != true) {
|
|
126
127
|
return defaultValue
|
|
@@ -134,7 +135,7 @@ private fun PaymentSheetFragment.getFontResId(bundle: Bundle?, key: String, defa
|
|
|
134
135
|
)
|
|
135
136
|
}
|
|
136
137
|
|
|
137
|
-
val id = resources.getIdentifier(fontFileName, "font", context
|
|
138
|
+
val id = context.resources.getIdentifier(fontFileName, "font", context.packageName)
|
|
138
139
|
if (id == 0) {
|
|
139
140
|
throw PaymentSheetAppearanceException("$fontErrorPrefix Failed to find font: $fontFileName")
|
|
140
141
|
} else {
|
|
@@ -10,7 +10,6 @@ import android.view.LayoutInflater
|
|
|
10
10
|
import android.view.View
|
|
11
11
|
import android.view.ViewGroup
|
|
12
12
|
import android.widget.FrameLayout
|
|
13
|
-
import androidx.appcompat.app.AppCompatActivity
|
|
14
13
|
import androidx.appcompat.content.res.AppCompatResources
|
|
15
14
|
import androidx.core.graphics.drawable.DrawableCompat
|
|
16
15
|
import androidx.fragment.app.Fragment
|
|
@@ -18,6 +17,7 @@ import com.facebook.react.bridge.Promise
|
|
|
18
17
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
19
18
|
import com.facebook.react.bridge.WritableMap
|
|
20
19
|
import com.facebook.react.bridge.WritableNativeMap
|
|
20
|
+
import com.reactnativestripesdk.addresssheet.AddressSheetView
|
|
21
21
|
import com.reactnativestripesdk.utils.*
|
|
22
22
|
import com.reactnativestripesdk.utils.createError
|
|
23
23
|
import com.reactnativestripesdk.utils.createResult
|
|
@@ -65,12 +65,16 @@ class PaymentSheetFragment(
|
|
|
65
65
|
paymentIntentClientSecret = arguments?.getString("paymentIntentClientSecret").orEmpty()
|
|
66
66
|
setupIntentClientSecret = arguments?.getString("setupIntentClientSecret").orEmpty()
|
|
67
67
|
val appearance = try {
|
|
68
|
-
buildPaymentSheetAppearance(arguments?.getBundle("appearance"))
|
|
68
|
+
buildPaymentSheetAppearance(arguments?.getBundle("appearance"), context)
|
|
69
69
|
} catch (error: PaymentSheetAppearanceException) {
|
|
70
70
|
initPromise.resolve(createError(ErrorType.Failed.toString(), error))
|
|
71
71
|
return
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
val shippingDetails = arguments?.getBundle("defaultShippingDetails")?.let {
|
|
75
|
+
AddressSheetView.buildAddressDetails(it)
|
|
76
|
+
}
|
|
77
|
+
|
|
74
78
|
val paymentOptionCallback = PaymentOptionCallback { paymentOption ->
|
|
75
79
|
val result = paymentOption?.let {
|
|
76
80
|
val bitmap = getBitmapFromVectorDrawable(context, it.drawableResourceId)
|
|
@@ -128,6 +132,7 @@ class PaymentSheetFragment(
|
|
|
128
132
|
) else null,
|
|
129
133
|
googlePay = googlePayConfig,
|
|
130
134
|
appearance = appearance,
|
|
135
|
+
shippingDetails = shippingDetails,
|
|
131
136
|
primaryButtonLabel = primaryButtonLabel
|
|
132
137
|
)
|
|
133
138
|
|
|
@@ -198,7 +203,7 @@ class PaymentSheetFragment(
|
|
|
198
203
|
}
|
|
199
204
|
|
|
200
205
|
companion object {
|
|
201
|
-
const val TAG = "payment_sheet_launch_fragment"
|
|
206
|
+
internal const val TAG = "payment_sheet_launch_fragment"
|
|
202
207
|
|
|
203
208
|
internal fun buildGooglePayConfig(params: Bundle?): PaymentSheet.GooglePayConfiguration? {
|
|
204
209
|
if (params == null) {
|