From 961d6d1488d11079b7e787935f88a1e0289fd332 Mon Sep 17 00:00:00 2001 From: arekkubaczkowski Date: Fri, 30 Jul 2021 11:44:36 +0200 Subject: [PATCH] WIP: Google pay android implementation (#441) * chore: google pay new approach implementation * chore: clean up * chore: google pay customization * chore: add documentation, fix linter * fix: appium tests * chore: increate JVM memory size * chore: improvements, refactor * chore: bump android-emulator api level to 30 * chore: bump api level * Update e2e-tests.yml * fix: tests * chore: bump node version * chore: bump node version * chore: bump node version * chore: bump chrome driver * chore: appium conf * chore: appium conf * chore: appium conf * chore: downgrade api-level * chore: use google apis * chore: change arch * chore: update chrome driver version * chore: e2e config attempt * chore: e2e config attempt * chore: e2e conf attempt * chore: accept terms and conditions * chore: accept terms and conditions * chore: accept terms and conditions * chore: accept terms and conditions * fix: init on mount only * fix: init issue * chore: handle exception * chore: add google pay button * chore: handle dark mode * chore: clean up * chore: tests clean up * chore: clean up * chore: clean up Co-authored-by: Arkadiusz Kubaczkowski --- .github/workflows/e2e-tests.yml | 8 +- .npmrc | 2 +- .../com/reactnativestripesdk/Constants.kt | 5 + .../java/com/reactnativestripesdk/Errors.kt | 4 + .../GooglePayButtonManager.kt | 30 + .../GooglePayButtonView.kt | 28 + .../reactnativestripesdk/GooglePayFragment.kt | 173 + .../java/com/reactnativestripesdk/Mappers.kt | 27 + .../PaymentSheetFragment.kt | 2 +- .../reactnativestripesdk/StripeSdkModule.kt | 126 +- .../reactnativestripesdk/StripeSdkPackage.kt | 2 +- .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 15 + .../pay_with_googlepay_button_content.xml | 15 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 15 + .../pay_with_googlepay_button_content.xml | 15 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../googlepay_button_background_image.9.png | Bin 0 -> 1024 bytes ...epay_button_background_image_focused.9.png | Bin 0 -> 1287 bytes ...epay_button_background_image_pressed.9.png | Bin 0 -> 1111 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 508 bytes ...n_no_shadow_background_image_focused.9.png | Bin 0 -> 642 bytes ...n_no_shadow_background_image_pressed.9.png | Bin 0 -> 700 bytes .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../googlepay_button_background_image.9.png | Bin 0 -> 432 bytes ...epay_button_background_image_focused.9.png | Bin 0 -> 571 bytes ...epay_button_background_image_pressed.9.png | Bin 0 -> 484 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 219 bytes ...n_no_shadow_background_image_focused.9.png | Bin 0 -> 240 bytes ...n_no_shadow_background_image_pressed.9.png | Bin 0 -> 250 bytes .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../googlepay_button_background_image.9.png | Bin 0 -> 979 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 282 bytes .../googlepay_button_background_image.9.png | Bin 0 -> 439 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 174 bytes .../googlepay_button_background.xml | 7 + .../googlepay_button_no_shadow_background.xml | 7 + .../googlepay_button_background_image.9.png | Bin 0 -> 963 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 263 bytes .../googlepay_button_background_image.9.png | Bin 0 -> 3186 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 679 bytes .../googlepay_button_background_image.9.png | Bin 0 -> 4280 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 819 bytes .../googlepay_button_background.xml | 6 + .../googlepay_button_content.xml | 48 + .../googlepay_button_no_shadow_background.xml | 6 + .../googlepay_button_overlay.xml | 12 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../pay_with_googlepay_button_content.xml | 14 + .../googlepay_button_background.xml | 21 + .../googlepay_button_no_shadow_background.xml | 21 + .../googlepay_button_background_image.9.png | Bin 0 -> 947 bytes ...epay_button_background_image_focused.9.png | Bin 0 -> 1338 bytes ...epay_button_background_image_pressed.9.png | Bin 0 -> 1283 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 320 bytes ...n_no_shadow_background_image_focused.9.png | Bin 0 -> 563 bytes ...n_no_shadow_background_image_pressed.9.png | Bin 0 -> 587 bytes .../googlepay_button_background_image.9.png | Bin 0 -> 3413 bytes ...epay_button_background_image_focused.9.png | Bin 0 -> 4308 bytes ...epay_button_background_image_pressed.9.png | Bin 0 -> 3713 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 1309 bytes ...n_no_shadow_background_image_focused.9.png | Bin 0 -> 1628 bytes ...n_no_shadow_background_image_pressed.9.png | Bin 0 -> 1470 bytes .../googlepay_button_background_image.9.png | Bin 0 -> 4463 bytes ...epay_button_background_image_focused.9.png | Bin 0 -> 5839 bytes ...epay_button_background_image_pressed.9.png | Bin 0 -> 4857 bytes ...ay_button_no_shadow_background_image.9.png | Bin 0 -> 1066 bytes ...n_no_shadow_background_image_focused.9.png | Bin 0 -> 1410 bytes ...n_no_shadow_background_image_pressed.9.png | Bin 0 -> 1421 bytes .../pay_with_googlepay_button_content.xml | 15 + .../drawable/googlepay_button_background.xml | 18 + .../res/drawable/googlepay_button_content.xml | 48 + .../googlepay_button_no_shadow_background.xml | 18 + .../res/drawable/googlepay_button_overlay.xml | 11 + .../pay_with_googlepay_button_content.xml | 14 + .../res/layout-night/googlepay_button.xml | 31 + .../pay_with_googlepay_button.xml | 31 + .../src/main/res/layout/googlepay_button.xml | 31 + .../res/layout/googlepay_button_no_shadow.xml | 31 + .../res/layout/pay_with_googlepay_button.xml | 31 + .../pay_with_googlepay_button_no_shadow.xml | 31 + .../res/values-night/googlepay_strings.xml | 12 + .../src/main/res/values/googlepay_strings.xml | 12 + docs/GooglePay.md | 176 + e2e/payments.test.android.ts | 4 +- e2e/screenObject/BasicPaymentScreen.ts | 2 +- example/android/gradle.properties | 2 +- example/ios/Podfile | 1 - example/ios/Podfile.lock | 474 +- example/server/index.ts | 2 + example/src/App.tsx | 2 + example/src/components/PaymentScreen.tsx | 8 +- example/src/screens/GooglePayScreen.tsx | 127 + example/src/screens/HomeScreen.tsx | 10 + .../src/screens/PaymentsUICompleteScreen.tsx | 19 +- .../src/screens/PaymentsUICustomScreen.tsx | 26 +- src/NativeStripeSdk.tsx | 11 + src/components/GooglePayButton.tsx | 60 + src/functions.ts | 63 + src/hooks/useGooglePay.tsx | 58 + src/hooks/useStripe.tsx | 35 + src/index.tsx | 5 + src/types/Errors.ts | 6 + src/types/GooglePay.ts | 78 + src/types/index.ts | 28 + wdio.android.js | 3 +- yarn.lock | 4046 +++++++++-------- 156 files changed, 4621 insertions(+), 2324 deletions(-) create mode 100644 android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt create mode 100644 android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt create mode 100644 android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt create mode 100755 android/src/main/res/drawable-ar-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-bg-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ca-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-cs-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-da-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-de-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-el-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-es-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-et-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-fi-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-fr-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-hr-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-id-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-it-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ja-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ko-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-ms-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-night-hdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-night-hdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-night-mdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-night-mdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-night-v21/googlepay_button_background.xml create mode 100755 android/src/main/res/drawable-night-v21/googlepay_button_no_shadow_background.xml create mode 100755 android/src/main/res/drawable-night-xhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-night-xhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-night-xxhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-night-xxhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-night-xxxhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-night-xxxhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-night/googlepay_button_background.xml create mode 100755 android/src/main/res/drawable-night/googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-night/googlepay_button_no_shadow_background.xml create mode 100755 android/src/main/res/drawable-night/googlepay_button_overlay.xml create mode 100755 android/src/main/res/drawable-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-nl-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-no-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-pl-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-pt-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-pt/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ru-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sk-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sl-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sr-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sv-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-th-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-tr-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-uk-night/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable-v21/googlepay_button_background.xml create mode 100755 android/src/main/res/drawable-v21/googlepay_button_no_shadow_background.xml create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image_focused.9.png create mode 100755 android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png create mode 100755 android/src/main/res/drawable-zh/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/drawable/googlepay_button_background.xml create mode 100755 android/src/main/res/drawable/googlepay_button_content.xml create mode 100755 android/src/main/res/drawable/googlepay_button_no_shadow_background.xml create mode 100755 android/src/main/res/drawable/googlepay_button_overlay.xml create mode 100755 android/src/main/res/drawable/pay_with_googlepay_button_content.xml create mode 100755 android/src/main/res/layout-night/googlepay_button.xml create mode 100755 android/src/main/res/layout-night/pay_with_googlepay_button.xml create mode 100755 android/src/main/res/layout/googlepay_button.xml create mode 100755 android/src/main/res/layout/googlepay_button_no_shadow.xml create mode 100755 android/src/main/res/layout/pay_with_googlepay_button.xml create mode 100755 android/src/main/res/layout/pay_with_googlepay_button_no_shadow.xml create mode 100755 android/src/main/res/values-night/googlepay_strings.xml create mode 100755 android/src/main/res/values/googlepay_strings.xml create mode 100644 docs/GooglePay.md create mode 100644 example/src/screens/GooglePayScreen.tsx create mode 100644 src/components/GooglePayButton.tsx create mode 100644 src/hooks/useGooglePay.tsx create mode 100644 src/types/GooglePay.ts diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index eec7b0c79..d858b9071 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -29,7 +29,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v2.1.5 with: - node-version: 14.4.0 + node-version: 14.15.0 - name: Install React Native CLI run: npm install react-native-cli @@ -41,7 +41,9 @@ jobs: - name: Run Android Emulator and app uses: reactivecircus/android-emulator-runner@v2 with: - api-level: 29 + api-level: 28 + target: google_apis + arch: x86 script: | yarn run-example-android sleep 15 @@ -88,7 +90,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v2.1.5 with: - node-version: 14.4.0 + node-version: 14.15.0 - name: Install React Native CLI run: | diff --git a/.npmrc b/.npmrc index 409911452..c17894564 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1 @@ -chromedriver_version=74.0.3729.6 +chromedriver_version=2.44 diff --git a/android/src/main/java/com/reactnativestripesdk/Constants.kt b/android/src/main/java/com/reactnativestripesdk/Constants.kt index 94791591c..f615e5f59 100644 --- a/android/src/main/java/com/reactnativestripesdk/Constants.kt +++ b/android/src/main/java/com/reactnativestripesdk/Constants.kt @@ -5,3 +5,8 @@ var ON_PAYMENT_OPTION_ACTION = "com.reactnativestripesdk.PAYMENT_OPTION_ACTION" var ON_CONFIGURE_FLOW_CONTROLLER = "com.reactnativestripesdk.CONFIGURE_FLOW_CONTROLLER_ACTION" var ON_INIT_PAYMENT_SHEET = "com.reactnativestripesdk.INIT_PAYMENT_SHEET" var ON_FRAGMENT_CREATED = "com.reactnativestripesdk.FRAGMENT_CREATED_ACTION" + +var ON_GOOGLE_PAY_FRAGMENT_CREATED = "com.reactnativestripesdk.ON_GOOGLE_PAY_FRAGMENT_CREATED" +var ON_INIT_GOOGLE_PAY = "com.reactnativestripesdk.ON_INIT_GOOGLE_PAY" +var ON_GOOGLE_PAY_RESULT = "com.reactnativestripesdk.ON_GOOGLE_PAY_RESULT" +var ON_GOOGLE_PAYMENT_METHOD_RESULT = "com.reactnativestripesdk.ON_GOOGLE_PAYMENT_METHOD_RESULT" diff --git a/android/src/main/java/com/reactnativestripesdk/Errors.kt b/android/src/main/java/com/reactnativestripesdk/Errors.kt index eea67eb43..8b8229356 100644 --- a/android/src/main/java/com/reactnativestripesdk/Errors.kt +++ b/android/src/main/java/com/reactnativestripesdk/Errors.kt @@ -37,6 +37,10 @@ enum class PaymentSheetErrorType { Failed, Canceled } +enum class GooglePayErrorType { + Failed, Canceled, Unknown +} + internal fun mapError(code: String, message: String?, localizedMessage: String?, declineCode: String?, type: String?, stripeErrorCode: String?): WritableMap { val map: WritableMap = WritableNativeMap() val details: WritableMap = WritableNativeMap() diff --git a/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt b/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt new file mode 100644 index 000000000..19d87e49d --- /dev/null +++ b/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt @@ -0,0 +1,30 @@ +package com.reactnativestripesdk + +import com.facebook.react.uimanager.SimpleViewManager +import com.facebook.react.uimanager.ThemedReactContext +import com.facebook.react.uimanager.annotations.ReactProp + +class GooglePayButtonManager : SimpleViewManager() { + override fun getName(): String { + return REACT_CLASS + } + + override fun onAfterUpdateTransaction(view: GooglePayButtonView) { + super.onAfterUpdateTransaction(view) + + view.initialize() + } + + @ReactProp(name = "buttonType") + fun buttonType(view: GooglePayButtonView, buttonType: String) { + view.setType(buttonType) + } + + override fun createViewInstance(reactContext: ThemedReactContext): GooglePayButtonView { + return GooglePayButtonView(reactContext) + } + + companion object { + const val REACT_CLASS = "GooglePayButton" + } +} diff --git a/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt b/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt new file mode 100644 index 000000000..b8f0f9ad9 --- /dev/null +++ b/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt @@ -0,0 +1,28 @@ +package com.reactnativestripesdk + +import android.view.LayoutInflater +import android.widget.FrameLayout +import com.facebook.react.uimanager.ThemedReactContext + +class GooglePayButtonView(private val context: ThemedReactContext) : FrameLayout(context) { + var buttonType: String? = null + + fun initialize() { + val type = when (buttonType) { + "pay" -> R.layout.pay_with_googlepay_button_no_shadow + "pay_shadow" -> R.layout.pay_with_googlepay_button + "standard_shadow" -> R.layout.googlepay_button + "standard" -> R.layout.googlepay_button_no_shadow + else -> R.layout.googlepay_button + } + val button = LayoutInflater.from(context).inflate( + type, null + ) + + addView(button) + } + + fun setType(type: String) { + buttonType = type + } +} diff --git a/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt b/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt new file mode 100644 index 000000000..c19951c58 --- /dev/null +++ b/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt @@ -0,0 +1,173 @@ +package com.reactnativestripesdk + +import android.content.Intent +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import androidx.fragment.app.Fragment +import com.facebook.react.bridge.WritableNativeMap +import com.stripe.android.googlepaylauncher.GooglePayEnvironment +import com.stripe.android.googlepaylauncher.GooglePayLauncher +import com.stripe.android.googlepaylauncher.GooglePayPaymentMethodLauncher +import com.stripe.android.model.StripeIntent + +class GooglePayFragment : Fragment() { + private var googlePayLauncher: GooglePayLauncher? = null + private var googlePayMethodLauncher: GooglePayPaymentMethodLauncher? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + return FrameLayout(requireActivity()).also { + it.visibility = View.GONE + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val testEnv = arguments?.getBoolean("testEnv") + val merchantName = arguments?.getString("merchantName").orEmpty() + val countryCode = arguments?.getString("countryCode").orEmpty() + val isEmailRequired = arguments?.getBoolean("isEmailRequired") ?: false + val existingPaymentMethodRequired = arguments?.getBoolean("existingPaymentMethodRequired") ?: false + + val billingAddressConfigBundle = arguments?.getBundle("billingAddressConfig") ?: Bundle() + val isRequired = billingAddressConfigBundle.getBoolean("isRequired") + val formatString = billingAddressConfigBundle.getString("format").orEmpty() + val isPhoneNumberRequired = billingAddressConfigBundle.getBoolean("isPhoneNumberRequired") + + val billingAddressConfig = mapToGooglePayPaymentMethodLauncherBillingAddressConfig(formatString, isRequired, isPhoneNumberRequired) + + googlePayMethodLauncher = GooglePayPaymentMethodLauncher( + fragment = this, + config = GooglePayPaymentMethodLauncher.Config( + environment = if (testEnv == true) GooglePayEnvironment.Test else GooglePayEnvironment.Production, + merchantCountryCode = countryCode, + merchantName = merchantName, + billingAddressConfig = billingAddressConfig, + isEmailRequired = isEmailRequired, + existingPaymentMethodRequired = existingPaymentMethodRequired + ), + readyCallback = ::onGooglePayReady, + resultCallback = ::onGooglePayResult + ) + + val paymentMethodBillingAddressConfig = mapToGooglePayLauncherBillingAddressConfig(formatString, isRequired, isPhoneNumberRequired) + googlePayLauncher = GooglePayLauncher( + fragment = this, + config = GooglePayLauncher.Config( + environment = if (testEnv == true) GooglePayEnvironment.Test else GooglePayEnvironment.Production, + merchantCountryCode = countryCode, + merchantName = merchantName, + billingAddressConfig = paymentMethodBillingAddressConfig, + isEmailRequired = isEmailRequired, + existingPaymentMethodRequired = existingPaymentMethodRequired + ), + readyCallback = ::onGooglePayReady, + resultCallback = ::onGooglePayResult + ) + + val intent = Intent(ON_GOOGLE_PAY_FRAGMENT_CREATED) + activity?.sendBroadcast(intent) + } + + fun presentForPaymentIntent(clientSecret: String) { + val launcher = googlePayLauncher ?: run { + val intent = Intent(ON_GOOGLE_PAY_RESULT) + intent.putExtra("error", "GooglePayLauncher is not initialized.") + activity?.sendBroadcast(intent) + return + } + runCatching { + launcher.presentForPaymentIntent(clientSecret) + }.onFailure { + val intent = Intent(ON_GOOGLE_PAY_RESULT) + intent.putExtra("error", it.localizedMessage) + activity?.sendBroadcast(intent) + } + } + + fun presentForSetupIntent(clientSecret: String, currencyCode: String) { + val launcher = googlePayLauncher ?: run { + val intent = Intent(ON_GOOGLE_PAY_RESULT) + intent.putExtra("error", "GooglePayLauncher is not initialized.") + activity?.sendBroadcast(intent) + return + } + runCatching { + launcher.presentForSetupIntent(clientSecret, currencyCode) + }.onFailure { + val intent = Intent(ON_GOOGLE_PAY_RESULT) + intent.putExtra("error", it.localizedMessage) + activity?.sendBroadcast(intent) + } + } + + fun createPaymentMethod(currencyCode: String, amount: Int) { + val launcher = googlePayMethodLauncher ?: run { + val intent = Intent(ON_GOOGLE_PAYMENT_METHOD_RESULT) + intent.putExtra("error", "GooglePayPaymentMethodLauncher is not initialized.") + activity?.sendBroadcast(intent) + return + } + + runCatching { + launcher.present( + currencyCode = currencyCode, + amount = amount + ) + }.onFailure { + val intent = Intent(ON_GOOGLE_PAYMENT_METHOD_RESULT) + intent.putExtra("error", it.localizedMessage) + activity?.sendBroadcast(intent) + } + } + + private fun onGooglePayReady(isReady: Boolean) { + val intent = Intent(ON_INIT_GOOGLE_PAY) + intent.putExtra("isReady", isReady) + activity?.sendBroadcast(intent) + } + + private fun onGooglePayResult(result: GooglePayLauncher.Result) { + val intent = Intent(ON_GOOGLE_PAY_RESULT) + intent.putExtra("paymentResult", result) + activity?.sendBroadcast(intent) + } + + private fun onGooglePayResult(result: GooglePayPaymentMethodLauncher.Result) { + val intent = Intent(ON_GOOGLE_PAYMENT_METHOD_RESULT) + intent.putExtra("paymentResult", result) + activity?.sendBroadcast(intent) + } + + private fun mapToGooglePayLauncherBillingAddressConfig(formatString: String, isRequired: Boolean, isPhoneNumberRequired: Boolean): GooglePayLauncher.BillingAddressConfig { + val format = when (formatString) { + "FULL" -> GooglePayLauncher.BillingAddressConfig.Format.Full + "MIN" -> GooglePayLauncher.BillingAddressConfig.Format.Min + else -> GooglePayLauncher.BillingAddressConfig.Format.Min + } + return GooglePayLauncher.BillingAddressConfig( + isRequired = isRequired, + format = format, + isPhoneNumberRequired = isPhoneNumberRequired + ) + } + + private fun mapToGooglePayPaymentMethodLauncherBillingAddressConfig(formatString: String, isRequired: Boolean, isPhoneNumberRequired: Boolean): GooglePayPaymentMethodLauncher.BillingAddressConfig { + val format = when (formatString) { + "FULL" -> GooglePayPaymentMethodLauncher.BillingAddressConfig.Format.Full + "MIN" -> GooglePayPaymentMethodLauncher.BillingAddressConfig.Format.Min + else -> GooglePayPaymentMethodLauncher.BillingAddressConfig.Format.Min + } + return GooglePayPaymentMethodLauncher.BillingAddressConfig( + isRequired = isRequired, + format = format, + isPhoneNumberRequired = isPhoneNumberRequired + ) + } +} diff --git a/android/src/main/java/com/reactnativestripesdk/Mappers.kt b/android/src/main/java/com/reactnativestripesdk/Mappers.kt index d17557cf7..2be43650a 100644 --- a/android/src/main/java/com/reactnativestripesdk/Mappers.kt +++ b/android/src/main/java/com/reactnativestripesdk/Mappers.kt @@ -1,5 +1,7 @@ package com.reactnativestripesdk +import android.os.Bundle +import android.util.Log import com.facebook.react.bridge.* import com.stripe.android.PaymentAuthConfig import com.stripe.android.model.* @@ -702,3 +704,28 @@ fun mapToPaymentIntentFutureUsage(type: String?): ConfirmPaymentIntentParams.Set else -> null } } + +fun toBundleObject(readableMap: ReadableMap?): Bundle? { + val result = Bundle() + if (readableMap == null) { + return result + } + val iterator = readableMap.keySetIterator() + while (iterator.hasNextKey()) { + val key = iterator.nextKey() + when (readableMap.getType(key)) { + ReadableType.Null -> result.putString(key, null) + ReadableType.Boolean -> result.putBoolean(key, readableMap.getBoolean(key)) + ReadableType.Number -> try { + result.putInt(key, readableMap.getInt(key)) + } catch (e: Exception) { + result.putDouble(key, readableMap.getDouble(key)) + } + ReadableType.String -> result.putString(key, readableMap.getString(key)) + ReadableType.Map -> result.putBundle(key, toBundleObject(readableMap.getMap(key))) + ReadableType.Array -> Log.e("toBundleException", "Cannot put arrays of objects into bundles. Failed on: $key.") + else -> Log.e("toBundleException", "Could not convert object with key: $key.") + } + } + return result +} diff --git a/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt b/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt index 7d74da5fc..47ae4d5cf 100644 --- a/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +++ b/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt @@ -41,7 +41,7 @@ class PaymentSheetFragment : Fragment() { val merchantDisplayName = arguments?.getString("merchantDisplayName").orEmpty() val customerId = arguments?.getString("customerId").orEmpty() val customerEphemeralKeySecret = arguments?.getString("customerEphemeralKeySecret").orEmpty() - val countryCode = arguments?.getString("countryCode").orEmpty() + val countryCode = arguments?.getString("merchantCountryCode").orEmpty() val googlePayEnabled = arguments?.getBoolean("googlePay") val testEnv = arguments?.getBoolean("testEnv") paymentIntentClientSecret = arguments?.getString("paymentIntentClientSecret").orEmpty() diff --git a/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt b/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt index f8dbdeb7a..6992023a6 100644 --- a/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +++ b/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt @@ -14,6 +14,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import com.facebook.react.bridge.* import com.stripe.android.* +import com.stripe.android.googlepaylauncher.GooglePayLauncher +import com.stripe.android.googlepaylauncher.GooglePayPaymentMethodLauncher import com.stripe.android.model.* import com.stripe.android.paymentsheet.PaymentSheetResult import com.stripe.android.view.AddPaymentMethodActivityStarter @@ -41,6 +43,10 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S private var initPaymentSheetPromise: Promise? = null private var confirmPaymentClientSecret: String? = null + private var googlePayFragment: GooglePayFragment? = null + private var initGooglePayPromise: Promise? = null + private var presentGooglePayPromise: Promise? = null + private val mActivityEventListener = object : BaseActivityEventListener() { override fun onActivityResult(activity: Activity, requestCode: Int, resultCode: Int, data: Intent?) { if (::stripe.isInitialized) { @@ -125,6 +131,7 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S }) paymentSheetFragment?.activity?.activityResultRegistry?.dispatchResult(requestCode, resultCode, data) + googlePayFragment?.activity?.activityResultRegistry?.dispatchResult(requestCode, resultCode, data) try { val result = AddPaymentMethodActivityStarter.Result.fromIntent(data) @@ -158,6 +165,51 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S ) } + private val googlePayReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent) { + if (intent.action == ON_GOOGLE_PAY_FRAGMENT_CREATED) { + googlePayFragment = (currentActivity as AppCompatActivity).supportFragmentManager.findFragmentByTag("google_pay_launch_fragment") as GooglePayFragment + } + if (intent.action == ON_INIT_GOOGLE_PAY) { + initGooglePayPromise?.resolve(WritableNativeMap()) + } + if (intent.action == ON_GOOGLE_PAYMENT_METHOD_RESULT) { + intent.extras?.getString("error")?.let { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), it)) + return + } + when (val result = intent.extras?.getParcelable("paymentResult")) { + is GooglePayPaymentMethodLauncher.Result.Completed -> { + presentGooglePayPromise?.resolve(createResult("paymentMethod", mapFromPaymentMethod(result.paymentMethod))) + } + GooglePayPaymentMethodLauncher.Result.Canceled -> { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), "Google Pay has been canceled")) + } + is GooglePayPaymentMethodLauncher.Result.Failed -> { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), result.error)) + } + } + } + if (intent.action == ON_GOOGLE_PAY_RESULT) { + intent.extras?.getString("error")?.let { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), it)) + return + } + when (val result = intent.extras?.getParcelable("paymentResult")) { + GooglePayLauncher.Result.Completed -> { + presentGooglePayPromise?.resolve(WritableNativeMap()) + } + GooglePayLauncher.Result.Canceled -> { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), "Google Pay has been canceled")) + } + is GooglePayLauncher.Result.Failed -> { + presentGooglePayPromise?.resolve(createError(GooglePayErrorType.Failed.toString(), result.error)) + } + } + } + } + } + private val mPaymentSheetReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent) { if (intent.action == ON_FRAGMENT_CREATED) { @@ -241,6 +293,11 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S this.currentActivity?.registerReceiver(mPaymentSheetReceiver, IntentFilter(ON_FRAGMENT_CREATED)); this.currentActivity?.registerReceiver(mPaymentSheetReceiver, IntentFilter(ON_INIT_PAYMENT_SHEET)); + this.currentActivity?.registerReceiver(googlePayReceiver, IntentFilter(ON_GOOGLE_PAY_FRAGMENT_CREATED)) + this.currentActivity?.registerReceiver(googlePayReceiver, IntentFilter(ON_INIT_GOOGLE_PAY)) + this.currentActivity?.registerReceiver(googlePayReceiver, IntentFilter(ON_GOOGLE_PAY_RESULT)) + this.currentActivity?.registerReceiver(googlePayReceiver, IntentFilter(ON_GOOGLE_PAYMENT_METHOD_RESULT)) + promise.resolve(null) } @@ -252,30 +309,11 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S promise.resolve(createError("Failed", "Activity doesn't exist")) return } - val customFlow = getBooleanOrNull(params, "customFlow") ?: false - val customerId = getValOr(params, "customerId") - val customerEphemeralKeySecret = getValOr(params, "customerEphemeralKeySecret") - val paymentIntentClientSecret = getValOr(params, "paymentIntentClientSecret") - val setupIntentClientSecret = getValOr(params, "setupIntentClientSecret") - val merchantDisplayName = getValOr(params, "merchantDisplayName") - val countryCode = getValOr(params, "merchantCountryCode") - val testEnv = getBooleanOrNull(params, "testEnv") ?: false - val googlePay = getBooleanOrNull(params, "googlePay") ?: false this.initPaymentSheetPromise = promise val fragment = PaymentSheetFragment().also { - val bundle = Bundle() - bundle.putString("customerId", customerId) - bundle.putString("customerEphemeralKeySecret", customerEphemeralKeySecret) - bundle.putString("paymentIntentClientSecret", paymentIntentClientSecret) - bundle.putString("setupIntentClientSecret", setupIntentClientSecret) - bundle.putString("merchantDisplayName", merchantDisplayName) - bundle.putString("countryCode", countryCode) - bundle.putBoolean("customFlow", customFlow) - bundle.putBoolean("testEnv", testEnv) - bundle.putBoolean("googlePay", googlePay) - + val bundle = toBundleObject(params) it.arguments = bundle } activity.supportFragmentManager.beginTransaction() @@ -523,6 +561,54 @@ class StripeSdkModule(reactContext: ReactApplicationContext, cardFieldManager: S } } + @ReactMethod + fun initGooglePay(params: ReadableMap, promise: Promise) { + val activity = currentActivity as AppCompatActivity + val fragment = GooglePayFragment().also { + val bundle = toBundleObject(params) + it.arguments = bundle + } + + initGooglePayPromise = promise + + activity.supportFragmentManager.beginTransaction() + .add(fragment, "google_pay_launch_fragment") + .commit() + } + + @ReactMethod + fun presentGooglePay(params: ReadableMap, promise: Promise) { + val clientSecret = getValOr(params, "clientSecret") ?: run { + promise.resolve(createError(GooglePayErrorType.Failed.toString(), "you must provide clientSecret")) + return + } + presentGooglePayPromise = promise + if (getBooleanOrFalse(params, "forSetupIntent")) { + val currencyCode = getValOr(params, "currencyCode") ?: run { + promise.resolve(createError(GooglePayErrorType.Failed.toString(), "you must provide currencyCode")) + return + } + googlePayFragment?.presentForSetupIntent(clientSecret, currencyCode) + } else { + googlePayFragment?.presentForPaymentIntent(clientSecret) + } + } + + @ReactMethod + fun createGooglePayPaymentMethod(params: ReadableMap, promise: Promise) { + val currencyCode = getValOr(params, "currencyCode", null) ?: run { + promise.resolve(createError(GooglePayErrorType.Failed.toString(), "you must provide currencyCode")) + return + } + val amount = getIntOrNull(params, "amount") ?: run { + promise.resolve(createError(GooglePayErrorType.Failed.toString(), "you must provide amount")) + return + } + presentGooglePayPromise = promise + googlePayFragment?.createPaymentMethod(currencyCode, amount) + } + + /// Check paymentIntent.nextAction is voucher-based payment method. /// If it's voucher-based, the paymentIntent status stays in requiresAction until the voucher is paid or expired. /// Currently only OXXO payment is voucher-based. diff --git a/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt b/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt index a140b026c..e37bf9fdf 100644 --- a/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +++ b/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt @@ -21,6 +21,6 @@ class StripeSdkPackage : ReactPackage { if (!this::cardFieldManager.isInitialized) { cardFieldManager = StripeSdkCardViewManager() } - return Arrays.asList>(cardFieldManager, AuBECSDebitFormViewManager(), StripeContainerManager()) + return Arrays.asList>(cardFieldManager, AuBECSDebitFormViewManager(), StripeContainerManager(), GooglePayButtonManager()) } } diff --git a/android/src/main/res/drawable-ar-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ar-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..1fec38767 --- /dev/null +++ b/android/src/main/res/drawable-ar-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..1f8f2fb68 --- /dev/null +++ b/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-bg-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-bg-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..1f3c00268 --- /dev/null +++ b/android/src/main/res/drawable-bg-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..628df018f --- /dev/null +++ b/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ca-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ca-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..c234377c9 --- /dev/null +++ b/android/src/main/res/drawable-ca-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..17310dd69 --- /dev/null +++ b/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-cs-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-cs-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..91fc12463 --- /dev/null +++ b/android/src/main/res/drawable-cs-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..64c604fa6 --- /dev/null +++ b/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-da-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-da-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..4162dd38a --- /dev/null +++ b/android/src/main/res/drawable-da-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..ad631165a --- /dev/null +++ b/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-de-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-de-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..8ec9aa3c0 --- /dev/null +++ b/android/src/main/res/drawable-de-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..e15fdac7c --- /dev/null +++ b/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-el-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-el-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..132e08909 --- /dev/null +++ b/android/src/main/res/drawable-el-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..91689728e --- /dev/null +++ b/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-es-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-es-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..4bc0b60b0 --- /dev/null +++ b/android/src/main/res/drawable-es-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..121dd4092 --- /dev/null +++ b/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-et-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-et-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..e91d6ef8e --- /dev/null +++ b/android/src/main/res/drawable-et-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..63c1c997f --- /dev/null +++ b/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-fi-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-fi-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..fc67d5090 --- /dev/null +++ b/android/src/main/res/drawable-fi-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..c0bb35b9b --- /dev/null +++ b/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-fr-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-fr-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..49a158fb0 --- /dev/null +++ b/android/src/main/res/drawable-fr-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..2028253ec --- /dev/null +++ b/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..1d6c0e37306c3eb5891bd28686eaf14ba97a8a93 GIT binary patch literal 1024 zcmV+b1poVqP)Q3dJ3PRPF*WdL3dDIT zKp2ayS+l0(i`TC^$H&L-OHNMyr29y5t>Fm?2}j?&dDCOV#*L-4u3fXkQ}ycAGdV+X z0rLGe0SpiY-78nF2pq&-tgriSC36pl@87?#Hfz=_C%nO<0R-&=#DIa3a-0=8R;^l9 zIw~e+2Y+9p?)#M#8y|mk^XAQ!;SG~woGC6qoDR`UIGnHtZ{5Ay%a{y{RPuwzkB4#) zdEgOVzn>BpAjWiHs{|=Z;fScH6S~DJDk|zs0Aoc&zI9xt!~o)acBp(hLhSa^iHV8f zRs+I4MFcZe22;W(#5hYl18K@fi9^X}QQTqH*Qv`&MRdp)^3DLAd zDFf2BZK?qRuYVc{0U;m+gn;M-gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@F zKnMr{As_^V{!v9h2nYcoAOwVfqz)higl-|4+*9S(pd&4KwL8lEo~nnN%pX2{xL`FP z+|w2Fo6H{Wy6@h-caGKKAxDoNpC>R@B}I4L9q;^_hUh(|#-u3kM_QXAGa&&#+;RDmF-q`smE z1BVRjxnRc%IA1}Rf`HMR@dW9H65 zE=O2cSiV3_D{GUrpb%MZEJ|{_5T)2%3FIbjEJ~g3|-7ba74eEPiLmMJoLpwYKI$)Tm zGTr2M@$JaS?c$KdV%U3v-CjIEl1fTm-p~lG&ld3Ze z&iVSk=Qi%21OCO$`j_KB*l4r7_pq!3b1D875c?$0KmYteh)$h49c%|%gc{LEvP926w4LH)hSf~#OtrWdu=??Z&1%ZgU!AJhFb#$ zjj{#~_D2lhft-8x8Dhq2`;C74gHMZ_arIPo>U1P(bb(?usSLn)^Ue2)Vq6jZ2aWt? z{=%i^j-9)#eaWO%UtjNwNG1(y*X}*m!bQtW4#(6J1LnW;&IbZ&tE{X%(pHLHzXJ$J zp*sTx#vMQ4q^RC!NWTFie%Z8Xt7RBS1_wKz=i4~6Z>Ql_vDX2A7^C1o(jfYFav{hYwdQ9&-0}a%z zXVf9Q63D{+lf0H8!^c^?!7eS98xI=?5J(4&M&nWvgTb@niT+E_sd1uQieV$h zTYNg+RL43Lzl>M^IBG zAT(r1A*2ve2z^jRKtL^#Q;{TmFxA_0-@AM%aE18{Z-75ouvtNAq?K@$mm^**5 zY2<)PU~yTxY^B+Y*YwisZ{O#+*4=hPG)uW5B(*00n{Z-Q|A8Y-m~Y@W@iPp#!3GW) zZGIc>F^{oef$Zvr$l#Z$WbBe#@3^=7x8ElgJ1u60k9vk-?b`Lb#q9e?&(-(b|H$=< z61+6sFXQQ`0zpO73U9gno?E{BCO!wlho2Np37s0#7mxIx$GiL;@&D|PTrpE(n0)yHdEjnI4Hd)w;^L_C_S|8%kpqDuMOB+W{OGeUfBM;Xmz!foqhxNIi z2v2$JiRWLFRkel4f+d0=oZpn^&eN5dI`AA(Rj*c*fFLnV6BV_2MO9TRsVb1wfgF*m zSXCXA)u1Rab`2ijva+(1yaMPrIWvn`b6Q}YDjH2$~KvpEEwBXUK~$lZ2!LmA%A xZu0(n1Hl35cZa|U{dRW<#9z5P1b(34+pmNjNZGx?@4f&4002ovPDHLkV1jl)eZ&9& literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-hdpi/googlepay_button_background_image_pressed.9.png b/android/src/main/res/drawable-hdpi/googlepay_button_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..337c9325c922055a537854d9e17faf89510da6f3 GIT binary patch literal 1111 zcmV-d1gQIoP)uZ2XV0Fw5sa}s%SgXbxzERztUu$3Nf%{|N(=#l^+t<=^wQZQC|KW2}J1VkyY~Rwyevc8sbpbU`Du zLNl}@2LKYGNC7cGV1hb)LQLLF*9+ThwxUT%NyXw^uHuLmjFpJSF!VtyH0xYDazHM~ z$#Bd+frzdEVNAAu{raj8A3hxX#_K&72n62y1A$;ngx~+s>-ArGoSHgf^XARf^nn8l zBd5lV8|M?C{0ij9+XOH`6m-vBzHIe)e5W~xOyh|H@}i<*d?4^P)9dwKyn6Mj-lnfA#7*CNfjJ zeEs@X0%H|y{MHd%@&gcI?Qn5-Se?%5KA-=i*?@R`zE8=F)qqR5LyWcL&pj<#*fB3I-r1%%tGu{e=g+yWq0T`wmGq-Re7i21?*f?Oj2gn$qb zQ|vC`10jb5{{{rLfJtf@c_8GF$N?cB1jGcp4LKwdK+NP8atHw-Advz>wG26gY8i3} z0U;n}t7WK`p<0G&8FB~#As|%C&^vcj%g{S_1cZQu2ZU-Fc_8Evs%6L_**S%1#*jaS zD4bLEdcB{`27~AHMLee}eUdpfHT}NXYMHe3^hZ)BnSXcIegFQ0bI?*@7I&c4?mQHm81 zKA-=~)6~?AU3>PeA2(sbaJ$Q8H+p5zWr|#l+XeB*p1TmaA}J{;r4n_$rd`#Otg71H zrl`HFOdDWP)IoM0N|Xk)K_j%<6xKUSJ98!T7r3^@*ACnPqC2FzG6BWHp(HU@C7JI! zc2$i_R#h8!jYDxd6^GiUbu#QRVB&;8le@Mp&dCO7rDM&iOz0J2D+SV@mT5XhE}n&8_tmE?55uT|K`&n5aE0} d1b(34*EfrK!PsG>4afih002ovPDHLkV1oF}1cm?r literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..affa0d38c8119a9473672fb37ef9743b8497aa42 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^Rv^s51|%Qu_R?TrU_9*U;uuoF`1UrZJ8Pf>+XIhn zOY8-lI2OuJ)lE4&P1XCweqO=McXQsGJioJcr+3$#t8+h_u0Orwx}W)(m$g6NoUWY1 z`grbMS=avsW%8kS&5zCL*z(@!^*p1($yr-Clh@1-`5be0ug7zqX={5OCM?q6J3D)~ z(WAGsU$_1H9l(B=U$$?SVTAUzIluExsN_rE-sgAuO9nTW?Sz>>3YUks+{}>+TOH)g zacfG#+KA6N`#AP~Pi!rXSNf;sIjLFd*RNUg)2=38BFp6yj&>bdUnDn2FJfjds_%WENcZeNjAT>G6$HAN6Nns1C6U zeAUakD?+FF^InBV^8e!vB}0o#E(D%u6I*(3Q%>Afne1bJ-?{@cB)`X2=1q3t&(fH* zY_al5Yjd|b#|_<9icjC^*=*hUIEt~_Au78+@phAv#;xs9KP_L~tXQxr^VEBV8Jco( ocTVb@*1vAund5Bw>E>@nt0~hZMJBPY0>&zXr>mdKI;Vst09%OQW&i*H literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image_focused.9.png b/android/src/main/res/drawable-hdpi/googlepay_button_no_shadow_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b82ca103aa90baa59e29bf784c763a415255f1c9 GIT binary patch literal 642 zcmV-|0)737P)Nklfm_ls4L2QhI(b~3mOR=qSp*ww&wT<4ttG?Zf(bu{< z&Bu(fD4M3tzIX4@Qq6Di_@CE9-bcQ8~BVET$Ot8%1~aT)%EE>>>(#NIulm|xV4L7ddAF!4P>IOzL~>~Lj) z-v|9aKMva`{cSHqTO?>v`d*hrNmQQqx+F?tltjmXWQ;_ssYN9bZI8&+wMXP+AQH4j z_YP)+YXJM6v`nS( z%zOV@HTYQp*3g))(Kcvf1CG!W;B?N2`8bOoBbDEv4Rr4n=vLM3m$ED`StvW%i>$!> z>B-%0=em36g7ZH39_|sm-_vgl=BLBY=frR>?CxEs(e`5TFMzo!isFKW-rnkWRgIcN zKF`ga9?c-u0>DQWN@tQRr>Bv=7(2T--_KZ|w2&qR_??AP;c0YB)+a2o02bImbo4aZ zKn040QguaRPa$H_2aD|;2|Y}O1}#)5X*)`&UwFIubfL-Xo2P`**7Zjg0#A5ZJ|UTJ z<~z!Ztij#6LiaMxD2_rsV?V+ZqHDb1OY;fQwTPdvbp<4&L`RvprmP$B=l{J3a5RjL zvQrYWF2Te?*--&mH^EUR$v`ahT(WMEpLJz#-B{?kWZfV$>*lH}KkJ5b$+{tD-JErE z);&FP*3DTrXWg82bJopScgf->KkMfAx|?IOuHO&5WWJxv=igcDn^>s)tQ!jzTy=8~ zgUlWV`B|48J)M&aA@?wdue#JmCiuPX!&K-^gO(Zv + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..47149bc7b --- /dev/null +++ b/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-id-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-id-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..ace6d99f0 --- /dev/null +++ b/android/src/main/res/drawable-id-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..bc6256342 --- /dev/null +++ b/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-it-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-it-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..ed9444317 --- /dev/null +++ b/android/src/main/res/drawable-it-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..110018a5f --- /dev/null +++ b/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ja-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ja-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..9a8239d4f --- /dev/null +++ b/android/src/main/res/drawable-ja-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..8e3be7031 --- /dev/null +++ b/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ko-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ko-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..3793c159e --- /dev/null +++ b/android/src/main/res/drawable-ko-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..7ffc332cc --- /dev/null +++ b/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..98ece61c9a4cab9f0bc41df42c9b5ce211c59d7a GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?gia(g2?jS0D`p|NsAQXlQV7a4Xs^{R>p{<;xdaTiZW>|C-sk zSpxYE4uAgqdGYdPSMP*hzkl00J2$noKYH}|_wV1%&d%2M&Q^{t)(#G~4$jVZZ{>tv=MZgzdt^UaiZ`l;~nZNf~t^FD8gxp}((Q>uB-y!rYJ X@j3A)PRA9Bf&$*t)z4*}Q$iB}p^(EB literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-mdpi/googlepay_button_background_image_focused.9.png b/android/src/main/res/drawable-mdpi/googlepay_button_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4b0729484c3c29879df9968f7762c7e45dd49bf7 GIT binary patch literal 571 zcmV-B0>u4^P)vL!F?fKtMoIRau*!rOVCIQ&w6$JUlx;Lv3<+iHnkp zj+Qz=Ks-S~KtM%nq8)Ys00233QchC<{{aF61qTQT3JL@aLVJgZ2_Cur|Nk8iyZ`_H z|44)X5|I;<6qEmnStiLCNX`F89zA!WtS~b)?W@^R00037Nkl*BidiFQ%i(P6b_W`TTml1m+M9_Yn;+*ztp60`O4u5e>`w;y~}D;;6l& zwQCbY4ze6I26$F3vvT5~5D5_@_HqG;#5ms*=XEkC0JO;*o>=co9_xMP@%(LGr}JCy zztX$?r`|2qnsXIPu%a`kF{+Ku%{n%LG2O5;Lk3c7xod-l5FXycl;wSDo7`Rp1tF5v z&+%=tmo}*RlpPR!yZ|b@fB&Jat?koi&!0Yf zW@hJR2^4a0c=6)J)2C0bUcGkp+O?L>&L>ZwK6&!g*4eqPuJOXfi;tgxxEC&5bar;O zws*F2bg_1Duyt_uJF&bJ=oGz@AirRS|BOs5tZW=yyu5sDCR;!MH~;uiV5j8QuZk)v z|GynO7XS6DR`%KN-_HuW28T!Fyt0l3>b&jg;uuoF`1UGeI*Xx1%frgaZ;IY5dMfhk ze|-$2PVRfXnOzw>m0oJ;yghJ0`A3uEcgOD=>jZ;d8%$YR8QRm(w^di1b5$G1h0Ev4 z1Vd_f`5wN${^ixyh@F0cwz@Me9W@GU+;VJ zg&q5TT+06OZ|>~{+V>~^ol_g*{`B+${(|q!AO7#IX88Bz?%UAAYswyPll+{pyYTr3 zgG>ESP6aLAR)1|)kH2buz@MV>B>Ar*{oZ!oeQb`WWK$nfQw zZ7ko#eUqZ1s+vRIy#BYLsmZlx#>2)0JMN@qjZc2?E}K%c(|+FdXq}6B+0)tOY8~zS z{&C2Po&Hl*|7us==4-Ru+w7`d=AV%CKd$)9nTv&eUSIYthjjun72kIBE)V74v#E~J zV(l+H_P4XJQf*G*G0AiYQE%33e9q$KT9@+FN%x*FneO}4cgB(jzV_V@V%Ozgj`ae% Omci52&t;ucLK6ULT3YA; literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_focused.9.png b/android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c98d387b16b571cf5cb3a503455539e87c81d2cf GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^>LAR*3?%D%eb_*p0G|+7AiZkUs+FrZFJHZR#j4FK zR&PFV=mby@$awYo&37R90RrcA^tFMa>?J{d!3>-Y$L{?3_sxV|4JcIT>EaloF)=xT zp}B}dBcXvw@j741g;y#82M%PIz2-5pFg?4Wp;7ZWkCca2Lc+{uJ&UCcjiqO2+B%2{ z#YG)B(75iy8BQy%um=Jz#p-fXnYAq%-l=FlF}&-Uc!cq?kW@sM^3_D&`4PcJ*G$gG c^)X5?6gn!k9yeh61+<*O)78&qol`;+0A~YQ+yDRo literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_pressed.9.png b/android/src/main/res/drawable-mdpi/googlepay_button_no_shadow_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..340d4494ae41b55d032ca18c728a814d4b7d3c01 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^>LAR*3?%D%eb|7MR)9~4E0BKt`0?$#4{zOhaQn^! zAPGeG9z4GP;4x4N$bS0l`STYbQ1gTe~DWM4fD-35v literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-ms-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ms-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..ace6d99f0 --- /dev/null +++ b/android/src/main/res/drawable-ms-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..bc6256342 --- /dev/null +++ b/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-night-hdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-night-hdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..7091d810af37e97c8e95ad502b33a4e5dc96393d GIT binary patch literal 979 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvRe4V4mga;uuoF_;yZf(QOA2SLsQ2 z42+G9XHJ>=^hRo0+Pi@I1txbAHEP{w&YbyM_$eRDopR%_WuYFa(Ur4yD(05Gv#q?v z`{wkN{S~bLR{i^T^!oaSG=)Y7g+pGmBu=mhe0z6Sno~D!j|G>IlS}vB>czLW<#ckU z9#r1*YTs8G;RBpL9L$rqZrytHLU!h_FE2L<97@}Md-x%qa7O*g|XP58XzyM&b5FOOYf$(z?M=4n0AVzbm6RUI@Jb%pU~p9-bw^Tn_h%*HO^S>8SfoTb*cL2l%66^s^z;<;Et!<}J=tSM zcEhHa#a=6&%qHbl_!=@9>MRlxQ@3f}cH;(bRceGw^Cq45Y62%ubgZ!t=@jgUlXdQ1 zzAV+%#r5uyT0*E-%kh>0M)uowJcci*nhHhOIeEHIb*9yjEa{?O^tPd&hgo)($hBodnUAxVP0 zKK}03Cv#q{sg80x=D2!myUOxq@|(B=bAciso)wt8I2Zrs@th_f!E#C=^!Vyozn1+> zx{}8s{MShD>iv+YxUI3%o*sXAFG=m>r_YNPO|mUJdOK-V{IMH>tW7I~-22n=v$A66 z&zxH9GU>^5K|#UzL#!;7f2EW?^Nlxc>N7XnmQ%vH-uwMj$LX4zUiEXEq@9nQ5VPn0 zd;hmzetN~MT7P=sD&x6byN)Ps2`zJteXOLZs8!MIUQw!*^m0P^!?(-y3ud}yv(IBl zE}ik}6pM(p<4Yl>{jjxXME_1?Sykv+iFY~`A7y+@f@Ea-CV z%wzjvbKI-$>xo7Bw56Ya_wh-ohF7D|qbB!?*7OQ@w$HV@)vR_KO1==fxuoFbo3`-e xbaSo4CF$nh|M@rl=VSbPs=obzw9c-5j4qMfdAH0qKLch~22WQ%mvv4FO#mHft>FLw literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-hdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-night-hdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4f9bc6ba764314a5c59cc5bae1ea1a1a1a8d50aa GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^jv&mz0wh)bF`ffb4?SHRLn;{G-ehDu6d-f_qrL-+ zh{y8|1*aE6rHw)jLa_=~&H@}PRxTayHZV#j7;h8js92j+z4znqdi@UvncpAxPv5sL zFx}h#Qxo<-B#X9yNAegD;I`N|NM&(|xME^dC< Uyysww4A8R-p00i_>zopr0Gh#T2mk;8 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-mdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-night-mdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a60464a3602509a6d03d45fcbee9fff4fa7291d7 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^dLYcf3?viMZ?giaq5z)|S0D`p|NsAQXlQV7a4vN zwynD9oLy-Q8JXwH^lWy_b^CGQ>$|tbzlzv074CjmSH^GWJ5N$%N$j4Lmov@%BvmK%X&qy85}Sb4q9e0Q&=?y#N3J literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-mdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-night-mdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..d0be7ed2d5f931b65ccd4ae95435466769ab759a GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8Ncxsi%u$NCo5Dn+G`$IB>9DTzl+Y zZtg*@Gx`TrCWIOtx^q9UWbd4sEB$JW^Ol+pe zT4+6ZBl6%kBO8weBQqP1gh9fA2FCeawP40#K{K{_(a+_#Jm1grLy7U)lL^;YSBm8v UiC(o?9OwWBPgg&ebxsLQ01_`g82|tP literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-v21/googlepay_button_background.xml b/android/src/main/res/drawable-night-v21/googlepay_button_background.xml new file mode 100755 index 000000000..4873ef242 --- /dev/null +++ b/android/src/main/res/drawable-night-v21/googlepay_button_background.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/android/src/main/res/drawable-night-v21/googlepay_button_no_shadow_background.xml b/android/src/main/res/drawable-night-v21/googlepay_button_no_shadow_background.xml new file mode 100755 index 000000000..d44e9eb62 --- /dev/null +++ b/android/src/main/res/drawable-night-v21/googlepay_button_no_shadow_background.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/android/src/main/res/drawable-night-xhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-night-xhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..40f767d533619695ffc8e9a1befd128066d07453 GIT binary patch literal 963 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S903?%u>HW~n_KLI`=u0R?H{{R2q(9jSX8tMQ9 z4GqR=AOPfgdU^r{fDB(>UpF^5kZfqEWoW3MpP!413y2#KVB_u0D!`K5fLjZD^@l(Q#Ut8CMKX(CnqPMdUI!ITW4oe2QNDp7h`vK zXJ=0egGeiTCm_S#-pR_z)ymPu-pR?%(b3k$Jy%si z3}{VANswPK!+%C5piWj+Hg*n9E}(6ky!-+Jf|k>7eBl$F`&az1&;m!X`LcIKl)s8= zN$5)IN$G!kxIWcxhjHLlHQR_i(mGBdmAjsP_YIGYPfSd7^Y-=gPg~_)&cMK=?NRiABe;OLCKAP;fMP2LjUZ``lE-?-r1$nLba=E%C-qLI@Ly zzT9%Hp+Zydp2@E>crGOUwchrX^Xey+bCM5i{5E+q2z#tNBjDU(tlhhQecxrDwi7nJ zKb4i1oY~Iv(Ja{M0E>d=5rxFF`Mn7_vwmiI_V_4sa@-I&d}gCWJlolqAE$kp^pAVt z|4*+}_b!?KWm4QF?|9ZZOQHas;j%{B>RQ%23 zH;X-2zh66xS7`#@yI&7xuG^DlzP{$^*`;+cw|;2J2FuCI+2noS+PFjWac}sR7DuxUf(FlARyop$oBK43#ZqGdecd#YtL|; z$@|0gFVdQ&MBb@0RIG63jhEB literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-xxhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-night-xxhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..91035e2a412021ff692b27dca058e6428d2d6a25 GIT binary patch literal 3186 zcmZWsc{CJi8&@>M*u{`6L$bzLsH=9KQ>I-?=0hH<(;Z2A>B zdbj@@bt6ZZhAYj{t|;kJ#es>Hir|)r$%xkd(Q9URnHOpK%&!N@A|{I_5bSRRc#C`w zmFyFkgA=FnCT_jN%g2Rj8fx7t_^`f9YYxC z;P;PPltB!61^j6wx(wiXk)IR+=`Z!Y;D`@#E(0VVn$jGJ22klfD)*@NR zn~`{soUz-LKBEZp*V9^}P?4)29dnNqcK1q(Y~^=uH!KLWP5ZKK@wSUrd}q_X`gpTD zbdixMC5S0mSVr=7&Ab$D z&lwa1mc2c+^+{Ckrp^&MXPFP(JRj>rUyI1C+dl7^ME5UD#(@^?iUP_xGlJ~d6+GcP zzn_1x&6&`-CT~6Fu99}Qjp;nw*Wvg!mYF?~7j2F$c)U69CNY#E)wjC3%28t^mkxgg z64Ytr>y$cSg(R~YJlJozYJi+txjBst(}l*H|pu!n^@sv5;oA*anHT_t*IDDkM{7x?I zKsLWDD)yMuY5sXy4M{ITLku z;%-~3)YWnqQ}O{0oZK1)0Ork?#S5p)3p(MM$mub$RldzA0N za!`&W^l2$(D-e$R-!h@#Zi~sGK@@(?s~oH=k@|@Vy*}QleV=!q6LrLSiVV{TDJbWv z@v;o*sgo4J<|^cix4Odcs6q}2T!MGs<_;44vg9`cQ9wpG8I?UVZIClsSsZt2zJrVX z%DBHTs_K$0!Cj~%uM#QnhR+$z!f*m^iivkxG=VNkD5Ax6!&lk5m-Qi-oyYACc;z(% zRzoD8=(%y0MiGe1(M$FVN)V>)LzxCKa8F&tVu*Z?DuO_ls0U%^?=bk|&U~*#eCr9NkiXB@Xw{d`X_it8~ z@3PLbDzm{CJ60B>pKBGE%YNlam>&zJ&D>$;EEPT~iwX=4T@O7AsQH)+8t@)FZ>)Vf z1=oZkATJT9RB8o{5&gn?Ec*Ix+-&69xu;{hc&uKuMYWy9&(U?RUl1^?3G`Y;Eba-G zIEh;=(c1$WB(6HSDDFkJidc^C2=mTN`G)VMwHVAO34Z^s+k{>Q<1l!uCIOk;zB{CT z@lyb)9#axDdl0iRV!M18l(uvL3etYylBxcB!JP`59<%=)KHyN;F?LQ zRfY=GbRt54RUV@D_`TQ6De`e@K)7~Y%bBc9jW(iEARulwpt=L7?cF^@EQg~GwSW5$&IPI##3fOqTs&dvt!|q^j%_?Z5Xbq z%yCF`U~vREWl;iAj3K_szJ7`R-r<<7BE@b{X$hyiqs{3Rw`vcWDyNoB4D6*S_?e3Pg&rgBs+wv zWFc&P`1_Y1k)bOT=x4nTjLqni+4CVk_c^%R5EZoTNV03j1WDgYpa%$vHH?N+oT>(& zxOfN+)229TG%5U7Ak{YlTN*c39a5}F&>HvZwBU!=xxfiTC5OxX=d$Wj5NI22Ho!EP zb;t)Jc9>D-7h~kyNvmVcjUS(tRjjohV-n|jgX*@q4vjuDip>{9)z!mpf07T-Dve*@ zbk(&`29hR*@quj4l;q;lWhVmL#Dw=)zVO&^;d@uxs_Nal`mbKzYPOxKU@Ro%4|Km@ zN1|FGJ*O(2Z>jW5Dv$nexwe&EF2bZ=HD)=ed&32w+{B{p6ZV9awI_cb*EK;5*NkMW%jj(g82HyBgh3`)V%P@(GUwL$uB z?li2XZretN`Y_NgECxSCmc?NW99R|MY6F7j4wRVbjy( zd|=c36pc2jH>vP(o>39~DEphU+DCr)SIfvcrBd34-@mquV7Fxf3QgOB+;>c(zc>xh!hod#N_y49TTjw%xpKax zQ1aX!owi5KC>J!@H-2*{jSD!;Sh*Sp<1b&BBYWfc_@S-8G! z9@RDE0jkU^L~~NPud=E%Koa-}Gn#OJwIkmgM1ZMuAK}n}@v#pB<8PTKX_x}wSX!`~L literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-xxhdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-night-xxhdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..dda66dfd0dca9e7cdb6241e55cb59f80d0500f67 GIT binary patch literal 679 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2{2-Fy(o=IEGX(zP-!LBO551%~Sx3}fGZOu(yw(;_w|EDYe-;uS}zGnMpq4$4>`UfTU z$)XJmED8*a91aX}sw+K8Yn&GKh&&2z_L_3+@J~|){`uE>QWbAooRU13y1-Z_S>1bv zL%37dGyVrb?Q%Yes>^qr*0%dR*MwQM<{|HQ%fnS^7uwZ!{A8#IS!}+#(#>hsMWMLO z6CYk#kg<+I@9K;La`Qf`US_yoanNv?(Bo%p0kailo=C1_-TO#HIb#-ggS&Ou=Q&p< z-P<&=vBDyaLC$V*y zIGZsfUD13kbH#zESF;&^ym_#+lp){JP1v|$!s423d=I$8GxFF33ftaaV^oP*zEtyo zWf1pnO|Z9_1mGb6V=6Fs=(1u81H%ZW0uPgcl^+tG*wjAY;ar(IbN>~UCo`t{hpxYL zhr=PiGXB>&@D`jC$`K5n(b1a$CduVvo0Gcn=aSn sFVdQ&MBb@0B8jHtpET3 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-xxxhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-night-xxxhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..ab905289bc28dc6df2c5e8c1da2b9dda79676c3a GIT binary patch literal 4280 zcmb7I2UJs8w?>+UqJknQO;nH`K)@J^G!YOO2@WN+5PAqz0vI|I5D)|fO{6&^q9`Cm z0-^T=2tfvg&>|pBl7MtWePNuL_rHJEdhdUCt$WVB_w4iSZ|{B1K6~AypDc{|j-5Tm z#>U2Ha?{X?)mI$cN4Qz-Y;u+t8{3I!6GJ`gutW6U51(vi<83c{Pi))a`4wdr>M^l} z-H{7BZ8gV!AwEMzRT$VMsrWjro2a_-EU*r>7m66cqUdi_Y zdkeN+fWd|)FjspM8J-0z={>rFpqj=o#?aY%ce+Fzz3)o6ne^jcLbP18pI;s`c*B4p z_l4vTPK4)1j%QrEc5UGUm8*CcFXZ3v^?qIH<-mgQtmfk#JoAv}EQt!Vr71+VpMQrQ zI<7)1yh#-qYN^s4h}anRto~_aFP1(ux{{rni)b>N%XyIojZ$0A7E=pZbsu!1kU2B} zQ;FeGPNKSZP@ zd_GxE2`Mr;*dWU`+ArKAhOMtzUS3{oX=w?tu^F=V^z8X^;%+RI`@_r; z2+#tJ_U_%=w2{6SVO5w%FA1y7T^5rRL86YQ zu>)*`Dh%jsb?)uM;?3C_h=nh&ec^C3^(*R*-pY$D8&b~X6kOtd={ky*Kd1zkaJIVR zPVzfb=~hU3BBBQOAk$T1xNcqjVB2y_$IDkNkjT7`ms*$dK(vn%*VgWqDGF;1r**^W z9a_Cklx@cOCih*^7HrXI|MLipQOSSA@KYxpGb!%T?Tb~Z^q3`ybJ#X>Y5?L+D|;x+ zz?2RJO~PS^hf&hVGl3hlTmu7xHpSdr2qVea-FSwFj*g&;Z}bgD#cEH+EdA}J;+how zB`iL@Qgy~aDcoc-krJi-vA_Rh^@VRy#ZQAgC!1{R!k}>xt$Kxye>%4KJJbo5bX(4C zpGT`2H0fwT=>ruO7IMe6xV&#H`ua?CD&Ky8@VW`~kRYY`$j^Xyu_e_uhR1iu?^&F~ zDHMN`Nh9CS?`Sj{2wzn6b!+7Mgptgrj}f5F_D!Fdg0h&SzAl{dn3l9Nm7z(K4~Hd! zT4=7J1Tvz08QJV80ZP^vwJXWZmEXWE^Ma-ty^b?&_{hp=z6UN`YLu1}PXIHx*)g$Z z{lOk1J!B|-Oeat-8}X$yt;Bna0clSwqtTB>eJDv%2Q+0u)L?(j*}#sAH7Dzlovps1 z$A&T0=zyzQuEsytmi{`K!P1ngkCe$os+Glw&|Qw0Ef$Ne+PP+O4d#MGVB2~MSAQmo66`ti+j-Q}(@~>{ zdOlKbFPCL@{?gHnHPYyKw#-LP_WX*(t;gJVTox=bE&K^(zsUMB5d{uQZ8KX=hx580C(L3FrX>yF+H3-IvvZr8~R&CHIR_qOQEXJsQ0moPNgy`Xf?+SxMOO_|s^TM@UeJ`YH2QC`6NgQXVrae$eese4tK(veYM%cE4RX z%2L(J^LRMV9{q;b)!OZ`_+M+|7w&&BR4&=VDbO8I4%>34-KW@`Z(uoQQkylZy&!Xu;hvFcfRONy;lkKU=)N_4s+I(14q(Pevy=&LpK<*;??=%ERs7lr+ zPb+;FoyOzw6W*)XJVUuZwvCFaO5lyxb=xP+6&06CN=kOcY+e*VWt(!27rSu(*hgrU z!y+hQ1)d5qzIFbf5skv7U$p$w!EH(CTo~lHe&!_KIX~YedIS_9`R%bjZZZ=${wG;h zPKtj3JS>vpu1B6#`cBr_rVHT==meT;k#+TM*oRV8V~bS67r~5q;CRFC@#^a2zEMc0 zF8%zbmrJ+uk3-={Mr3U~Oq)2jSsWcOXE1Bs)aq1G0;Lmn2Ro-*TkmRN$4*jfn1eW6 znkGeXCr`US+UK7D%yhA-3dzw;1!a52mA)0Jt7>WkaELT?P@}Ra7b1f*R9^T>L;1o{ z+jSi4>$;$#!rA?e58GF?to}T7|4QnB1a;CK&Y(qW>V%`rsvduJ{Y@oBzDwYuetgF# zutkc@Q^G5Y#y9>h6U(@lE3y!dU7bYc^Z$Vo)N|}X_z*$3-PJA~C~(8rc&Vn1P^6QM z2+qgfABD6aQD$XzDv(F3W}~>imp|W-mhpEwbF85Tk7o`b*LGW}rh6T=H|s=X9Q>## z0ISAu;kaPi!ixm_a_JV72WHzQx&g4g=(azD9<@Yzx@){`s5{g3apAJ@;La3z7+ft) z&c$GAOQHk5$uby>rD~9-u8U*A_yfV<(70h38xN+L`^G^K!$RfDX2_j>`xJk>+b5>0 zHXe^JqU+|r+?)~*SIx@Hf!rd@o;eeGan8!qNNPZH6ha)hc5SfXMR_^%?K;wsn>|){ zWN%WJ-m$B>dHzMir{g)CPySiB9W1rLKBK(R5?lCwjTdox+!EQ7vQxD}C+Efo%gbjY z`o*!%_9Gf~u<+$IMAzzt{`u5wV}it0z^SNvmp|^-;&8Z!>KYnRpr33uY0pMRnr5yq z6)jly7VWYsyMGjl2l|+BSatEYMG08>T_UxzLb1jeC_kE20FjrmbFmQ4>$dStM-QR`R<_c;lk^O$hT?VkyG-JRc9o>6BvjqslzL~C-jJX0 zg$G}`l02u@y?pnYuP*oMTH4Ia_g1TWEmTwT{XVi&K=)w#9dQ4E-?{v;prwrRq{E}P zx9;;@fIXxFR97hL*_yi4d#yL}H6#wp?hlLl%;{LqB*X%a%^`kAjZ-xnHdg@QtA-Mq z9Qu^Y6A+|ctZtSxStPtTBVGh4?3yHt6NaS%H$*4cWolYZmbPb^^LO}>N_KFg(J2ml z^8$ELyEzU4&nR)8?6po2)wdcC`6JT{b=LK0CU1yc5$n=3ZFkG}wCwyE(}ZYCFPIAi zx5gcylTvh-uWWX_MbA0UiffzI|jAD`SZ(;Cd-r^$<@qZpY8IQfcV?r zTK^q+>ms=?RbF7os1zqGMhL`{#7}RDo7Zbv5#-6o6gy9O)>9t*F6C)y)l^__{B~Sg zF|3Z_i(Fm57yW2F3OAyI0M@$*<^bCM9rx-Zv$4Rj!C@=j6L@Ejtbt3FQO2u_<{!(G zkKLVMWVoIR|2?SK@0HV6zpeE~E@h$YM5^0rK{RSCC`=XzO+5bux}h=KJTQVNJW zC;Igf1{{(Em$La~aU=^i^|V^#8Pfl`9C`S8yk80+?uun7u-#l{Xk$-tqg%D(l@j5p z5FOAi0QObsJR3|0Hgj17#9s&pofNDu9j|eoI3yL?Rh%4zy@P>eUhM~zsNAzoRYKQH zPS@tig=CD_9MTCq`7r;<7n6Xt6K1!{JA~n+^116dw^$(fcF~1L-$_PfcO^73Lcl-} zeD<_gROwm8o9_0{<<`|>EFlrEE;+H=r^&SN{c9NSLk}C9#s(+#U7xNcF}ZfEW`h#b z#IF_bm#goGTL<<`7EYg@N~rJWcnS)T4UB>|I!_&v8Va3_`W415%t&bGSG;%O(^v45 z`^l-VC!Vxfk`+9Y6gykaZGVdq9IJ6UX}iFF{1nhl39Td(Bd3I%PaiSz&XPSJl9yip zpu4g8{awIU*E67ZE@CUD-+!{8o5q?Y9ZqpLQ%m)mkDj`Fp@7^Wl#iNQcD|Tp5=k*C zd>L=jrT94{IQ+{MeIJCO(M07bJY?2te*V|hOb}8wtOxpPT1d-`OnJ&abV*!kWg-_p zXfT&#nl)bnNt40M@CM_m#KW2`A_}EKdmN7Bra0dC{4prvtE=70>~+T}4uSA=Qd6{< q;MPrnda@zQ)O~Mn;FQA_Ph+*e$xh~@3DzG8HWMQY!%}^hxc>rq$y|N_ literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night-xxxhdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-night-xxxhdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e67fdaf516d74fb33d13a18a39ac4b6c121a14d3 GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^t3a588Ax)iP}u;aRtNZmxB}^+0!&P|xB%U1Q4-`A z%)rRR%)!McC?O*&udZQWY;I+19}pB0kyBLBI$_d`B}+GK+Oc>4q4Sq+-g)}`<*N^$ zzJ34k>(AeR2A`y_FfcIw_jGX#skrs_?)APV2Z^@Cz&EVb?^oQ|*l^}={7t!JCaKK_ zf0o~W&oys?!NZ0<`vAT3o^v&*{DK|EAJ*y5;j^1*sdF5W)9p&+=R{!70ZTnVoVOv+^W7DfA zrtDt4bhG`g@bmnWma^?DFYT{Rw|q6t_?Y&piK|PF&AzOhn8NYLBKO!_uX7#CrDl57 zKbw<((0t{=w{On;n!5b?FQ2p1tT*3vt*xDYcTMoQV?o__Hx_@~=l@mj+>Yp;h0A=i zw^(ZHmfh=FbK&QzdFL*F`&4qdxyoAi_QKDmK4+tupU-|@_d}+DEzE9G)GOcbje1uS z?B7mRT6uM0ZOE-R8T_j!Ub&U>`jvC(_Q_EyTkY&)zAlX8|6HZAbz^~T?TUH3GhBjZ zmtDFa^znXVnen7sQ9m2)t{jNpx@cwg(yP~iq14JH3JESKqrQLD0t`V+WnhskovHh; zW2*kI9O|dy6;S0JaKR@)%`c$FKj2b8fJRV2U2wpakN~Z)fQImpYY_oDQ2|ZSK{sN8 s^x}eA;;&t0yOYZZaZH_8sMEAxjOWasx9nbR8V*YOp00i_>zopr0K0)M!~g&Q literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-night/googlepay_button_background.xml b/android/src/main/res/drawable-night/googlepay_button_background.xml new file mode 100755 index 000000000..b81005b06 --- /dev/null +++ b/android/src/main/res/drawable-night/googlepay_button_background.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/android/src/main/res/drawable-night/googlepay_button_content.xml b/android/src/main/res/drawable-night/googlepay_button_content.xml new file mode 100755 index 000000000..b2cdb1d52 --- /dev/null +++ b/android/src/main/res/drawable-night/googlepay_button_content.xml @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/android/src/main/res/drawable-night/googlepay_button_no_shadow_background.xml b/android/src/main/res/drawable-night/googlepay_button_no_shadow_background.xml new file mode 100755 index 000000000..9543c4bcb --- /dev/null +++ b/android/src/main/res/drawable-night/googlepay_button_no_shadow_background.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/android/src/main/res/drawable-night/googlepay_button_overlay.xml b/android/src/main/res/drawable-night/googlepay_button_overlay.xml new file mode 100755 index 000000000..70c7a9227 --- /dev/null +++ b/android/src/main/res/drawable-night/googlepay_button_overlay.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/android/src/main/res/drawable-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..436489473 --- /dev/null +++ b/android/src/main/res/drawable-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-nl-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-nl-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..4cdc0f2c6 --- /dev/null +++ b/android/src/main/res/drawable-nl-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..b310e330b --- /dev/null +++ b/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-no-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-no-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..4162dd38a --- /dev/null +++ b/android/src/main/res/drawable-no-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..ad631165a --- /dev/null +++ b/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-pl-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-pl-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..f013a6ff7 --- /dev/null +++ b/android/src/main/res/drawable-pl-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..c6e7ea558 --- /dev/null +++ b/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-pt-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-pt-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..befc1599a --- /dev/null +++ b/android/src/main/res/drawable-pt-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-pt/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-pt/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..37090c642 --- /dev/null +++ b/android/src/main/res/drawable-pt/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ru-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ru-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..2ea5f1ffb --- /dev/null +++ b/android/src/main/res/drawable-ru-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..118067b1e --- /dev/null +++ b/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sk-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sk-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..f0404b360 --- /dev/null +++ b/android/src/main/res/drawable-sk-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..506832e15 --- /dev/null +++ b/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sl-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sl-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..0b55d1218 --- /dev/null +++ b/android/src/main/res/drawable-sl-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..077317361 --- /dev/null +++ b/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sr-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sr-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..3adb9adc0 --- /dev/null +++ b/android/src/main/res/drawable-sr-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..13d2fb381 --- /dev/null +++ b/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sv-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sv-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..b90882836 --- /dev/null +++ b/android/src/main/res/drawable-sv-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..5a5c82862 --- /dev/null +++ b/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-th-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-th-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..83c41e77f --- /dev/null +++ b/android/src/main/res/drawable-th-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..8339725db --- /dev/null +++ b/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-tr-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-tr-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..8022db766 --- /dev/null +++ b/android/src/main/res/drawable-tr-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..a33a285af --- /dev/null +++ b/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-uk-night/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-uk-night/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..36d287377 --- /dev/null +++ b/android/src/main/res/drawable-uk-night/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..1f8e8f652 --- /dev/null +++ b/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-v21/googlepay_button_background.xml b/android/src/main/res/drawable-v21/googlepay_button_background.xml new file mode 100755 index 000000000..b0a94f391 --- /dev/null +++ b/android/src/main/res/drawable-v21/googlepay_button_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-v21/googlepay_button_no_shadow_background.xml b/android/src/main/res/drawable-v21/googlepay_button_no_shadow_background.xml new file mode 100755 index 000000000..c39fc11f0 --- /dev/null +++ b/android/src/main/res/drawable-v21/googlepay_button_no_shadow_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..2424f968602dd099577d3723632d61fd61a9a0a3 GIT binary patch literal 947 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S903?%u>HW~n_{{cQBu0R^Z{Qtk9p&>Lh)By+@ z8jRCG0Lb<9^aKh38NR;0Zf`=KNlAl5H}#e#@qYcrAuGGe*OLX_rHJt zfJOmzdhNdH@ELUegJhlIXV6P``6sr z+1A`5!(_20kr%)1J?1YI z37UN2n$NqNt9wtFDttL7sr&9b!~VAg2ZYuOtvCGN*0ebDOp{=jc#^#i-{ZYIOxguG z6gRf?8van#Go0QU)X|#RvwLIXtjml}6RVmW>hB)?;i;djF`+`wTQWVkO=ZiQjNMhY z!?yFbN-<1|YVn_~vau)E-*zb{j{--)mJ`LE!tEK`oPrq0_wr>l92|Dz{@ zJQ1D>uFrN~zEQNHZdPtPqaeeR$h_pF2F-2tN!9ZMg5!F;;-9E6noJ0qso2Jm9wxOv zMt1s4o{5!`pWR(NW=gl+Nb%yxV3_2@BXsT0HI8G;X0D%htri#o?N&b+*BrI7OquG7>{Is{LB`_pkl^>tI`nAPRg|6lETEod(DMs3mkt2JBi-mOl3mit)Y zt(o!a@^WdZhP%I>Eneb3Y2Su3>Grq3m`OUY1Z}A)ulkf&wOT#n=A-2Q8S(Pv-)ps` z&9!`{%AMQz{`FoJU74DFuD=Su2ZWj}{d+RKT5zV|L7~vA)w$=ssmtrM96fjY?d(?f z=C{B875@q~m0Yp-e72~B^%|=ZkvY!-1^O&f%^0)}B=E~52tKm-BRyrO-u0_N5w*ai O$KdJe=d#Wzp$P!)o}8Hg literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/googlepay_button_background_image_focused.9.png b/android/src/main/res/drawable-xhdpi/googlepay_button_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..9f1fb57483d4b224f146ddb9b43aeccbea4430b9 GIT binary patch literal 1338 zcmV-A1;zS_P)FVqB_4WAp`1twx`1tws_4bsMnu&>yy}!lo?(aZAK%}Rxl$4!4NlBoit2;$SrKqs! z>g+>9Lpnl2sH(E}`1m|TL^?)BH$_D^LqkJDLqI@4K|w*Msj>9-_N1q;nVzM8f{8#y zN}i&rKtM)kX>O&cu|GpYbar~BsIql+c|}D@q#2#hi#vX z4wrVavmqr2q~A5lCpKY07zh(rwmYvJuCDK$7y|)F zvE0OOBPk&f7$CXwth~#$4xs#96aNDR)Z(8X}seSzq{uMGL|lVgy9ZZpOP?$2;k?13+2{ zNGviC$f$Bdtn_69MF50R${=v%h6sV6fFwcyDH{`+5O&=rj3fvE)WIqd2^s5W3jlE_3>?ZF>N-(RrE z$~~;^`-?00usWH(*U%H9XZl_<{A&ywSw>DGrK&yr1DQpy8B_;?fL}>ey$95@>h*wn zX1yL(r!Xc+2-WQY^{je5pq^>3nfH3$>%X_x%zHiW^}N^fUjOfU?J0Xb@AbUb^Ip$; z?OFHQ6E%kWxjjJvA_SnC-Ecn`fB@TM244YANYa9E%^nk(*oFcIr-T6+8L*sk-A)?} z0bn1b@Z$8nUNFi7yZ?cB)alW&r|-4LkE$ElHUwb%i#Fnk?a|_NyXY#i2hL3+!m#Y2x`d8uFY?|{!rC`0OQq@h2M9#jz`s}%)|KVk8-kf wn4Jy2dPl*ldde&S85moUGd#c|#MQxn0(bQiJD{w1jQ{`u07*qoM6N<$f)lK5sQ>@~ literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/googlepay_button_background_image_pressed.9.png b/android/src/main/res/drawable-xhdpi/googlepay_button_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..59161bae9e423a6cc715b2db560d3a3524c19005 GIT binary patch literal 1283 zcmV+e1^oJnP)V}{0nIYL4}Mn*b9MnFJAeSm_+#mC&;-sR@z=H}D^Ktnn|LOef0KR-e`LPa`3L_b18K0!e}L`OfIf;|8L0Ah4fPE!E?0RjUA1O){K z2M7rY3k(bi4G$0y5j~#U_5c6>oemYF{r~-=7swK(MHZzU;1nbF_7^G`Eg3EvFZblM zv}pZ4y}dJ0*d{$#!2KI6LR5Ud=lA!%O;=rCVPRoLOHEEs6Z}X+0009jNkl48uUQ5VEs&I0ZW;Z2J|U25u&VlsT)U6e0sUvR~0?IZA}gCraz0D9S$; z+@iIbh-mam8Mj=KsKV$G?4Y?*7lCI#=5~b!)y4Pp6+gKYG9-7#nE&IpxdX6z9ys$K3!(WBMI%Vb2SdC@&Sjhkk?11P3`dhCikeMR?xHh2!$jXgXK=>9Fb1T;>M zb#_b#$JKx?KcfAZf(@Kg!_@@ZIJ}C-jgiLG1e(lah9=OAd?q!4X5}-X2{bF82~BQD zh`fG_UYw&@`Ald6ZNlU=?K((aQ|M56O`t>NHGvM5*91CLUQ_5`c}?u~b9;7Sg8&c& zQFN~YV$cBY?(XjH(0>y|_kb93gWeYLviYOhYk~7x;Jg+%uLaI)f%976ycYlNwf0(j zt-aP>>;IZ?UK7r1!g)i+hMcrPmyYIBTWVc%7D6i(_0yjn^3& z<2WH^)p(tg36aBRzM#TuOJ0Ug&b7so3a`sWnQJ*RSE{w=y{=U&GBR@-uQ!^l_H$la zTFpjXrg0AXoo=r`7>>q|dOaCU2mM~R!$JRShVXV9v-x7VTCX>E-+H}TF6OgF*UK}+ z`FP^!)GNj9ZhtsFaEJYFTddSO4jxY~CLg2Q8;HabsfR8Riv+xGBTqipLzT%Nj>eM@ tT|650o8(XhoY!!pAa2UU53mAsbOKZ051--!ql5qe002ovPDHLkV1kl-U-zv5V<+EX1re9Pj+?e?{{P>oxb2dw-WhGB z$~?!)FJ2~IfAjYH#HOw3-x2xc+8lP7^<@!fUg~dST@v(rN91}{#XWvL>`%<5Wl1{9 z&v2GIow|cRZNe?9YeHv^=$sN*alr4)Vy^_zx+K9^rq><9%xxYFhDk^MiQeuMRCeo; z0J7yeKR);9xgl(DaiUAfK0(=OF6#Oh4gJd0L}U$8mxms_ST63pmoemYdDVu`=VO4* OX7F_Nb6Mw<&;$VU3X{(O literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_focused.9.png b/android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..210493a582dafe39da1e33e1c0cef9181159ee31 GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&3?x5zE|dgP-T^)#u0R?HRDg!i2q$J2MnBl+ktQ(*Is~)g>_wPRh*ye2e^@4$cvDwqbF{FZV%@lT_ zW(OYTm5aWA`#+yeKCJ4i>&oo3Ykmyu`a=7BKbQs1Sz@5(`{;ycpIjv0`6rU8uAQs$ zZuwm*zk9*({>K|vL{Gh(kgED@>GWML`~Ms}-D6a|NoI42^o^?r*V`zIN49u9o20b6 zbpPid#apR{S&8xSy%p0{BdRrbnw$Skc*u5A&--GTyV*Pq?(H7sk_Yxrx_n!rz-VRW zN!whWQ*3{QZ=645KKbK?3%4bvTwM1#dd8+W>5uzO3{#_Ie(2wrVI(`{Z_XMc&2P;J zPXG9({D0)cd7>{P3+L5tG2aY?$75R3f6JURmwq_&bMIlH2Qv>(njC(Avv#HBv9Gqp xJ-dw)&l{&7NjZyVjttTs37;S23IuUJ0pFnShd*?0&P_nxkPF6*2UngFUk9UcGx literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_pressed.9.png b/android/src/main/res/drawable-xhdpi/googlepay_button_no_shadow_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e246559b755f0338eb5cb45362df38f4c479b454 GIT binary patch literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&3?x5zE|dgP-T^)#u0R?H?%sWP`_98#cOTpW zl6M~5z5Dp~od@^sJ-Q7Pzx(jvqbJXvy?Fit2wuK;`4UJyc=QA)d+)*HXU|_eefIp> zv*&joJbssYiydf|NJ)@iFvEZ6SvNlaS3O|&?%#h1u+7=_>jeV?<7`hC$B+ufC0ERo zm<@SY16?)FKd`?0e_3D2V;!lxZzlE2irqi+>3HNHi`8G#q9<>@yC!`7iQCesOp*6#I~3_weT1;|k~hNW7Toao(j$ z?UM1td7WQ;mZU4$3crL2G0tmEe;8RIHt+Ad`m`nKZdE{Hqj_?E-6nJXQ=5~Y%=W36 zcKKam=Z7^*&Q1=G{;pH~Ny;$q=H_|lW^z_Xe_nIW=LO^DE8pi`J XU*6Q-saegZ3Q7~6u6{1-oD!M literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..a6a1b1876d31e3f6fed773c1b3650ee1914a6507 GIT binary patch literal 3413 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 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image_focused.9.png b/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e766ccb29382a1638433afd71b909384830ccba9 GIT binary patch literal 4308 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 GaQPo&EpEvG literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_focused.9.png b/android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..9b71cf6cf63a65cb242dc0db56acb5e14522a62e GIT binary patch literal 1628 zcmY*a2~ZPP7!H>pqphN26`>ZbS_RZ;p`yqXA{6mJE)j8x$JnU~QWaE+B1rLS0ky4G zbkN`+NtRt8*@O^|0D@?NASHwd0Rl-N7lb6_QXt#6Nu5sLy#3$5?|tw8zyH|T+fk9> z3tin^2?WBzh+UyEU_FOFE)GEQN%dj^!5)s<8y5y%!61{_FkDS7XHp=PS`H=yNQ!mZ z6bNQez$VOu;o7H9pOzvB`2&&yG06W110(nZS0I#J4kWlphaftNq7Vcj2$NDyr-JJ+ z140-`6{~_)Q-#*j&^j8Uj?Soq5GFVR-XR2~P$~!n42IcMgkduXm{if(t!*8D^ZJHF zqtY>%Os-HUR0^d^CRa+w<-;OzFTcO-H5XU|_5p1Q3}~P*&H;D_Y;nRM7T~n8xvjgW zZ&WPRYIS;p!Dup>&1RFy1XQg~r<#})OU8P5f)}lSS*-!)AUX6h+!Rg{sj6vgekFJ- z)M&IuqiJwxq`BpFC7lgIh7dZH%BZBVC6aNCR%bLCb-L+snc_ujJ5I@(F$iMYQq5_4 z**`EeJ*^iGidtT_gACXJKytf!di(kTRe%Jvhee|j={WAF1f*naT>iTKjSbM%-3uJinRVp|lMI1c)avyHP!2k?9`76&ZyN-u20UqK zZFz+?V=&`6jE;^<^#+HTrIdkWA@8w1- z42b^3@Hv~VK@WSSOK`K6_hb2w0hHDNL1$1IkvCje^M z158<7PsYd`Mni9b7zz5dNC&7Z12PPGzWaAmm@+$;xgGjMJ~Kv{PoCrSAh&gm z^*poRKt__q$$ZcZ#xtIYSY}V{h08K#ns4)r?-kzccbR(?ff+re5nBm%B=O!~8P!Z> zTiWN}-|EV0Un2Wy*LH!p@eOL}63EwN>Fv9-lX5I+s|ZS`Z|uymmQ%!%1;zMJA|fm@ Jw1Rjv_aAZ(0=WPH literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png b/android/src/main/res/drawable-xxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..454df9b85a457c224ad74befefac52fce3fd88e8 GIT binary patch literal 1470 zcmZ8h2~bm46b(96!J<+piqVRI5UfjU711&k7a|}KQIQ}xAX;o?#041(NQ$T^sHn7P z(TH>u5kUzq1gt?&qbOpq<3tF5U-A>g7+fGx$p3vmIMbQFdAYgwzH{z7_r9555G4(9 zbrHD;1OnHv(BL)Te;5B7H5^#oUuseyaI!>2L`y&j77W8EO29DD1>;@7B0~=FacIZ~ z76N%3K`0EvAc%%}qyxZPOb-o({}K5*5Uz(Yz6eBgcH#`f=yW<1MIngfxd>kza$Er+ zju6ISjO;)Vj^i+lfl(52NWyT6AZdzbXai#~7!3^Az+ni|fDzQ^IuJoo6hU-fw6Gbr~33^0P27>q_K5aDeU?3I2!5V5D zz)0Hg`7TE(5SvWhfB-b>VVtIUsW9K5W1a|3P&CMcA{1=^`5~@D3<2(-83s%Y(816! zf(90B&@~W7QVfREe48lG;<;TIm_oxq z0JVBOx^Le;eH0r7-uqJe8tGaA_jP1J9b~p~A1#Rb#9E(GQ&wkJXu8b(1B2E#NXwOj zF`h0XJXY0UEO-w_CG&Oi+x@JE4;+hqerTq%m%Q0(XIV#*wYTND_w#4^IFArJ$MxQf z_e`g3+$X~^1wtsVb$}#(v*Q!*7 zB1ZqXsVFfTnxyQLe(F9%m20-U?aeiR+*y=%^4H>vb2GnKQumeUaiIUo*v_&H)q?%O zD=Wu}uheCKpVq7w{$5eG`h57QtfE{Jjg)lT&LttZqRQj=TT%vbFAY{)=fl3~`zE=bmRgcKI#O zTv5KNFpx=cep|tQGrRK9@Sg1~Rdn~nCSQ2I#i=8Ar1Y$9<6zi=Wm@=$?Akedf{x_d z0@;a+$Hhh*^v6$RdEfW83KpuCyPu59yd}Rn$$4vWh(Mm9aVn{oxHOcWDXN{{>UrNg zTooB1A6Q@eO!ex(^tnepv~O0aCkAaxsNymbtL~4reh@!Wto2d(mKiv4fuc4wfQfGX zLz7?$7jp4h>5udB-i40*X=>_>K;I?;q=eat-dPMPI}*M*vOF_wq2 zo_S4EWFZ=vP%hC;&DOm(`Nh8#j(NC2o^A{-T5w4=s2S$dlz7drMx1=3K4tYAYc*CH z(0|!WA=`YqLb>Ip>-Y=1wTp~_UKt?)$I9esE$hnj{m*^STy2}IUHYZu=a!aeIDoo( zDN?LDdhM6#Nja_0Cj6N!k{y3~F2I0gIoskyF|qSMlt>rdG3G2BNM{chwl|DCJxkD8 zmR6d1ktywXx8k3PS|pf6-!}<3PChQ-dY}D9 V1JSslSImEg!z9w+nq?dJ{|hGPt;hfX literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png b/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..7c781080cc197052fada85b5a798521aa76ac4a2 GIT binary patch literal 4463 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 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image_focused.9.png b/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image_focused.9.png new file mode 100755 index 0000000000000000000000000000000000000000..b9223ea3a7013cb10335f2487131fbf2ce1cf744 GIT binary patch literal 5839 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 literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image.9.png b/android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image.9.png new file mode 100755 index 0000000000000000000000000000000000000000..41dfb8372466405174ec4e511482779bc2075215 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm8Ax*9Z@j?3z-Sua6XFWw0>S&|H0t#*Tlc`a?mUE;bLZZpdk>!6fB59# zqoKpT2zg z^7ZT2Z(qNC2Ri!>(8gOpGl32RIqA;5$3QcIragc0`rZ4FpTB(l@#E+3-+%u8{rm6V zKcHi7-3EH|(St|Np1pYe{=+ArAwPfq`VCY8R`THCQ=mqm`1c<_KYjl4^VhEz9uk7U zP>U-G@(X78FJKhWvhu{eH{bsJXJQjlb4YAjwC~!p4?q5hSQITdaP`5%ox`UU0wpAo3kbK&c6pmRX(0fGzNAh-QHr6}piz`*3@>Eakt z!T9!$dD(3ThL(qt0tUrJd{c{`URs;{{_w6c3x>Ov@eWIwnp2JiGHG70WP1Jm*?tDQ zH+i;4*1P-0 zI|PgRd1cKjez|1vH3$W0hTn_XU#90N^!99e@FdH{Ctl{5X-|K=qb%{$Cd+v}kxZ+e zp8A?)tm!&AR-n~XS2e`M(pb*l&d|walmDdK)j9#L?{bZo$}Di0lshR|yt#AGd1iUbzgSk_^ZE0uqk6oVy}nN1dqO;FlHA6L0%!l8}GLt zOb9r@*1_SJHZ3wubZTVU%v2x)Ok7+JXCef#v#ymJdmo$+(}+-WG+;L)hYJVifu|4o zlsud{4yy1hRSt^{GSFICcgAW}pTerwD@46Hlv>YwakEWLy(-|aRX@U$VO`XwbGIgj zxILWOuj#&~b;&f9(p5rS-mA){1c`Mpc-r!s%onfj-smI^BZ|2@R-@P+${+JAZ%n{So zR;y7cl<83)^hq#3)PJiC!Dup)+KWON#QFOLdV>&%LTM%v>#D13i6pp+1QV;_s%kng z;s;AfNrCjLBNCqx^vRm4YM4l>(ZdiR0k1CsB9dtki4GV71TYvl`aZyiXrLQtQC3zD zK{N=WzAx0T0wYlv&*@A$qmfbHT-VUbWU(6>+ZviUtR@bV)kY@65Lw?1ltAPfS`Dj( z-O25K&F>!^5+cZ`SR|22q;I9bWMfk47&0mu5{^Ln1L(Jg$S{dgOM@HgS?m`bTu?PK zDjt_lOiioQ8qKUuH#avoKR>V5X!-pEFWR}_U%;_pMkAZk)h`$nOJoY=a077mXpl~clD(YRazy3Xq6n2l|SNTSwi!8X$> zm2z^5)6NwlqO#%Qb>Ql+M4!Zbk6K>$74~*jC!*B7TV7#o?%;VYt*lA#RyDuDJ@RQw z|EPRsVad?M#``+;jb>?S`G4646p0r;h9Db|-8=j563_=^X(>y&_%X4R6>VdMLKz-E ziuMY;X)q~Fj}-cBFzSuD$VfkT$@$DeYI>>JyVmoq>N_53e!g#u>z#7qyUmWc5D-@l znGh5oZJHNj5SyIPvr~Gm1kO+xpKmSrV_UZPCp7M}98SQd&b%C>&3^l@|!wG+5?3v#{rlltWXJw++MdSF1zH{WBWj`(RfXl?B%dqS^4%5gh%*B|*$>_Pw zMgdk5T9!XL8*7FI_v=nf20YT2#NFPA;e(tP0Web`aSm7X#Zzj2czAQo+Vk(xCmBOmf#Z9IVo@{F zhmDh!>rts|KB24nC&m#MCXZlkDC{L<+mSI zV-t^k>#~F9Skf!8orLe~h`HPqWhaPU?~lLGLZ&|7y(KeB)Xl(Ju5=R%*VML8++V|~ zr#fWj?Af+CpBgjcOn2)DIu*-om}0i(fBq2@0}nO_&eF&F;pph1TC#C>3Nry(LXHpFS~lWNS&a P{wY1`jX^&<7@GDUx|%!% literal 0 HcmV?d00001 diff --git a/android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png b/android/src/main/res/drawable-xxxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..c461f63eff566e13feb6f0a76484249d7475cd48 GIT binary patch literal 1421 zcmY+Dc~DbV6o-RE1kq^}6wN3CMjeGnTcO&b2(oAdL4qB};)M-Rc{wHkpSOa&oo2vunil?GJ- z2STQn&0#o>4`?)MHLTLWQ%buSXf&wWu1CO5lB62esWkuvtAG+hUVMN|X+Q?RD2f_H z5S7+(3PSB1wf#7xMIpzo(PA1Hvma5RgM&y<4~3#Agy2(yX%QSjaSS7HoWyk`PLMi+ zL@@$JaWFOnI;sE@3}$CKuyz`Z;22KeI)WhdBuVM@lpf4MQ7BG;?kdQkL3J1oXnKOQ zFH&zeQcr=7KnC)_$8-cm4UwcCGzA?6xg-7|i z`z466sQ_fe34Z0u(RWs0j=IgNEVI0iK8PG8tL5Eiww)3h&G}nSWcZFer(x(X5uW5Z zU3nx`zRfQ}T)j|&9GkX?bY=lT$I`lIvAPegFCk7c7OL zkJsPx>16-TN%lXeOk+PYosgbMB9blZW13r6mR;|pH*OW@kA%$06?&Jpx~V>A_obT# z0%_6Lvcsg7ynCgICo{u+=%20FFkB-WWnC}hk{RX`|Mpf5ex*cS6q(^7)INv~gjRJ}cC(1}%c5P$x4-Kiwiy1AR7x7eI&X7X zkL%r$j|PMputoOAc>B>9dRjs#q9_VE9R{ID zF1C3o!&e;Fss8$aD8z48F@ErlhllH9hEURAViX;|##%Hj0uDOv?RIMv?XFrNbhU*U zRZ9#EmX|i0P;lEjMJw`(RZMSd^SsCINcpU>`}M{^hEv*ja?H5x)nIyi=X^KY#ep&7 z$GLS@!Few;KeenQBGe-*1DmKEeLa!5wqtRGq3!Q5+C)-&MxDl^5pGGkeShKqvhU0Nd|n{mu4@szgx}}FZwnNY?3V=l1JeOF zob74~-`*sr&&XmX$%1z#CN(gNY70I2U2|FV^nhzC53t>q!pv2|z?e-7;!?X8b4qK2 zy*5dgWwxvzZcC~!XjX2>;>oLmpI@n&o3nc1)-`)XWByVebt$OVx{c@0ss62Ch6}f3 zqTeUf_-kJB@~r7Iw&ceU$20QblphV5`m5TG*KZVUET=g>L!UgFd{}Af>Pw&5dYSLG zVzrE0#U=+H9x}@1k*Az@aPlW(PCS?-p8R`NQIe@Knr@ymn-p~cM}PXJuX5-4UV}lw zw-{f1R3d%!AXkv$iSJGb+GyGHjE|RXH0Q + + + + + + + + + + + + + + diff --git a/android/src/main/res/drawable/googlepay_button_background.xml b/android/src/main/res/drawable/googlepay_button_background.xml new file mode 100755 index 000000000..8f138dc54 --- /dev/null +++ b/android/src/main/res/drawable/googlepay_button_background.xml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/android/src/main/res/drawable/googlepay_button_content.xml b/android/src/main/res/drawable/googlepay_button_content.xml new file mode 100755 index 000000000..57596ba5f --- /dev/null +++ b/android/src/main/res/drawable/googlepay_button_content.xml @@ -0,0 +1,48 @@ + + + + + + + + + diff --git a/android/src/main/res/drawable/googlepay_button_no_shadow_background.xml b/android/src/main/res/drawable/googlepay_button_no_shadow_background.xml new file mode 100755 index 000000000..d6eab82b3 --- /dev/null +++ b/android/src/main/res/drawable/googlepay_button_no_shadow_background.xml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/android/src/main/res/drawable/googlepay_button_overlay.xml b/android/src/main/res/drawable/googlepay_button_overlay.xml new file mode 100755 index 000000000..6e46c4480 --- /dev/null +++ b/android/src/main/res/drawable/googlepay_button_overlay.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/android/src/main/res/drawable/pay_with_googlepay_button_content.xml b/android/src/main/res/drawable/pay_with_googlepay_button_content.xml new file mode 100755 index 000000000..d1789ed98 --- /dev/null +++ b/android/src/main/res/drawable/pay_with_googlepay_button_content.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/android/src/main/res/layout-night/googlepay_button.xml b/android/src/main/res/layout-night/googlepay_button.xml new file mode 100755 index 000000000..41f09f7b5 --- /dev/null +++ b/android/src/main/res/layout-night/googlepay_button.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/android/src/main/res/layout-night/pay_with_googlepay_button.xml b/android/src/main/res/layout-night/pay_with_googlepay_button.xml new file mode 100755 index 000000000..9ac6e8aeb --- /dev/null +++ b/android/src/main/res/layout-night/pay_with_googlepay_button.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/layout/googlepay_button.xml b/android/src/main/res/layout/googlepay_button.xml new file mode 100755 index 000000000..94cab75a3 --- /dev/null +++ b/android/src/main/res/layout/googlepay_button.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/android/src/main/res/layout/googlepay_button_no_shadow.xml b/android/src/main/res/layout/googlepay_button_no_shadow.xml new file mode 100755 index 000000000..41f09f7b5 --- /dev/null +++ b/android/src/main/res/layout/googlepay_button_no_shadow.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/android/src/main/res/layout/pay_with_googlepay_button.xml b/android/src/main/res/layout/pay_with_googlepay_button.xml new file mode 100755 index 000000000..9ac6e8aeb --- /dev/null +++ b/android/src/main/res/layout/pay_with_googlepay_button.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/layout/pay_with_googlepay_button_no_shadow.xml b/android/src/main/res/layout/pay_with_googlepay_button_no_shadow.xml new file mode 100755 index 000000000..e1f0a7359 --- /dev/null +++ b/android/src/main/res/layout/pay_with_googlepay_button_no_shadow.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/android/src/main/res/values-night/googlepay_strings.xml b/android/src/main/res/values-night/googlepay_strings.xml new file mode 100755 index 000000000..81d01c2b7 --- /dev/null +++ b/android/src/main/res/values-night/googlepay_strings.xml @@ -0,0 +1,12 @@ + + + Google Pay + Buy with Google Pay + Donate With Google Pay + Pay With Google Pay + Subscribe With Google Pay + Book With Google Pay + Checkout With Google Pay + Order With Google Pay + View In Google Pay + \ No newline at end of file diff --git a/android/src/main/res/values/googlepay_strings.xml b/android/src/main/res/values/googlepay_strings.xml new file mode 100755 index 000000000..81d01c2b7 --- /dev/null +++ b/android/src/main/res/values/googlepay_strings.xml @@ -0,0 +1,12 @@ + + + Google Pay + Buy with Google Pay + Donate With Google Pay + Pay With Google Pay + Subscribe With Google Pay + Book With Google Pay + Checkout With Google Pay + Order With Google Pay + View In Google Pay + \ No newline at end of file diff --git a/docs/GooglePay.md b/docs/GooglePay.md new file mode 100644 index 000000000..b58cb3ec0 --- /dev/null +++ b/docs/GooglePay.md @@ -0,0 +1,176 @@ +# Google Pay + +## Learn how to accept payments using Google Pay. + +Google Pay allows customers to make payments in your app or website using any credit or debit card saved to their Google Account, including those from Google Play, YouTube, Chrome, or an Android device. Use the Google Pay API to request any credit or debit card stored in your customer’s Google account. + +Google Pay is fully compatible with Stripe’s products and features (e.g., [subscriptions](https://stripe.com/docs/billing)), allowing you to use it in place of a traditional payment form whenever possible. Use it to accept payments for physical goods, donations, subscriptions, and more. + +## Setup Stripe + +### Server side + +// + +### Client side + +The [React Native SDK](https://github.com/stripe/stripe-react-native) is open source and fully documented. Internally, it makes use of native iOS and Android SDKs. +Install the SDK by running: + +```sh +yarn add react-native-stripe-sdk +``` + +For iOS you will have to run `pod install` inside `ios` directory in order to install needed native dependencies. Android won't require any additional steps. + +When your app starts, configure the SDK with your Stripe [publishable key](https://stripe.com/dashboard.stripe.com/account/apikeys) so it can make requests to the Stripe API: + +```tsx +import { StripeProvider } from '@stripe/stripe-react-native'; + +function App() { + return ( + + // Your app code here + + ); +} +``` + +## Initialize Google Pay + +Next, initialize a Google Pay by calling `initGooglePay` method. Call this on initial render of your checkout screen for best performance. + +`initGooglePay` accepts several configuration options that can be customized for your needs. +See [SDK Reference](https://stripe.dev/stripe-react-native/api-reference/index.html) for more details. + +```tsx +import { useGooglePay } from 'stripe-react-native'; + +function CheckoutScreen() { + const { initGooglePay } = useGooglePay(); + const [initialized, setInitialized] = useState(false) + + useEffect(() => { + async function initialize() { + const { error } = await initGooglePay({ + testEnv: true, + merchantName: 'Widget Store' + countryCode: 'US', + billingAddressConfig: { + format: 'FULL', + isPhoneNumberRequired: true, + isRequired: false, + }, + existingPaymentMethodRequired: false, + isEmailRequired: true, + }); + + if (error) { + Alert.alert(error.code, error.message); + return; + } + setInitialized(true); + } + initialize(); + }, [initGooglePay]); +} +``` + +After initializing GooglePay, the `initGooglePay` promise is resolved, it's successful if there is no error. This information can be used to update your UI to indicate to your customer that Google Pay is ready to be used. + +```tsx +import { useGooglePay } from 'stripe-react-native'; + +function CheckoutScreen() { + const [initialized, setInitialized] = useState(false); + + // continued from above + + return ( + +