@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,131 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AddressSheetView.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 10/11/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import StripePaymentSheet
|
|
10
|
+
|
|
11
|
+
@objc(AddressSheetView)
|
|
12
|
+
class AddressSheetView: UIView {
|
|
13
|
+
@objc var visible = false
|
|
14
|
+
@objc var presentationStyle: String = "popover"
|
|
15
|
+
@objc var animationStyle: String = ""
|
|
16
|
+
@objc var appearance: NSDictionary? = nil
|
|
17
|
+
@objc var defaultValues: NSDictionary? = nil
|
|
18
|
+
@objc var additionalFields: NSDictionary? = nil
|
|
19
|
+
@objc var allowedCountries: [String] = []
|
|
20
|
+
@objc var autocompleteCountries: [String] = []
|
|
21
|
+
@objc var primaryButtonTitle: String? = nil
|
|
22
|
+
@objc var sheetTitle: String? = nil
|
|
23
|
+
@objc var onSubmitAction: RCTDirectEventBlock?
|
|
24
|
+
@objc var onErrorAction: RCTDirectEventBlock?
|
|
25
|
+
|
|
26
|
+
private var wasVisible = false
|
|
27
|
+
private var addressViewController: AddressViewController? = nil
|
|
28
|
+
internal var addressDetails: AddressViewController.AddressDetails? = nil
|
|
29
|
+
|
|
30
|
+
override init(frame: CGRect) {
|
|
31
|
+
super.init(frame: frame)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
required init?(coder: NSCoder) {
|
|
35
|
+
fatalError("init(coder:) has not been implemented")
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override func didSetProps(_ changedProps: [String]!) {
|
|
39
|
+
if (visible && !wasVisible) {
|
|
40
|
+
presentAddressSheet()
|
|
41
|
+
wasVisible = true
|
|
42
|
+
} else if (!visible && wasVisible) {
|
|
43
|
+
addressViewController?.dismiss(animated: true)
|
|
44
|
+
wasVisible = false
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private func presentAddressSheet() {
|
|
49
|
+
if (STPAPIClient.shared.publishableKey == nil) {
|
|
50
|
+
onErrorAction!(
|
|
51
|
+
Errors.createError(ErrorType.Failed, "No publishable key set. Stripe has not been initialized. Initialize Stripe in your app with the StripeProvider component or the initStripe method.") as? [AnyHashable : Any]
|
|
52
|
+
)
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
var config: AddressViewController.Configuration
|
|
56
|
+
do {
|
|
57
|
+
config = try buildAddressSheetConfiguration()
|
|
58
|
+
} catch {
|
|
59
|
+
onErrorAction!(
|
|
60
|
+
Errors.createError(ErrorType.Failed, error.localizedDescription) as? [AnyHashable : Any]
|
|
61
|
+
)
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
self.addressViewController = AddressViewController(
|
|
66
|
+
configuration: config,
|
|
67
|
+
delegate: self
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
let navigationController = UINavigationController(rootViewController: addressViewController!)
|
|
71
|
+
navigationController.modalPresentationStyle = getModalPresentationStyle()
|
|
72
|
+
navigationController.modalTransitionStyle = getModalTransitionStyle()
|
|
73
|
+
let vc = findViewControllerPresenter(from: UIApplication.shared.delegate?.window??.rootViewController ?? UIViewController())
|
|
74
|
+
vc.present(navigationController, animated: true)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private func buildAddressSheetConfiguration() throws -> AddressViewController.Configuration {
|
|
78
|
+
let appearanceConfiguration = try PaymentSheetAppearance.buildAppearanceFromParams(userParams: appearance)
|
|
79
|
+
|
|
80
|
+
return AddressViewController.Configuration(
|
|
81
|
+
defaultValues: AddressSheetUtils.buildDefaultValues(params: defaultValues),
|
|
82
|
+
additionalFields: AddressSheetUtils.buildAdditionalFieldsConfiguration(params: additionalFields),
|
|
83
|
+
allowedCountries: allowedCountries,
|
|
84
|
+
appearance: appearanceConfiguration,
|
|
85
|
+
buttonTitle: primaryButtonTitle,
|
|
86
|
+
title: sheetTitle
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private func getModalPresentationStyle() -> UIModalPresentationStyle {
|
|
91
|
+
switch (presentationStyle) {
|
|
92
|
+
case "fullscreen":
|
|
93
|
+
return .fullScreen
|
|
94
|
+
case "popover":
|
|
95
|
+
fallthrough
|
|
96
|
+
default:
|
|
97
|
+
return .popover
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private func getModalTransitionStyle() -> UIModalTransitionStyle {
|
|
102
|
+
switch (animationStyle) {
|
|
103
|
+
case "flip":
|
|
104
|
+
return .flipHorizontal
|
|
105
|
+
case "curl":
|
|
106
|
+
return .partialCurl
|
|
107
|
+
case "dissolve":
|
|
108
|
+
return .crossDissolve
|
|
109
|
+
case "slide":
|
|
110
|
+
fallthrough
|
|
111
|
+
default:
|
|
112
|
+
return .coverVertical
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
extension AddressSheetView: AddressViewControllerDelegate {
|
|
118
|
+
func addressViewControllerDidFinish(_ addressViewController: AddressViewController, with address: AddressViewController.AddressDetails?) {
|
|
119
|
+
guard let address = address else {
|
|
120
|
+
onErrorAction!(
|
|
121
|
+
Errors.createError(
|
|
122
|
+
ErrorType.Canceled,
|
|
123
|
+
"The flow has been canceled."
|
|
124
|
+
) as? [AnyHashable : Any]
|
|
125
|
+
)
|
|
126
|
+
return
|
|
127
|
+
}
|
|
128
|
+
self.addressDetails = address
|
|
129
|
+
onSubmitAction!(AddressSheetUtils.buildResult(address: address))
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AddressSheetViewManager.m
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 10/11/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
#import <React/RCTBridgeModule.h>
|
|
10
|
+
#import <React/RCTViewManager.h>
|
|
11
|
+
|
|
12
|
+
@interface RCT_EXTERN_MODULE(AddressSheetViewManager, RCTViewManager)
|
|
13
|
+
RCT_EXPORT_VIEW_PROPERTY(visible, BOOL)
|
|
14
|
+
RCT_EXPORT_VIEW_PROPERTY(presentationStyle, NSString)
|
|
15
|
+
RCT_EXPORT_VIEW_PROPERTY(animationStyle, NSString)
|
|
16
|
+
RCT_EXPORT_VIEW_PROPERTY(appearance, NSDictionary)
|
|
17
|
+
RCT_EXPORT_VIEW_PROPERTY(defaultValues, NSDictionary)
|
|
18
|
+
RCT_EXPORT_VIEW_PROPERTY(additionalFields, NSDictionary)
|
|
19
|
+
RCT_EXPORT_VIEW_PROPERTY(allowedCountries, NSArray)
|
|
20
|
+
RCT_EXPORT_VIEW_PROPERTY(autocompleteCountries, NSArray)
|
|
21
|
+
RCT_EXPORT_VIEW_PROPERTY(primaryButtonTitle, NSString)
|
|
22
|
+
RCT_EXPORT_VIEW_PROPERTY(sheetTitle, NSString)
|
|
23
|
+
RCT_EXPORT_VIEW_PROPERTY(onSubmitAction, RCTDirectEventBlock)
|
|
24
|
+
RCT_EXPORT_VIEW_PROPERTY(onErrorAction, RCTDirectEventBlock)
|
|
25
|
+
@end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// AddressSheetViewManager.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Charles Cruzan on 10/11/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
@objc(AddressSheetViewManager)
|
|
11
|
+
class AddressSheetViewManager : RCTViewManager {
|
|
12
|
+
override func view() -> UIView! {
|
|
13
|
+
return AddressSheetView()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -7,4 +7,9 @@ RCT_EXPORT_VIEW_PROPERTY(onPressAction, RCTDirectEventBlock)
|
|
|
7
7
|
RCT_EXPORT_VIEW_PROPERTY(type, NSNumber)
|
|
8
8
|
RCT_EXPORT_VIEW_PROPERTY(buttonStyle, NSNumber)
|
|
9
9
|
RCT_EXPORT_VIEW_PROPERTY(borderRadius, NSNumber)
|
|
10
|
+
RCT_EXPORT_VIEW_PROPERTY(disabled, BOOL)
|
|
11
|
+
RCT_EXPORT_VIEW_PROPERTY(onShippingMethodSelectedAction, RCTDirectEventBlock)
|
|
12
|
+
RCT_EXPORT_VIEW_PROPERTY(onShippingContactSelectedAction, RCTDirectEventBlock)
|
|
13
|
+
RCT_EXPORT_VIEW_PROPERTY(onCouponCodeEnteredAction, RCTDirectEventBlock)
|
|
14
|
+
|
|
10
15
|
@end
|
|
@@ -3,7 +3,9 @@ import Foundation
|
|
|
3
3
|
@objc(ApplePayButtonManager)
|
|
4
4
|
class ApplePayButtonManager: RCTViewManager {
|
|
5
5
|
override func view() -> UIView! {
|
|
6
|
-
|
|
6
|
+
let view = ApplePayButtonView(frame: CGRect.init())
|
|
7
|
+
view.stripeSdk = bridge.module(forName: "StripeSdk") as? StripeSdk
|
|
8
|
+
return view
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
override class func requiresMainQueueSetup() -> Bool {
|
|
@@ -4,15 +4,35 @@ import UIKit
|
|
|
4
4
|
@objc(ApplePayButtonView)
|
|
5
5
|
class ApplePayButtonView: UIView {
|
|
6
6
|
var applePayButton: PKPaymentButton?
|
|
7
|
+
var stripeSdk: StripeSdk?
|
|
7
8
|
|
|
8
9
|
@objc var onPressAction: RCTDirectEventBlock?
|
|
10
|
+
@objc var onShippingMethodSelectedAction: RCTDirectEventBlock?
|
|
11
|
+
@objc var onShippingContactSelectedAction: RCTDirectEventBlock?
|
|
12
|
+
@objc var onCouponCodeEnteredAction: RCTDirectEventBlock?
|
|
13
|
+
|
|
9
14
|
@objc var type: NSNumber?
|
|
10
15
|
@objc var buttonStyle: NSNumber?
|
|
11
16
|
@objc var borderRadius: NSNumber?
|
|
17
|
+
@objc var disabled = false
|
|
18
|
+
|
|
19
|
+
func doesNothing(_: Optional<Dictionary<AnyHashable, Any>>) {
|
|
20
|
+
return
|
|
21
|
+
}
|
|
12
22
|
|
|
13
23
|
@objc func handleApplePayButtonTapped() {
|
|
14
24
|
if onPressAction != nil {
|
|
15
25
|
onPressAction!(["true": true])
|
|
26
|
+
// JS Callbacks are all no-ops since in legacy code (useApplePay hook),
|
|
27
|
+
// this behavior is controlled via the onDidSetShippingMethod and onDidSetShippingContact
|
|
28
|
+
// events
|
|
29
|
+
stripeSdk?.shippingMethodUpdateJSCallback = doesNothing
|
|
30
|
+
stripeSdk?.shippingContactUpdateJSCallback = doesNothing
|
|
31
|
+
stripeSdk?.couponCodeEnteredJSCallback = doesNothing
|
|
32
|
+
} else {
|
|
33
|
+
stripeSdk?.shippingMethodUpdateJSCallback = onShippingMethodSelectedAction
|
|
34
|
+
stripeSdk?.shippingContactUpdateJSCallback = onShippingContactSelectedAction
|
|
35
|
+
stripeSdk?.couponCodeEnteredJSCallback = onCouponCodeEnteredAction
|
|
16
36
|
}
|
|
17
37
|
}
|
|
18
38
|
|
|
@@ -28,6 +48,7 @@ class ApplePayButtonView: UIView {
|
|
|
28
48
|
}
|
|
29
49
|
|
|
30
50
|
if let applePayButton = self.applePayButton {
|
|
51
|
+
applePayButton.isEnabled = !disabled
|
|
31
52
|
applePayButton.addTarget(self, action: #selector(handleApplePayButtonTapped), for: .touchUpInside)
|
|
32
53
|
self.addSubview(applePayButton)
|
|
33
54
|
}
|
package/ios/ApplePayUtils.swift
CHANGED
|
@@ -10,6 +10,114 @@ import StripePaymentSheet
|
|
|
10
10
|
|
|
11
11
|
class ApplePayUtils {
|
|
12
12
|
|
|
13
|
+
internal class func createPaymentRequest(
|
|
14
|
+
merchantIdentifier: String?,
|
|
15
|
+
params: NSDictionary
|
|
16
|
+
) -> (error: NSDictionary?, paymentRequest: PKPaymentRequest?) {
|
|
17
|
+
guard let merchantIdentifier = merchantIdentifier else {
|
|
18
|
+
return (Errors.createError(ErrorType.Failed, "You must provide merchantIdentifier"), nil)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if let additionalEnabledNetworks = params["additionalEnabledNetworks"] as? [String] {
|
|
22
|
+
do {
|
|
23
|
+
StripeAPI.additionalEnabledApplePayNetworks = try ApplePayUtils.mapToArrayOfPaymentNetworks(arrayOfStrings: additionalEnabledNetworks)
|
|
24
|
+
} catch {
|
|
25
|
+
return (Errors.createError(ErrorType.Failed, error.localizedDescription), nil)
|
|
26
|
+
}
|
|
27
|
+
} else if (params["jcbEnabled"] as? Bool == true) {
|
|
28
|
+
StripeAPI.additionalEnabledApplePayNetworks = [.JCB]
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
guard let summaryItems = params["cartItems"] as? NSArray else {
|
|
32
|
+
return (Errors.createError(ErrorType.Failed, "`cartItems` cannot be null."), nil)
|
|
33
|
+
}
|
|
34
|
+
if (summaryItems.count == 0) {
|
|
35
|
+
return (Errors.createError(ErrorType.Failed, "`cartItems` cannot be empty."), nil)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
guard let countryCode = ((params.object(forKey: "merchantCountryCode") != nil) ? params["merchantCountryCode"] : params["country"]) as? String else {
|
|
39
|
+
return (Errors.createError(ErrorType.Failed, "You must provide the country"), nil)
|
|
40
|
+
}
|
|
41
|
+
guard let currencyCode = ((params.object(forKey: "currencyCode") != nil) ? params["currencyCode"] : params["currency"]) as? String else {
|
|
42
|
+
return (Errors.createError(ErrorType.Failed, "You must provide the payment currency"), nil)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let paymentRequest = StripeAPI.paymentRequest(withMerchantIdentifier: merchantIdentifier, country: countryCode, currency: currencyCode)
|
|
46
|
+
|
|
47
|
+
let requiredShippingAddressFields = params["requiredShippingAddressFields"] as? NSArray ?? NSArray()
|
|
48
|
+
let requiredBillingContactFields = params["requiredBillingContactFields"] as? NSArray ?? NSArray()
|
|
49
|
+
let shippingMethods = params["shippingMethods"] as? NSArray ?? NSArray()
|
|
50
|
+
|
|
51
|
+
paymentRequest.requiredShippingContactFields = Set(requiredShippingAddressFields.map {
|
|
52
|
+
Mappers.mapToPKContactField(field: $0 as! String)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
paymentRequest.requiredBillingContactFields = Set(requiredBillingContactFields.map {
|
|
56
|
+
Mappers.mapToPKContactField(field: $0 as! String)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
paymentRequest.shippingMethods = ApplePayUtils.buildShippingMethods(items: shippingMethods as? [[String : Any]])
|
|
60
|
+
|
|
61
|
+
do {
|
|
62
|
+
paymentRequest.paymentSummaryItems = try ApplePayUtils
|
|
63
|
+
.buildPaymentSummaryItems(items: summaryItems as? [[String : Any]])
|
|
64
|
+
} catch {
|
|
65
|
+
return (Errors.createError(ErrorType.Failed, error.localizedDescription), nil)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if let capabilities = params["merchantCapabilities"] as? [String] {
|
|
69
|
+
for capability in capabilities {
|
|
70
|
+
paymentRequest.merchantCapabilities.update(with: ApplePayUtils.getMerchantCapabilityFrom(string: capability))
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
paymentRequest.shippingType = ApplePayUtils.getShippingTypeFrom(string: params["shippingType"] as? String)
|
|
75
|
+
if let supportedCountries = params["supportedCountries"] as? Set<String> {
|
|
76
|
+
paymentRequest.supportedCountries = supportedCountries
|
|
77
|
+
}
|
|
78
|
+
if #available(iOS 15.0, *) {
|
|
79
|
+
if (params["supportsCouponCode"] as? Bool == true) {
|
|
80
|
+
paymentRequest.supportsCouponCode = true
|
|
81
|
+
}
|
|
82
|
+
if let couponCode = params["couponCode"] as? String {
|
|
83
|
+
paymentRequest.supportsCouponCode = true
|
|
84
|
+
paymentRequest.couponCode = couponCode
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return (nil, paymentRequest)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
internal class func getMerchantCapabilityFrom(string: String?) -> PKMerchantCapability {
|
|
92
|
+
switch string {
|
|
93
|
+
case "supportsDebit":
|
|
94
|
+
return .capabilityDebit
|
|
95
|
+
case "supportsCredit":
|
|
96
|
+
return .capabilityCredit
|
|
97
|
+
case "supportsEMV":
|
|
98
|
+
return .capabilityEMV
|
|
99
|
+
case "supports3DS":
|
|
100
|
+
fallthrough
|
|
101
|
+
default:
|
|
102
|
+
return .capability3DS
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
internal class func getShippingTypeFrom(string: String?) -> PKShippingType {
|
|
107
|
+
switch string {
|
|
108
|
+
case "delivery":
|
|
109
|
+
return .delivery
|
|
110
|
+
case "storePickup":
|
|
111
|
+
return .storePickup
|
|
112
|
+
case "servicePickup":
|
|
113
|
+
return .servicePickup
|
|
114
|
+
case "shipping":
|
|
115
|
+
fallthrough
|
|
116
|
+
default:
|
|
117
|
+
return .shipping
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
13
121
|
@available(iOS 15.0, *)
|
|
14
122
|
internal class func createDeferredPaymentSummaryItem(item: [String : Any]) throws -> PKPaymentSummaryItem {
|
|
15
123
|
let label = item["label"] as? String ?? ""
|
|
@@ -111,6 +219,79 @@ class ApplePayUtils {
|
|
|
111
219
|
}
|
|
112
220
|
}
|
|
113
221
|
|
|
222
|
+
public class func buildShippingMethods(items: [[String : Any]]?) -> [PKShippingMethod] {
|
|
223
|
+
var shippingMethods: [PKShippingMethod] = []
|
|
224
|
+
if let items = items {
|
|
225
|
+
for item in items {
|
|
226
|
+
let shippingMethod = buildShippingMethod(item: item)
|
|
227
|
+
shippingMethods.append(shippingMethod)
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return shippingMethods
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
internal class func buildShippingMethod(item: [String : Any]) -> PKShippingMethod {
|
|
235
|
+
let label = item["label"] as? String ?? ""
|
|
236
|
+
let amount = NSDecimalNumber(string: item["amount"] as? String ?? "")
|
|
237
|
+
let shippingMethod = PKShippingMethod(
|
|
238
|
+
label: label,
|
|
239
|
+
amount: amount,
|
|
240
|
+
type: item["isPending"] as? Bool ?? false
|
|
241
|
+
? PKPaymentSummaryItemType.pending : PKPaymentSummaryItemType.final
|
|
242
|
+
)
|
|
243
|
+
shippingMethod.detail = item["detail"] as? String ?? ""
|
|
244
|
+
shippingMethod.identifier = item["identifier"] as? String ?? ""
|
|
245
|
+
if #available(iOS 15.0, *) {
|
|
246
|
+
if let startDate = item["startDate"] as? Double, let endDate = item["endDate"] as? Double {
|
|
247
|
+
let startDate = Date(timeIntervalSince1970: startDate)
|
|
248
|
+
let endDate = Date(timeIntervalSince1970: endDate)
|
|
249
|
+
shippingMethod.dateComponentsRange = PKDateComponentsRange(
|
|
250
|
+
start: Calendar.current.dateComponents([.calendar, .year, .month, .day],
|
|
251
|
+
from: startDate),
|
|
252
|
+
end: Calendar.current.dateComponents([.calendar, .year, .month, .day],
|
|
253
|
+
from: endDate)
|
|
254
|
+
)
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return shippingMethod
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
public class func buildApplePayErrors(errorItems: [NSDictionary]) throws -> (shippingAddressErrors: [Error], couponCodeErrors: [Error]) {
|
|
261
|
+
var shippingAddressErrors: [Error] = []
|
|
262
|
+
var couponCodeErrors: [Error] = []
|
|
263
|
+
|
|
264
|
+
for item in errorItems {
|
|
265
|
+
let type = item["errorType"] as? String
|
|
266
|
+
let message = item["message"] as? String
|
|
267
|
+
switch type {
|
|
268
|
+
case "InvalidShippingAddress":
|
|
269
|
+
let field = item["field"] as? String ?? "street"
|
|
270
|
+
shippingAddressErrors.append(PKPaymentRequest.paymentShippingAddressInvalidError(withKey: field, localizedDescription: message))
|
|
271
|
+
case "UnserviceableShippingAddress":
|
|
272
|
+
shippingAddressErrors.append(PKPaymentRequest.paymentShippingAddressUnserviceableError(withLocalizedDescription: message))
|
|
273
|
+
case "ExpiredCouponCode":
|
|
274
|
+
if #available(iOS 15.0, *) {
|
|
275
|
+
couponCodeErrors.append(PKPaymentRequest.paymentCouponCodeExpiredError(localizedDescription: message))
|
|
276
|
+
}
|
|
277
|
+
case "InvalidCouponCode":
|
|
278
|
+
if #available(iOS 15.0, *) {
|
|
279
|
+
couponCodeErrors.append(PKPaymentRequest.paymentCouponCodeInvalidError(localizedDescription: message))
|
|
280
|
+
}
|
|
281
|
+
default:
|
|
282
|
+
throw ApplePayUtilsError.invalidErrorType(String(describing: type))
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return (shippingAddressErrors, couponCodeErrors)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
internal class func mapToArrayOfPaymentNetworks(arrayOfStrings: [String]) throws -> [PKPaymentNetwork] {
|
|
289
|
+
let validNetworks: [PKPaymentNetwork?] = try arrayOfStrings.map { networkString in
|
|
290
|
+
return PKPaymentNetwork.init(rawValue: networkString)
|
|
291
|
+
}
|
|
292
|
+
return validNetworks.compactMap { $0 }
|
|
293
|
+
}
|
|
294
|
+
|
|
114
295
|
public class func buildPaymentSheetApplePayConfig(
|
|
115
296
|
merchantIdentifier: String?,
|
|
116
297
|
merchantCountryCode: String?,
|
|
@@ -137,6 +318,8 @@ enum ApplePayUtilsError : Error, Equatable {
|
|
|
137
318
|
case invalidCartSummaryItemType(String)
|
|
138
319
|
case missingParameter(String, String)
|
|
139
320
|
case invalidTimeInterval(String)
|
|
321
|
+
case invalidPaymentNetwork(String)
|
|
322
|
+
case invalidErrorType(String)
|
|
140
323
|
case missingMerchantId
|
|
141
324
|
case missingCountryCode
|
|
142
325
|
}
|
|
@@ -150,6 +333,10 @@ extension ApplePayUtilsError: LocalizedError {
|
|
|
150
333
|
return "Failed to create Apple Pay summary item with label: \(label). The \(parameter) item parameter is required, but none was provided."
|
|
151
334
|
case .invalidTimeInterval(let providedInterval):
|
|
152
335
|
return "Failed to create Apple Pay summary item. \(providedInterval) is not a valid timeInterval, must be one of: minute, hour, day, month, or year."
|
|
336
|
+
case .invalidPaymentNetwork(let network):
|
|
337
|
+
return "Failed to create Apple Pay summary item. \(network) is not a valid/supported payment network."
|
|
338
|
+
case .invalidErrorType(let type):
|
|
339
|
+
return "Error type: '\(type)' is not supported."
|
|
153
340
|
case .missingMerchantId:
|
|
154
341
|
return "`merchantIdentifier` is required, but none was found. Ensure you are passing this to initStripe your StripeProvider."
|
|
155
342
|
case .missingCountryCode:
|