@stripe/stripe-react-native 0.21.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/android/build.gradle +1 -0
  3. package/android/proguard-rules.txt +7 -0
  4. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +4 -2
  5. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +2 -3
  6. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +5 -0
  7. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +46 -8
  8. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +132 -0
  9. package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +144 -0
  10. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +123 -8
  11. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +5 -0
  12. package/android/src/main/res/drawable/book_with_googlepay_button_content.xml +14 -0
  13. package/android/src/main/res/drawable/buy_with_googlepay_button_content.xml +14 -0
  14. package/android/src/main/res/drawable/checkout_with_googlepay_button_content.xml +14 -0
  15. package/android/src/main/res/drawable/donate_with_googlepay_button_content.xml +14 -0
  16. package/android/src/main/res/drawable/googlepay_button_background_shape.xml +11 -0
  17. package/android/src/main/res/drawable/googlepay_mark_background.xml +12 -0
  18. package/android/src/main/res/drawable/googlepay_mark_content.xml +27 -0
  19. package/android/src/main/res/drawable/order_with_googlepay_button_content.xml +14 -0
  20. package/android/src/main/res/drawable/pay_with_googlepay_button_content.xml +6 -6
  21. package/android/src/main/res/drawable/subscribe_with_googlepay_button_content.xml +14 -0
  22. package/android/src/main/res/drawable-ar/book_with_googlepay_button_content.xml +14 -0
  23. package/android/src/main/res/drawable-ar/buy_with_googlepay_button_content.xml +14 -0
  24. package/android/src/main/res/drawable-ar/checkout_with_googlepay_button_content.xml +14 -0
  25. package/android/src/main/res/drawable-ar/donate_with_googlepay_button_content.xml +14 -0
  26. package/android/src/main/res/drawable-ar/order_with_googlepay_button_content.xml +14 -0
  27. package/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml +6 -6
  28. package/android/src/main/res/drawable-ar/subscribe_with_googlepay_button_content.xml +14 -0
  29. package/android/src/main/res/drawable-bg/book_with_googlepay_button_content.xml +14 -0
  30. package/android/src/main/res/drawable-bg/buy_with_googlepay_button_content.xml +14 -0
  31. package/android/src/main/res/drawable-bg/checkout_with_googlepay_button_content.xml +14 -0
  32. package/android/src/main/res/drawable-bg/donate_with_googlepay_button_content.xml +14 -0
  33. package/android/src/main/res/drawable-bg/order_with_googlepay_button_content.xml +14 -0
  34. package/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml +4 -4
  35. package/android/src/main/res/drawable-bg/subscribe_with_googlepay_button_content.xml +14 -0
  36. package/android/src/main/res/drawable-ca/book_with_googlepay_button_content.xml +14 -0
  37. package/android/src/main/res/drawable-ca/buy_with_googlepay_button_content.xml +14 -0
  38. package/android/src/main/res/drawable-ca/checkout_with_googlepay_button_content.xml +14 -0
  39. package/android/src/main/res/drawable-ca/donate_with_googlepay_button_content.xml +14 -0
  40. package/android/src/main/res/drawable-ca/order_with_googlepay_button_content.xml +14 -0
  41. package/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml +6 -6
  42. package/android/src/main/res/drawable-ca/subscribe_with_googlepay_button_content.xml +14 -0
  43. package/android/src/main/res/drawable-cs/book_with_googlepay_button_content.xml +14 -0
  44. package/android/src/main/res/drawable-cs/buy_with_googlepay_button_content.xml +14 -0
  45. package/android/src/main/res/drawable-cs/checkout_with_googlepay_button_content.xml +14 -0
  46. package/android/src/main/res/drawable-cs/donate_with_googlepay_button_content.xml +14 -0
  47. package/android/src/main/res/drawable-cs/order_with_googlepay_button_content.xml +14 -0
  48. package/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml +6 -6
  49. package/android/src/main/res/drawable-cs/subscribe_with_googlepay_button_content.xml +14 -0
  50. package/android/src/main/res/drawable-da/book_with_googlepay_button_content.xml +14 -0
  51. package/android/src/main/res/drawable-da/buy_with_googlepay_button_content.xml +14 -0
  52. package/android/src/main/res/drawable-da/checkout_with_googlepay_button_content.xml +14 -0
  53. package/android/src/main/res/drawable-da/donate_with_googlepay_button_content.xml +14 -0
  54. package/android/src/main/res/drawable-da/order_with_googlepay_button_content.xml +14 -0
  55. package/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml +6 -6
  56. package/android/src/main/res/drawable-da/subscribe_with_googlepay_button_content.xml +14 -0
  57. package/android/src/main/res/drawable-de/book_with_googlepay_button_content.xml +15 -0
  58. package/android/src/main/res/drawable-de/buy_with_googlepay_button_content.xml +15 -0
  59. package/android/src/main/res/drawable-de/checkout_with_googlepay_button_content.xml +15 -0
  60. package/android/src/main/res/drawable-de/donate_with_googlepay_button_content.xml +15 -0
  61. package/android/src/main/res/drawable-de/order_with_googlepay_button_content.xml +15 -0
  62. package/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml +7 -7
  63. package/android/src/main/res/drawable-de/subscribe_with_googlepay_button_content.xml +15 -0
  64. package/android/src/main/res/drawable-el/book_with_googlepay_button_content.xml +14 -0
  65. package/android/src/main/res/drawable-el/buy_with_googlepay_button_content.xml +14 -0
  66. package/android/src/main/res/drawable-el/checkout_with_googlepay_button_content.xml +14 -0
  67. package/android/src/main/res/drawable-el/donate_with_googlepay_button_content.xml +14 -0
  68. package/android/src/main/res/drawable-el/order_with_googlepay_button_content.xml +14 -0
  69. package/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml +4 -4
  70. package/android/src/main/res/drawable-el/subscribe_with_googlepay_button_content.xml +14 -0
  71. package/android/src/main/res/drawable-et/book_with_googlepay_button_content.xml +15 -0
  72. package/android/src/main/res/drawable-et/buy_with_googlepay_button_content.xml +15 -0
  73. package/android/src/main/res/drawable-et/checkout_with_googlepay_button_content.xml +15 -0
  74. package/android/src/main/res/drawable-et/donate_with_googlepay_button_content.xml +15 -0
  75. package/android/src/main/res/drawable-et/order_with_googlepay_button_content.xml +15 -0
  76. package/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml +8 -8
  77. package/android/src/main/res/drawable-et/subscribe_with_googlepay_button_content.xml +15 -0
  78. package/android/src/main/res/drawable-fi/book_with_googlepay_button_content.xml +15 -0
  79. package/android/src/main/res/drawable-fi/buy_with_googlepay_button_content.xml +15 -0
  80. package/android/src/main/res/drawable-fi/checkout_with_googlepay_button_content.xml +15 -0
  81. package/android/src/main/res/drawable-fi/donate_with_googlepay_button_content.xml +15 -0
  82. package/android/src/main/res/drawable-fi/order_with_googlepay_button_content.xml +15 -0
  83. package/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml +8 -8
  84. package/android/src/main/res/drawable-fi/subscribe_with_googlepay_button_content.xml +15 -0
  85. package/android/src/main/res/drawable-fr/book_with_googlepay_button_content.xml +14 -0
  86. package/android/src/main/res/drawable-fr/buy_with_googlepay_button_content.xml +14 -0
  87. package/android/src/main/res/drawable-fr/checkout_with_googlepay_button_content.xml +14 -0
  88. package/android/src/main/res/drawable-fr/donate_with_googlepay_button_content.xml +14 -0
  89. package/android/src/main/res/drawable-fr/order_with_googlepay_button_content.xml +14 -0
  90. package/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml +5 -5
  91. package/android/src/main/res/drawable-fr/subscribe_with_googlepay_button_content.xml +14 -0
  92. package/android/src/main/res/drawable-hr/book_with_googlepay_button_content.xml +14 -0
  93. package/android/src/main/res/drawable-hr/buy_with_googlepay_button_content.xml +14 -0
  94. package/android/src/main/res/drawable-hr/checkout_with_googlepay_button_content.xml +14 -0
  95. package/android/src/main/res/drawable-hr/donate_with_googlepay_button_content.xml +14 -0
  96. package/android/src/main/res/drawable-hr/order_with_googlepay_button_content.xml +14 -0
  97. package/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml +4 -4
  98. package/android/src/main/res/drawable-hr/subscribe_with_googlepay_button_content.xml +14 -0
  99. package/android/src/main/res/drawable-id/book_with_googlepay_button_content.xml +14 -0
  100. package/android/src/main/res/drawable-id/buy_with_googlepay_button_content.xml +14 -0
  101. package/android/src/main/res/drawable-id/checkout_with_googlepay_button_content.xml +14 -0
  102. package/android/src/main/res/drawable-id/donate_with_googlepay_button_content.xml +14 -0
  103. package/android/src/main/res/drawable-id/order_with_googlepay_button_content.xml +14 -0
  104. package/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml +4 -4
  105. package/android/src/main/res/drawable-id/subscribe_with_googlepay_button_content.xml +14 -0
  106. package/android/src/main/res/drawable-it/book_with_googlepay_button_content.xml +14 -0
  107. package/android/src/main/res/drawable-it/buy_with_googlepay_button_content.xml +14 -0
  108. package/android/src/main/res/drawable-it/checkout_with_googlepay_button_content.xml +14 -0
  109. package/android/src/main/res/drawable-it/donate_with_googlepay_button_content.xml +14 -0
  110. package/android/src/main/res/drawable-it/order_with_googlepay_button_content.xml +14 -0
  111. package/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml +6 -6
  112. package/android/src/main/res/drawable-it/subscribe_with_googlepay_button_content.xml +14 -0
  113. package/android/src/main/res/drawable-ja/book_with_googlepay_button_content.xml +14 -0
  114. package/android/src/main/res/drawable-ja/buy_with_googlepay_button_content.xml +14 -0
  115. package/android/src/main/res/drawable-ja/checkout_with_googlepay_button_content.xml +14 -0
  116. package/android/src/main/res/drawable-ja/donate_with_googlepay_button_content.xml +14 -0
  117. package/android/src/main/res/drawable-ja/order_with_googlepay_button_content.xml +14 -0
  118. package/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml +5 -5
  119. package/android/src/main/res/drawable-ja/subscribe_with_googlepay_button_content.xml +14 -0
  120. package/android/src/main/res/drawable-ko/book_with_googlepay_button_content.xml +14 -0
  121. package/android/src/main/res/drawable-ko/buy_with_googlepay_button_content.xml +14 -0
  122. package/android/src/main/res/drawable-ko/checkout_with_googlepay_button_content.xml +14 -0
  123. package/android/src/main/res/drawable-ko/donate_with_googlepay_button_content.xml +14 -0
  124. package/android/src/main/res/drawable-ko/order_with_googlepay_button_content.xml +14 -0
  125. package/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml +7 -7
  126. package/android/src/main/res/drawable-ko/subscribe_with_googlepay_button_content.xml +14 -0
  127. package/android/src/main/res/drawable-ms/book_with_googlepay_button_content.xml +14 -0
  128. package/android/src/main/res/drawable-ms/buy_with_googlepay_button_content.xml +14 -0
  129. package/android/src/main/res/drawable-ms/checkout_with_googlepay_button_content.xml +14 -0
  130. package/android/src/main/res/drawable-ms/donate_with_googlepay_button_content.xml +14 -0
  131. package/android/src/main/res/drawable-ms/order_with_googlepay_button_content.xml +14 -0
  132. package/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml +4 -4
  133. package/android/src/main/res/drawable-ms/subscribe_with_googlepay_button_content.xml +14 -0
  134. package/android/src/main/res/drawable-nl/book_with_googlepay_button_content.xml +14 -0
  135. package/android/src/main/res/drawable-nl/buy_with_googlepay_button_content.xml +14 -0
  136. package/android/src/main/res/drawable-nl/checkout_with_googlepay_button_content.xml +14 -0
  137. package/android/src/main/res/drawable-nl/donate_with_googlepay_button_content.xml +14 -0
  138. package/android/src/main/res/drawable-nl/order_with_googlepay_button_content.xml +14 -0
  139. package/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml +4 -4
  140. package/android/src/main/res/drawable-nl/subscribe_with_googlepay_button_content.xml +14 -0
  141. package/android/src/main/res/drawable-no/book_with_googlepay_button_content.xml +14 -0
  142. package/android/src/main/res/drawable-no/buy_with_googlepay_button_content.xml +14 -0
  143. package/android/src/main/res/drawable-no/checkout_with_googlepay_button_content.xml +14 -0
  144. package/android/src/main/res/drawable-no/donate_with_googlepay_button_content.xml +14 -0
  145. package/android/src/main/res/drawable-no/order_with_googlepay_button_content.xml +14 -0
  146. package/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml +6 -6
  147. package/android/src/main/res/drawable-no/subscribe_with_googlepay_button_content.xml +14 -0
  148. package/android/src/main/res/drawable-pl/book_with_googlepay_button_content.xml +14 -0
  149. package/android/src/main/res/drawable-pl/buy_with_googlepay_button_content.xml +14 -0
  150. package/android/src/main/res/drawable-pl/checkout_with_googlepay_button_content.xml +14 -0
  151. package/android/src/main/res/drawable-pl/donate_with_googlepay_button_content.xml +14 -0
  152. package/android/src/main/res/drawable-pl/order_with_googlepay_button_content.xml +14 -0
  153. package/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml +7 -7
  154. package/android/src/main/res/drawable-pl/subscribe_with_googlepay_button_content.xml +14 -0
  155. package/android/src/main/res/drawable-ru/book_with_googlepay_button_content.xml +14 -0
  156. package/android/src/main/res/drawable-ru/buy_with_googlepay_button_content.xml +14 -0
  157. package/android/src/main/res/drawable-ru/checkout_with_googlepay_button_content.xml +14 -0
  158. package/android/src/main/res/drawable-ru/donate_with_googlepay_button_content.xml +14 -0
  159. package/android/src/main/res/drawable-ru/order_with_googlepay_button_content.xml +14 -0
  160. package/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml +7 -7
  161. package/android/src/main/res/drawable-ru/subscribe_with_googlepay_button_content.xml +14 -0
  162. package/android/src/main/res/drawable-sk/book_with_googlepay_button_content.xml +14 -0
  163. package/android/src/main/res/drawable-sk/buy_with_googlepay_button_content.xml +14 -0
  164. package/android/src/main/res/drawable-sk/checkout_with_googlepay_button_content.xml +14 -0
  165. package/android/src/main/res/drawable-sk/donate_with_googlepay_button_content.xml +14 -0
  166. package/android/src/main/res/drawable-sk/order_with_googlepay_button_content.xml +14 -0
  167. package/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml +4 -4
  168. package/android/src/main/res/drawable-sk/subscribe_with_googlepay_button_content.xml +14 -0
  169. package/android/src/main/res/drawable-sl/book_with_googlepay_button_content.xml +14 -0
  170. package/android/src/main/res/drawable-sl/buy_with_googlepay_button_content.xml +14 -0
  171. package/android/src/main/res/drawable-sl/checkout_with_googlepay_button_content.xml +14 -0
  172. package/android/src/main/res/drawable-sl/donate_with_googlepay_button_content.xml +14 -0
  173. package/android/src/main/res/drawable-sl/order_with_googlepay_button_content.xml +14 -0
  174. package/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml +4 -4
  175. package/android/src/main/res/drawable-sl/subscribe_with_googlepay_button_content.xml +14 -0
  176. package/android/src/main/res/drawable-sr/book_with_googlepay_button_content.xml +14 -0
  177. package/android/src/main/res/drawable-sr/buy_with_googlepay_button_content.xml +14 -0
  178. package/android/src/main/res/drawable-sr/checkout_with_googlepay_button_content.xml +14 -0
  179. package/android/src/main/res/drawable-sr/donate_with_googlepay_button_content.xml +14 -0
  180. package/android/src/main/res/drawable-sr/order_with_googlepay_button_content.xml +14 -0
  181. package/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml +7 -7
  182. package/android/src/main/res/drawable-sr/subscribe_with_googlepay_button_content.xml +14 -0
  183. package/android/src/main/res/drawable-sv/book_with_googlepay_button_content.xml +14 -0
  184. package/android/src/main/res/drawable-sv/buy_with_googlepay_button_content.xml +14 -0
  185. package/android/src/main/res/drawable-sv/checkout_with_googlepay_button_content.xml +14 -0
  186. package/android/src/main/res/drawable-sv/donate_with_googlepay_button_content.xml +14 -0
  187. package/android/src/main/res/drawable-sv/order_with_googlepay_button_content.xml +14 -0
  188. package/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml +4 -4
  189. package/android/src/main/res/drawable-sv/subscribe_with_googlepay_button_content.xml +14 -0
  190. package/android/src/main/res/drawable-th/book_with_googlepay_button_content.xml +14 -0
  191. package/android/src/main/res/drawable-th/buy_with_googlepay_button_content.xml +14 -0
  192. package/android/src/main/res/drawable-th/checkout_with_googlepay_button_content.xml +14 -0
  193. package/android/src/main/res/drawable-th/donate_with_googlepay_button_content.xml +14 -0
  194. package/android/src/main/res/drawable-th/order_with_googlepay_button_content.xml +14 -0
  195. package/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml +6 -6
  196. package/android/src/main/res/drawable-th/subscribe_with_googlepay_button_content.xml +14 -0
  197. package/android/src/main/res/drawable-tr/book_with_googlepay_button_content.xml +14 -0
  198. package/android/src/main/res/drawable-tr/buy_with_googlepay_button_content.xml +14 -0
  199. package/android/src/main/res/drawable-tr/checkout_with_googlepay_button_content.xml +14 -0
  200. package/android/src/main/res/drawable-tr/donate_with_googlepay_button_content.xml +14 -0
  201. package/android/src/main/res/drawable-tr/order_with_googlepay_button_content.xml +14 -0
  202. package/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml +7 -7
  203. package/android/src/main/res/drawable-tr/subscribe_with_googlepay_button_content.xml +14 -0
  204. package/android/src/main/res/drawable-uk/book_with_googlepay_button_content.xml +14 -0
  205. package/android/src/main/res/drawable-uk/buy_with_googlepay_button_content.xml +14 -0
  206. package/android/src/main/res/drawable-uk/checkout_with_googlepay_button_content.xml +14 -0
  207. package/android/src/main/res/drawable-uk/donate_with_googlepay_button_content.xml +14 -0
  208. package/android/src/main/res/drawable-uk/order_with_googlepay_button_content.xml +14 -0
  209. package/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml +5 -5
  210. package/android/src/main/res/drawable-uk/subscribe_with_googlepay_button_content.xml +14 -0
  211. package/android/src/main/res/layout/book_with_googlepay_button.xml +20 -0
  212. package/android/src/main/res/layout/buy_with_googlepay_button.xml +20 -0
  213. package/android/src/main/res/layout/checkout_with_googlepay_button.xml +20 -0
  214. package/android/src/main/res/layout/donate_with_googlepay_button.xml +20 -0
  215. package/android/src/main/res/layout/googlepay_mark_button.xml +18 -0
  216. package/android/src/main/res/layout/order_with_googlepay_button.xml +20 -0
  217. package/android/src/main/res/layout/pay_with_googlepay_button.xml +10 -24
  218. package/android/src/main/res/layout/plain_googlepay_button.xml +17 -0
  219. package/android/src/main/res/layout/subscribe_with_googlepay_button.xml +20 -0
  220. package/android/src/main/res/values/googlepay_strings.xml +3 -2
  221. package/ios/ApplePayButtonManager.m +5 -0
  222. package/ios/ApplePayButtonManager.swift +3 -1
  223. package/ios/ApplePayButtonView.swift +21 -0
  224. package/ios/ApplePayUtils.swift +187 -0
  225. package/ios/ApplePayViewController.swift +279 -0
  226. package/ios/Mappers.swift +26 -7
  227. package/ios/PaymentPassFinder.swift +61 -0
  228. package/ios/PushProvisioning/AddToWalletButtonView.swift +10 -10
  229. package/ios/PushProvisioning/PushProvisioningUtils.swift +39 -16
  230. package/ios/StripeSdk.m +29 -0
  231. package/ios/StripeSdk.swift +193 -129
  232. package/ios/Tests/AddressSheetUtilsTests.swift +1 -7
  233. package/ios/Tests/PushProvisioningTests.swift +14 -11
  234. package/jest/mock.js +44 -0
  235. package/lib/commonjs/NativeStripeSdk.js.map +1 -1
  236. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  237. package/lib/commonjs/components/AddressSheet.js.map +1 -1
  238. package/lib/commonjs/components/ApplePayButton.js +1 -1
  239. package/lib/commonjs/components/ApplePayButton.js.map +1 -1
  240. package/lib/commonjs/components/ApplePayButtonNative.js +2 -0
  241. package/lib/commonjs/components/ApplePayButtonNative.js.map +1 -0
  242. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  243. package/lib/commonjs/components/CardField.js.map +1 -1
  244. package/lib/commonjs/components/CardForm.js.map +1 -1
  245. package/lib/commonjs/components/GooglePayButton.js +1 -1
  246. package/lib/commonjs/components/GooglePayButton.js.map +1 -1
  247. package/lib/commonjs/components/GooglePayButtonNative.js +2 -0
  248. package/lib/commonjs/components/GooglePayButtonNative.js.map +1 -0
  249. package/lib/commonjs/components/PlatformPayButton.js +2 -0
  250. package/lib/commonjs/components/PlatformPayButton.js.map +1 -0
  251. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  252. package/lib/commonjs/components/StripeProvider.js.map +1 -1
  253. package/lib/commonjs/functions.js +1 -1
  254. package/lib/commonjs/functions.js.map +1 -1
  255. package/lib/commonjs/helpers.js.map +1 -1
  256. package/lib/commonjs/hooks/useApplePay.js.map +1 -1
  257. package/lib/commonjs/hooks/useConfirmPayment.js.map +1 -1
  258. package/lib/commonjs/hooks/useConfirmSetupIntent.js.map +1 -1
  259. package/lib/commonjs/hooks/useFinancialConnectionsSheet.js.map +1 -1
  260. package/lib/commonjs/hooks/useGooglePay.js.map +1 -1
  261. package/lib/commonjs/hooks/usePaymentSheet.js.map +1 -1
  262. package/lib/commonjs/hooks/usePlatformPay.js +2 -0
  263. package/lib/commonjs/hooks/usePlatformPay.js.map +1 -0
  264. package/lib/commonjs/hooks/useStripe.js +1 -1
  265. package/lib/commonjs/hooks/useStripe.js.map +1 -1
  266. package/lib/commonjs/index.js +1 -1
  267. package/lib/commonjs/index.js.map +1 -1
  268. package/lib/commonjs/plugin/withStripe.js.map +1 -1
  269. package/lib/commonjs/types/ApplePay.js.map +1 -1
  270. package/lib/commonjs/types/Common.js.map +1 -1
  271. package/lib/commonjs/types/Errors.js +1 -1
  272. package/lib/commonjs/types/Errors.js.map +1 -1
  273. package/lib/commonjs/types/FinancialConnections.js.map +1 -1
  274. package/lib/commonjs/types/GooglePay.js.map +1 -1
  275. package/lib/commonjs/types/NextAction.js.map +1 -1
  276. package/lib/commonjs/types/PaymentIntent.js.map +1 -1
  277. package/lib/commonjs/types/PaymentMethod.js.map +1 -1
  278. package/lib/commonjs/types/PaymentSheet.js.map +1 -1
  279. package/lib/commonjs/types/PlatformPay.js +2 -0
  280. package/lib/commonjs/types/PlatformPay.js.map +1 -0
  281. package/lib/commonjs/types/PushProvisioning.js +2 -0
  282. package/lib/commonjs/types/PushProvisioning.js.map +1 -0
  283. package/lib/commonjs/types/SetupIntent.js.map +1 -1
  284. package/lib/commonjs/types/ThreeDSecure.js.map +1 -1
  285. package/lib/commonjs/types/Token.js.map +1 -1
  286. package/lib/commonjs/types/components/ApplePayButtonComponent.js.map +1 -1
  287. package/lib/commonjs/types/components/AuBECSDebitFormComponent.js.map +1 -1
  288. package/lib/commonjs/types/components/CardFieldInput.js.map +1 -1
  289. package/lib/commonjs/types/components/CardFormView.js.map +1 -1
  290. package/lib/commonjs/types/components/GooglePayButtonComponent.js +2 -0
  291. package/lib/commonjs/types/components/GooglePayButtonComponent.js.map +1 -0
  292. package/lib/commonjs/types/index.js +1 -1
  293. package/lib/commonjs/types/index.js.map +1 -1
  294. package/lib/module/NativeStripeSdk.js.map +1 -1
  295. package/lib/module/components/AddToWalletButton.js.map +1 -1
  296. package/lib/module/components/AddressSheet.js.map +1 -1
  297. package/lib/module/components/ApplePayButton.js +1 -1
  298. package/lib/module/components/ApplePayButton.js.map +1 -1
  299. package/lib/module/components/ApplePayButtonNative.js +2 -0
  300. package/lib/module/components/ApplePayButtonNative.js.map +1 -0
  301. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  302. package/lib/module/components/CardField.js.map +1 -1
  303. package/lib/module/components/CardForm.js.map +1 -1
  304. package/lib/module/components/GooglePayButton.js +1 -1
  305. package/lib/module/components/GooglePayButton.js.map +1 -1
  306. package/lib/module/components/GooglePayButtonNative.js +2 -0
  307. package/lib/module/components/GooglePayButtonNative.js.map +1 -0
  308. package/lib/module/components/PlatformPayButton.js +2 -0
  309. package/lib/module/components/PlatformPayButton.js.map +1 -0
  310. package/lib/module/components/StripeContainer.js.map +1 -1
  311. package/lib/module/components/StripeProvider.js.map +1 -1
  312. package/lib/module/functions.js +1 -1
  313. package/lib/module/functions.js.map +1 -1
  314. package/lib/module/helpers.js.map +1 -1
  315. package/lib/module/hooks/useApplePay.js.map +1 -1
  316. package/lib/module/hooks/useConfirmPayment.js.map +1 -1
  317. package/lib/module/hooks/useConfirmSetupIntent.js.map +1 -1
  318. package/lib/module/hooks/useFinancialConnectionsSheet.js.map +1 -1
  319. package/lib/module/hooks/useGooglePay.js.map +1 -1
  320. package/lib/module/hooks/usePaymentSheet.js.map +1 -1
  321. package/lib/module/hooks/usePlatformPay.js +2 -0
  322. package/lib/module/hooks/usePlatformPay.js.map +1 -0
  323. package/lib/module/hooks/useStripe.js +1 -1
  324. package/lib/module/hooks/useStripe.js.map +1 -1
  325. package/lib/module/index.js +1 -1
  326. package/lib/module/index.js.map +1 -1
  327. package/lib/module/plugin/withStripe.js.map +1 -1
  328. package/lib/module/types/ApplePay.js.map +1 -1
  329. package/lib/module/types/Common.js.map +1 -1
  330. package/lib/module/types/Errors.js +1 -1
  331. package/lib/module/types/Errors.js.map +1 -1
  332. package/lib/module/types/FinancialConnections.js.map +1 -1
  333. package/lib/module/types/GooglePay.js.map +1 -1
  334. package/lib/module/types/NextAction.js.map +1 -1
  335. package/lib/module/types/PaymentIntent.js.map +1 -1
  336. package/lib/module/types/PaymentMethod.js.map +1 -1
  337. package/lib/module/types/PaymentSheet.js.map +1 -1
  338. package/lib/module/types/PlatformPay.js +2 -0
  339. package/lib/module/types/PlatformPay.js.map +1 -0
  340. package/lib/module/types/PushProvisioning.js +2 -0
  341. package/lib/module/types/PushProvisioning.js.map +1 -0
  342. package/lib/module/types/SetupIntent.js.map +1 -1
  343. package/lib/module/types/ThreeDSecure.js.map +1 -1
  344. package/lib/module/types/Token.js.map +1 -1
  345. package/lib/module/types/components/ApplePayButtonComponent.js.map +1 -1
  346. package/lib/module/types/components/AuBECSDebitFormComponent.js.map +1 -1
  347. package/lib/module/types/components/CardFieldInput.js.map +1 -1
  348. package/lib/module/types/components/CardFormView.js.map +1 -1
  349. package/lib/module/types/components/GooglePayButtonComponent.js +2 -0
  350. package/lib/module/types/components/GooglePayButtonComponent.js.map +1 -0
  351. package/lib/module/types/index.js +1 -1
  352. package/lib/module/types/index.js.map +1 -1
  353. package/lib/typescript/src/NativeStripeSdk.d.ts +8 -1
  354. package/lib/typescript/src/components/ApplePayButton.d.ts +1 -1
  355. package/lib/typescript/src/components/ApplePayButtonNative.d.ts +3 -0
  356. package/lib/typescript/src/components/GooglePayButtonNative.d.ts +3 -0
  357. package/lib/typescript/src/components/PlatformPayButton.d.ts +65 -0
  358. package/lib/typescript/src/functions.d.ts +73 -1
  359. package/lib/typescript/src/hooks/usePlatformPay.d.ts +70 -0
  360. package/lib/typescript/src/hooks/useStripe.d.ts +18 -1
  361. package/lib/typescript/src/index.d.ts +2 -0
  362. package/lib/typescript/src/types/ApplePay.d.ts +9 -0
  363. package/lib/typescript/src/types/Errors.d.ts +6 -1
  364. package/lib/typescript/src/types/GooglePay.d.ts +2 -1
  365. package/lib/typescript/src/types/PlatformPay.d.ts +285 -0
  366. package/lib/typescript/src/types/PushProvisioning.d.ts +66 -0
  367. package/lib/typescript/src/types/Token.d.ts +1 -0
  368. package/lib/typescript/src/types/components/ApplePayButtonComponent.d.ts +14 -3
  369. package/lib/typescript/src/types/components/GooglePayButtonComponent.d.ts +6 -0
  370. package/lib/typescript/src/types/index.d.ts +4 -38
  371. package/package.json +10 -3
  372. package/src/NativeStripeSdk.tsx +20 -0
  373. package/src/components/ApplePayButton.tsx +3 -10
  374. package/src/components/ApplePayButtonNative.tsx +5 -0
  375. package/src/components/GooglePayButton.tsx +1 -3
  376. package/src/components/GooglePayButtonNative.tsx +7 -0
  377. package/src/components/PlatformPayButton.tsx +155 -0
  378. package/src/functions.ts +181 -0
  379. package/src/hooks/usePlatformPay.tsx +174 -0
  380. package/src/hooks/useStripe.tsx +77 -0
  381. package/src/index.tsx +6 -0
  382. package/src/types/ApplePay.ts +9 -0
  383. package/src/types/Errors.ts +7 -1
  384. package/src/types/GooglePay.ts +2 -1
  385. package/src/types/PlatformPay.ts +326 -0
  386. package/src/types/PushProvisioning.ts +76 -0
  387. package/src/types/Token.ts +1 -0
  388. package/src/types/components/ApplePayButtonComponent.ts +21 -4
  389. package/src/types/components/GooglePayButtonComponent.ts +6 -0
  390. package/src/types/index.ts +5 -54
  391. package/stripe-react-native.podspec +1 -1
  392. package/android/src/main/res/drawable/googlepay_button_background.xml +0 -6
  393. package/android/src/main/res/drawable/googlepay_button_content.xml +0 -48
  394. package/android/src/main/res/drawable/googlepay_button_overlay.xml +0 -12
  395. package/android/src/main/res/drawable-af/pay_with_googlepay_button_content.xml +0 -14
  396. package/android/src/main/res/drawable-am/pay_with_googlepay_button_content.xml +0 -15
  397. package/android/src/main/res/drawable-as/pay_with_googlepay_button_content.xml +0 -14
  398. package/android/src/main/res/drawable-az/pay_with_googlepay_button_content.xml +0 -14
  399. package/android/src/main/res/drawable-be/pay_with_googlepay_button_content.xml +0 -14
  400. package/android/src/main/res/drawable-bn/pay_with_googlepay_button_content.xml +0 -14
  401. package/android/src/main/res/drawable-bs/pay_with_googlepay_button_content.xml +0 -14
  402. package/android/src/main/res/drawable-cy/pay_with_googlepay_button_content.xml +0 -14
  403. package/android/src/main/res/drawable-en-rau/pay_with_googlepay_button_content.xml +0 -14
  404. package/android/src/main/res/drawable-en-rca/pay_with_googlepay_button_content.xml +0 -14
  405. package/android/src/main/res/drawable-en-rgb/pay_with_googlepay_button_content.xml +0 -14
  406. package/android/src/main/res/drawable-en-rin/pay_with_googlepay_button_content.xml +0 -14
  407. package/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml +0 -14
  408. package/android/src/main/res/drawable-es-res/pay_with_googlepay_button_content.xml +0 -14
  409. package/android/src/main/res/drawable-eu/pay_with_googlepay_button_content.xml +0 -15
  410. package/android/src/main/res/drawable-fa/pay_with_googlepay_button_content.xml +0 -14
  411. package/android/src/main/res/drawable-fil/pay_with_googlepay_button_content.xml +0 -14
  412. package/android/src/main/res/drawable-fr-rca/pay_with_googlepay_button_content.xml +0 -14
  413. package/android/src/main/res/drawable-ga/pay_with_googlepay_button_content.xml +0 -14
  414. package/android/src/main/res/drawable-gl/pay_with_googlepay_button_content.xml +0 -14
  415. package/android/src/main/res/drawable-gu/pay_with_googlepay_button_content.xml +0 -14
  416. package/android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png +0 -0
  417. package/android/src/main/res/drawable-hu/pay_with_googlepay_button_content.xml +0 -15
  418. package/android/src/main/res/drawable-hy/pay_with_googlepay_button_content.xml +0 -15
  419. package/android/src/main/res/drawable-is/pay_with_googlepay_button_content.xml +0 -14
  420. package/android/src/main/res/drawable-iw/pay_with_googlepay_button_content.xml +0 -14
  421. package/android/src/main/res/drawable-ka/pay_with_googlepay_button_content.xml +0 -15
  422. package/android/src/main/res/drawable-kk/pay_with_googlepay_button_content.xml +0 -14
  423. package/android/src/main/res/drawable-km/pay_with_googlepay_button_content.xml +0 -14
  424. package/android/src/main/res/drawable-kn/pay_with_googlepay_button_content.xml +0 -14
  425. package/android/src/main/res/drawable-ky/pay_with_googlepay_button_content.xml +0 -14
  426. package/android/src/main/res/drawable-lo/pay_with_googlepay_button_content.xml +0 -14
  427. package/android/src/main/res/drawable-lt/pay_with_googlepay_button_content.xml +0 -14
  428. package/android/src/main/res/drawable-lv/pay_with_googlepay_button_content.xml +0 -14
  429. package/android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png +0 -0
  430. package/android/src/main/res/drawable-mk/pay_with_googlepay_button_content.xml +0 -14
  431. package/android/src/main/res/drawable-ml/pay_with_googlepay_button_content.xml +0 -14
  432. package/android/src/main/res/drawable-mn/pay_with_googlepay_button_content.xml +0 -14
  433. package/android/src/main/res/drawable-mr/pay_with_googlepay_button_content.xml +0 -14
  434. package/android/src/main/res/drawable-ne/pay_with_googlepay_button_content.xml +0 -14
  435. package/android/src/main/res/drawable-pt-rbr/pay_with_googlepay_button_content.xml +0 -14
  436. package/android/src/main/res/drawable-pt-rpt/pay_with_googlepay_button_content.xml +0 -14
  437. package/android/src/main/res/drawable-ro/pay_with_googlepay_button_content.xml +0 -14
  438. package/android/src/main/res/drawable-sq/pay_with_googlepay_button_content.xml +0 -14
  439. package/android/src/main/res/drawable-sw/pay_with_googlepay_button_content.xml +0 -14
  440. package/android/src/main/res/drawable-ta/pay_with_googlepay_button_content.xml +0 -14
  441. package/android/src/main/res/drawable-te/pay_with_googlepay_button_content.xml +0 -14
  442. package/android/src/main/res/drawable-ur/pay_with_googlepay_button_content.xml +0 -14
  443. package/android/src/main/res/drawable-uz/pay_with_googlepay_button_content.xml +0 -14
  444. package/android/src/main/res/drawable-v21/googlepay_button_background.xml +0 -7
  445. package/android/src/main/res/drawable-vi/pay_with_googlepay_button_content.xml +0 -14
  446. package/android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png +0 -0
  447. package/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png +0 -0
  448. package/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png +0 -0
  449. package/android/src/main/res/drawable-zh-rcn/pay_with_googlepay_button_content.xml +0 -15
  450. package/android/src/main/res/drawable-zh-rhk/pay_with_googlepay_button_content.xml +0 -15
  451. package/android/src/main/res/drawable-zh-rtw/pay_with_googlepay_button_content.xml +0 -15
  452. package/android/src/main/res/drawable-zu/pay_with_googlepay_button_content.xml +0 -14
  453. package/android/src/main/res/layout/googlepay_button.xml +0 -39
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.22.1 - 2022-12-07
6
+
7
+ ## Fixes
8
+
9
+ - Fixed the `ShippingMethod` type to contain the `isPending` field instead of a `type` field (which previously was never correct). This reflects the inputs accepted. [#1227](https://github.com/stripe/stripe-react-native/pull/1227)
10
+ - Fixed the `ShippingMethod` type to contain the `startDate` and `endDate` keys, if applicable. [#1227](https://github.com/stripe/stripe-react-native/pull/1227)
11
+ - Fixed instances of the "duplicate registered views" error. [#1233](https://github.com/stripe/stripe-react-native/pull/1233)
12
+ - Fixed extra margin that was being added to `<CardForm />` on Android. [#1234](https://github.com/stripe/stripe-react-native/pull/1234)
13
+
14
+ ## 0.22.0 - 2022-12-02
15
+
16
+ ### Breaking changes
17
+
18
+ ### New features
19
+
20
+ - Added the `hasPairedAppleWatch` option to `canAddCardToWallet`. [#1219](https://github.com/stripe/stripe-react-native/pull/1219)
21
+ - Added new functions and a new component to streamline integrating with Apple and Google Pay and add more feature support. See the [Migrating to Platform Pay guide](https://github.com/stripe/stripe-react-native/blob/master/docs/Platform-Pay-Migration.md) for more details. The old Apple and Google Pay APIs are marked as `deprecated` and will be removed in a future release, but are still supported in this version.
22
+
23
+ ## Fixes
24
+
25
+ - Fixed an issue where builds would error with the message `'const' enums are not supported.` [see commit](https://github.com/stripe/stripe-react-native/commit/f882bfa588aa6d23a980b4b43d2cca660ca1dd2a)
26
+ - Fixed an issue where the `canAddCardToWallet` method would sometimes wrongly return `false` with a `details.status` of `MISSING_CONFIGURATION` in production builds. [#1215](https://github.com/stripe/stripe-react-native/pull/1215)
27
+ - Fixed an issue on Android where, for certain countries, the postal code would not be enabled but would still be required. [#1213](https://github.com/stripe/stripe-react-native/pull/1213)
28
+ - Fixed an issue on iOS where `canAddCardToWallet` would return `false` if the card had already been provisioned on a paired device like an Apple Watch, but had not yet been provisioned on the current device, and would also return `false` if the card had been provisioned on the current device, but not on a paired Apple Watch. [#1219](https://github.com/stripe/stripe-react-native/pull/1219)
29
+
5
30
  ## 0.21.0 - 2022-11-15
6
31
 
7
32
  ### Breaking changes
@@ -9,6 +34,7 @@
9
34
  ### New features
10
35
 
11
36
  - Added the `<AddressSheet />` component, which enables you to collect local and international shipping or billing addresses from your customers _with_ address autocomplete. [#1169](https://github.com/stripe/stripe-react-native/pull/1169)
37
+ - [Find the docs here](https://stripe.com/docs/elements/address-element?platform=react-native)
12
38
  - Added the `defaultShippingDetails` field to the `params` argument in `initPaymentSheet(params)`. This will allow you to collect shipping details (either in your own UI or using the new `<AddressSheet />` component) for payments in the Payment Sheet. [#1169](https://github.com/stripe/stripe-react-native/pull/1169)
13
39
 
14
40
  ## Fixes
@@ -38,7 +64,7 @@
38
64
  - Fixed an issue with Financial Connections on iOS where the app wouldn't properly redirect back after authentication. [#1178](https://github.com/stripe/stripe-react-native/pull/1178)
39
65
  - Fixed `borderWidth` and `borderRadius` for `<CardField />` and `CardForm />` was inconsistent across iOS and Android. [#1182](https://github.com/stripe/stripe-react-native/pull/1182)
40
66
 
41
- ## 0.19.0 - 2022-09-16
67
+ ## 0.19.0 - 2022-09-16 (📌 Expo SDK 47)
42
68
 
43
69
  ### Breaking changes
44
70
 
@@ -35,6 +35,7 @@ android {
35
35
  versionName "1.0"
36
36
  vectorDrawables.useSupportLibrary = true
37
37
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
38
+ consumerProguardFiles 'proguard-rules.txt'
38
39
  }
39
40
 
40
41
  buildTypes {
@@ -0,0 +1,7 @@
1
+ -keepclassmembers class com.google.android.gms.tapandpay.** {
2
+ public *;
3
+ }
4
+
5
+ -keepclassmembers class com.stripe.android.pushProvisioning.** {
6
+ public *;
7
+ }
@@ -2,7 +2,6 @@ package com.reactnativestripesdk
2
2
 
3
3
  import android.content.res.ColorStateList
4
4
  import android.graphics.Color
5
- import android.graphics.Typeface
6
5
  import android.os.Build
7
6
  import android.text.Editable
8
7
  import android.text.InputFilter
@@ -143,7 +142,6 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
143
142
  }
144
143
  }
145
144
 
146
- mCardWidget.setPadding(40, 0, 40, 0)
147
145
  mCardWidget.background = MaterialShapeDrawable(
148
146
  ShapeAppearanceModel()
149
147
  .toBuilder()
@@ -204,6 +202,10 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
204
202
 
205
203
  fun setPostalCodeEnabled(isEnabled: Boolean) {
206
204
  mCardWidget.postalCodeEnabled = isEnabled
205
+
206
+ if (isEnabled === false) {
207
+ mCardWidget.postalCodeRequired = false
208
+ }
207
209
  }
208
210
 
209
211
  /**
@@ -2,12 +2,12 @@ package com.reactnativestripesdk
2
2
 
3
3
  import android.content.res.ColorStateList
4
4
  import android.graphics.Color
5
- import android.graphics.Typeface
6
5
  import android.os.Build
7
6
  import android.text.InputFilter
8
7
  import android.view.View
9
8
  import android.view.View.OnFocusChangeListener
10
9
  import android.widget.FrameLayout
10
+ import androidx.core.view.setMargins
11
11
  import com.facebook.react.bridge.ReadableMap
12
12
  import com.facebook.react.uimanager.PixelUtil
13
13
  import com.facebook.react.uimanager.ThemedReactContext
@@ -40,7 +40,7 @@ class CardFormView(context: ThemedReactContext) : FrameLayout(context) {
40
40
  init {
41
41
  cardFormViewBinding.cardMultilineWidgetContainer.isFocusable = true
42
42
  cardFormViewBinding.cardMultilineWidgetContainer.isFocusableInTouchMode = true
43
-
43
+ (cardFormViewBinding.cardMultilineWidgetContainer.layoutParams as MarginLayoutParams).setMargins(0)
44
44
  addView(cardForm)
45
45
  setListeners()
46
46
 
@@ -191,7 +191,6 @@ class CardFormView(context: ThemedReactContext) : FrameLayout(context) {
191
191
  }
192
192
  }
193
193
 
194
- cardFormViewBinding.cardMultilineWidgetContainer.setPadding(40, 0, 40, 0)
195
194
  cardFormViewBinding.cardMultilineWidgetContainer.background = MaterialShapeDrawable(
196
195
  ShapeAppearanceModel()
197
196
  .toBuilder()
@@ -17,6 +17,11 @@ class GooglePayButtonManager : SimpleViewManager<GooglePayButtonView?>() {
17
17
 
18
18
  @ReactProp(name = "buttonType")
19
19
  fun buttonType(view: GooglePayButtonView, buttonType: String) {
20
+ view.setButtonType(buttonType)
21
+ }
22
+
23
+ @ReactProp(name = "type")
24
+ fun type(view: GooglePayButtonView, buttonType: Int) {
20
25
  view.setType(buttonType)
21
26
  }
22
27
 
@@ -1,28 +1,66 @@
1
1
  package com.reactnativestripesdk
2
2
 
3
3
  import android.view.LayoutInflater
4
+ import android.view.View
4
5
  import android.widget.FrameLayout
5
6
  import com.facebook.react.uimanager.ThemedReactContext
6
7
 
7
8
  class GooglePayButtonView(private val context: ThemedReactContext) : FrameLayout(context) {
9
+ private var button: View? = null
10
+ // Used in legacy GooglePayButton implementations
8
11
  private var buttonType: String? = null
9
12
 
13
+ // Used in the new PlatformPayButton implementations
14
+ private var type: Int? = null
15
+
10
16
  fun initialize() {
11
- val type =
12
- when (buttonType) {
13
- "pay" -> R.layout.pay_with_googlepay_button
14
- "standard" -> R.layout.googlepay_button
15
- else -> R.layout.googlepay_button
17
+ val resAsset: Int =
18
+ if (type != null) {
19
+ when (type) {
20
+ 0 -> R.layout.plain_googlepay_button
21
+ 1 -> R.layout.buy_with_googlepay_button
22
+ 6 -> R.layout.book_with_googlepay_button
23
+ 5 -> R.layout.checkout_with_googlepay_button
24
+ 4 -> R.layout.donate_with_googlepay_button
25
+ 11 -> R.layout.order_with_googlepay_button
26
+ 1000 -> R.layout.pay_with_googlepay_button
27
+ 7 -> R.layout.subscribe_with_googlepay_button
28
+ 1001 -> R.layout.googlepay_mark_button
29
+ else -> R.layout.plain_googlepay_button
30
+ }
31
+ } else {
32
+ when (buttonType) {
33
+ "pay" -> R.layout.pay_with_googlepay_button
34
+ "standard" -> R.layout.plain_googlepay_button
35
+ else -> R.layout.plain_googlepay_button
36
+ }
16
37
  }
17
38
 
18
- val button = LayoutInflater.from(context).inflate(
19
- type, null
39
+ button = LayoutInflater.from(context).inflate(
40
+ resAsset, null
20
41
  )
21
42
 
22
43
  addView(button)
44
+ viewTreeObserver.addOnGlobalLayoutListener { requestLayout() }
45
+ }
46
+
47
+ override fun requestLayout() {
48
+ super.requestLayout()
49
+ post(mLayoutRunnable)
23
50
  }
24
51
 
25
- fun setType(type: String) {
52
+ private val mLayoutRunnable = Runnable {
53
+ measure(
54
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
55
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY))
56
+ button?.layout(left, top, right, bottom)
57
+ }
58
+
59
+ fun setButtonType(type: String) {
26
60
  buttonType = type
27
61
  }
62
+
63
+ fun setType(type: Int) {
64
+ this.type = type
65
+ }
28
66
  }
@@ -0,0 +1,132 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import android.os.Bundle
4
+ import android.view.LayoutInflater
5
+ import android.view.View
6
+ import android.view.ViewGroup
7
+ import android.widget.FrameLayout
8
+ import androidx.appcompat.app.AppCompatActivity
9
+ import androidx.fragment.app.Fragment
10
+ import com.facebook.react.bridge.*
11
+ import com.reactnativestripesdk.utils.*
12
+ import com.reactnativestripesdk.utils.createError
13
+ import com.reactnativestripesdk.utils.createMissingActivityError
14
+ import com.stripe.android.googlepaylauncher.GooglePayEnvironment
15
+ import com.stripe.android.googlepaylauncher.GooglePayLauncher
16
+
17
+ class GooglePayLauncherFragment : Fragment() {
18
+ enum class Mode {
19
+ ForSetup, ForPayment
20
+ }
21
+
22
+ private lateinit var launcher: GooglePayLauncher
23
+ private lateinit var clientSecret: String
24
+ private lateinit var mode: Mode
25
+ private lateinit var configuration: GooglePayLauncher.Config
26
+ private lateinit var currencyCode: String
27
+ private lateinit var callback: (result: GooglePayLauncher.Result?, error: WritableMap?) -> Unit
28
+
29
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
30
+ savedInstanceState: Bundle?): View {
31
+ return FrameLayout(requireActivity()).also {
32
+ it.visibility = View.GONE
33
+ }
34
+ }
35
+
36
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
37
+ launcher = GooglePayLauncher(
38
+ fragment = this,
39
+ config = configuration,
40
+ readyCallback = ::onGooglePayReady,
41
+ resultCallback = ::onGooglePayResult
42
+ )
43
+ }
44
+
45
+ fun presentGooglePaySheet(clientSecret: String, mode: Mode, googlePayParams: ReadableMap, context: ReactApplicationContext, callback: (GooglePayLauncher.Result?, error: WritableMap?) -> Unit) {
46
+ this.clientSecret = clientSecret
47
+ this.mode = mode
48
+ this.callback = callback
49
+ this.currencyCode = googlePayParams.getString("currencyCode") ?: "USD"
50
+ this.configuration = GooglePayLauncher.Config(
51
+ environment = if (googlePayParams.getBoolean("testEnv")) GooglePayEnvironment.Test else GooglePayEnvironment.Production,
52
+ merchantCountryCode = googlePayParams.getString("merchantCountryCode").orEmpty(),
53
+ merchantName = googlePayParams.getString("merchantName").orEmpty(),
54
+ isEmailRequired = googlePayParams.getBooleanOr("isEmailRequired", false),
55
+ billingAddressConfig = buildBillingAddressParameters(googlePayParams.getMap("billingAddressConfig")),
56
+ existingPaymentMethodRequired = googlePayParams.getBooleanOr("existingPaymentMethodRequired", false),
57
+ allowCreditCards = googlePayParams.getBooleanOr("allowCreditCards", true),
58
+ )
59
+
60
+ (context.currentActivity as? AppCompatActivity)?.let {
61
+ attemptToCleanupPreviousFragment(it)
62
+ commitFragmentAndStartFlow(it)
63
+ } ?: run {
64
+ callback(null, createMissingActivityError())
65
+ return
66
+ }
67
+ }
68
+
69
+ private fun attemptToCleanupPreviousFragment(currentActivity: AppCompatActivity) {
70
+ currentActivity.supportFragmentManager.beginTransaction()
71
+ .remove(this)
72
+ .commitAllowingStateLoss()
73
+ }
74
+
75
+ private fun commitFragmentAndStartFlow(currentActivity: AppCompatActivity) {
76
+ try {
77
+ currentActivity.supportFragmentManager.beginTransaction()
78
+ .add(this, TAG)
79
+ .commit()
80
+ } catch (error: IllegalStateException) {
81
+ callback(
82
+ null,
83
+ createError(ErrorType.Failed.toString(), error.message)
84
+ )
85
+ }
86
+ }
87
+
88
+ private fun onGooglePayReady(isReady: Boolean) {
89
+ if (isReady) {
90
+ when (mode) {
91
+ Mode.ForSetup -> {
92
+ launcher.presentForSetupIntent(clientSecret, currencyCode)
93
+ }
94
+ Mode.ForPayment -> {
95
+ launcher.presentForPaymentIntent(clientSecret)
96
+ }
97
+ }
98
+ } else {
99
+ callback(
100
+ null,
101
+ createError(
102
+ GooglePayErrorType.Failed.toString(),
103
+ "Google Pay is not available on this device. You can use isPlatformPaySupported to preemptively check for Google Pay support."
104
+ )
105
+ )
106
+ }
107
+ }
108
+
109
+ private fun onGooglePayResult(result: GooglePayLauncher.Result) {
110
+ callback(result, null)
111
+ }
112
+
113
+ companion object {
114
+ const val TAG = "google_pay_launcher_fragment"
115
+
116
+ private fun buildBillingAddressParameters(params: ReadableMap?): GooglePayLauncher.BillingAddressConfig {
117
+ val isRequired = params?.getBooleanOr("isRequired", false)
118
+ val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
119
+ val format = when (params?.getString("format").orEmpty()) {
120
+ "FULL" -> GooglePayLauncher.BillingAddressConfig.Format.Full
121
+ "MIN" -> GooglePayLauncher.BillingAddressConfig.Format.Min
122
+ else -> GooglePayLauncher.BillingAddressConfig.Format.Min
123
+ }
124
+
125
+ return GooglePayLauncher.BillingAddressConfig(
126
+ isRequired = isRequired ?: false,
127
+ format = format,
128
+ isPhoneNumberRequired = isPhoneNumberRequired ?: false
129
+ )
130
+ }
131
+ }
132
+ }
@@ -0,0 +1,144 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import android.app.Activity
4
+ import android.content.Intent
5
+ import androidx.appcompat.app.AppCompatActivity
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReadableMap
8
+ import com.facebook.react.bridge.WritableNativeMap
9
+ import com.google.android.gms.tasks.Task
10
+ import com.google.android.gms.wallet.*
11
+ import com.reactnativestripesdk.utils.*
12
+ import com.reactnativestripesdk.utils.createError
13
+ import com.reactnativestripesdk.utils.mapFromPaymentMethod
14
+ import com.reactnativestripesdk.utils.mapFromToken
15
+ import com.stripe.android.ApiResultCallback
16
+ import com.stripe.android.GooglePayJsonFactory
17
+ import com.stripe.android.Stripe
18
+ import com.stripe.android.model.GooglePayResult
19
+ import com.stripe.android.model.PaymentMethod
20
+ import com.stripe.android.model.PaymentMethodCreateParams
21
+ import org.json.JSONObject
22
+ import java.util.*
23
+
24
+ class GooglePayRequestHelper {
25
+ companion object {
26
+ internal const val LOAD_PAYMENT_DATA_REQUEST_CODE = 414243
27
+
28
+ internal fun createPaymentRequest(activity: AppCompatActivity, factory: GooglePayJsonFactory, googlePayParams: ReadableMap): Task<PaymentData> {
29
+ val transactionInfo = buildTransactionInfo(googlePayParams)
30
+ val merchantInfo = GooglePayJsonFactory.MerchantInfo(googlePayParams.getString("merchantName").orEmpty())
31
+ val billingAddressParameters = buildBillingAddressParameters(googlePayParams.getMap("billingAddressConfig"))
32
+ val shippingAddressParameters = buildShippingAddressParameters(googlePayParams.getMap("shippingAddressConfig"))
33
+
34
+ val request = factory.createPaymentDataRequest(
35
+ transactionInfo = transactionInfo,
36
+ merchantInfo = merchantInfo,
37
+ billingAddressParameters = billingAddressParameters,
38
+ shippingAddressParameters = shippingAddressParameters,
39
+ isEmailRequired = googlePayParams.getBooleanOr("isEmailRequired", false),
40
+ allowCreditCards = googlePayParams.getBooleanOr("allowCreditCards", true)
41
+ )
42
+
43
+ val walletOptions = Wallet.WalletOptions.Builder()
44
+ .setEnvironment(if (googlePayParams.getBoolean("testEnv")) WalletConstants.ENVIRONMENT_TEST else WalletConstants.ENVIRONMENT_PRODUCTION)
45
+ .build()
46
+ return Wallet.getPaymentsClient(activity, walletOptions).loadPaymentData(PaymentDataRequest.fromJson(request.toString()))
47
+ }
48
+
49
+ @Suppress("UNCHECKED_CAST")
50
+ private fun buildShippingAddressParameters(params: ReadableMap?): GooglePayJsonFactory.ShippingAddressParameters {
51
+ val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
52
+ val isRequired = params?.getBooleanOr("isRequired", false)
53
+ val allowedCountryCodes = if (params?.hasKey("allowedCountryCodes") == true)
54
+ params.getArray("allowedCountryCodes") as Array<String> else Locale.getISOCountries()
55
+
56
+ return GooglePayJsonFactory.ShippingAddressParameters(
57
+ isRequired = isRequired ?: false,
58
+ allowedCountryCodes = allowedCountryCodes.toSet(),
59
+ phoneNumberRequired = isPhoneNumberRequired ?: false
60
+ )
61
+ }
62
+
63
+ private fun buildBillingAddressParameters(params: ReadableMap?): GooglePayJsonFactory.BillingAddressParameters {
64
+ val isRequired = params?.getBooleanOr("isRequired", false)
65
+ val isPhoneNumberRequired = params?.getBooleanOr("isPhoneNumberRequired", false)
66
+ val format = when (params?.getString("format").orEmpty()) {
67
+ "FULL" -> GooglePayJsonFactory.BillingAddressParameters.Format.Full
68
+ "MIN" -> GooglePayJsonFactory.BillingAddressParameters.Format.Min
69
+ else -> GooglePayJsonFactory.BillingAddressParameters.Format.Min
70
+ }
71
+
72
+ return GooglePayJsonFactory.BillingAddressParameters(
73
+ isRequired = isRequired ?: false,
74
+ format = format,
75
+ isPhoneNumberRequired = isPhoneNumberRequired ?: false
76
+ )
77
+ }
78
+
79
+ private fun buildTransactionInfo(params: ReadableMap): GooglePayJsonFactory.TransactionInfo {
80
+ val countryCode = params.getString("merchantCountryCode").orEmpty()
81
+ val currencyCode = params.getString("currencyCode") ?: "USD"
82
+ val amount = params.getInt("amount")
83
+
84
+ return GooglePayJsonFactory.TransactionInfo(
85
+ currencyCode = currencyCode,
86
+ totalPriceStatus = GooglePayJsonFactory.TransactionInfo.TotalPriceStatus.Estimated,
87
+ countryCode = countryCode,
88
+ totalPrice = amount,
89
+ checkoutOption = GooglePayJsonFactory.TransactionInfo.CheckoutOption.Default
90
+ )
91
+ }
92
+
93
+ internal fun createPaymentMethod(request: Task<PaymentData>, activity: AppCompatActivity) {
94
+ AutoResolveHelper.resolveTask(
95
+ request,
96
+ activity,
97
+ LOAD_PAYMENT_DATA_REQUEST_CODE
98
+ )
99
+ }
100
+
101
+ internal fun handleGooglePaymentMethodResult(resultCode: Int, data: Intent?, stripe: Stripe, promise: Promise) {
102
+ when (resultCode) {
103
+ Activity.RESULT_OK -> {
104
+ data?.let { intent ->
105
+ PaymentData.getFromIntent(intent)?.let {
106
+ resolveWithPaymentMethodAndToken(it, stripe, promise)
107
+ }
108
+ }
109
+ }
110
+ Activity.RESULT_CANCELED -> {
111
+ promise.resolve(createError(ErrorType.Canceled.toString(), "The payment has been canceled"))
112
+ }
113
+ AutoResolveHelper.RESULT_ERROR -> {
114
+ AutoResolveHelper.getStatusFromIntent(data)?.let {
115
+ promise.resolve(createError(ErrorType.Failed.toString(), it.statusMessage))
116
+ }
117
+ }
118
+ }
119
+ }
120
+
121
+ private fun resolveWithPaymentMethodAndToken(paymentData: PaymentData, stripe: Stripe, promise: Promise) {
122
+ val paymentInformation = JSONObject(paymentData.toJson())
123
+ val googlePayResult = GooglePayResult.fromJson(paymentInformation)
124
+ val promiseResult = WritableNativeMap()
125
+ googlePayResult.token?.let {
126
+ promiseResult.putMap("token", mapFromToken(it))
127
+ }
128
+ stripe.createPaymentMethod(
129
+ PaymentMethodCreateParams.createFromGooglePay(paymentInformation),
130
+ callback = object : ApiResultCallback<PaymentMethod> {
131
+ override fun onError(e: Exception) {
132
+ promise.resolve(createError("Failed", e))
133
+ }
134
+
135
+ override fun onSuccess(result: PaymentMethod) {
136
+ promiseResult.putMap("paymentMethod", mapFromPaymentMethod(result))
137
+ promise.resolve(promiseResult)
138
+ }
139
+ }
140
+ )
141
+ }
142
+ }
143
+ }
144
+
@@ -13,6 +13,7 @@ import com.reactnativestripesdk.utils.*
13
13
  import com.stripe.android.*
14
14
  import com.stripe.android.core.ApiVersion
15
15
  import com.stripe.android.core.AppInfo
16
+ import com.stripe.android.googlepaylauncher.GooglePayLauncher
16
17
  import com.stripe.android.model.*
17
18
  import com.stripe.android.payments.bankaccount.CollectBankAccountConfiguration
18
19
  import com.stripe.android.paymentsheet.PaymentSheet
@@ -38,6 +39,7 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
38
39
 
39
40
  private var confirmPromise: Promise? = null
40
41
  private var confirmPaymentClientSecret: String? = null
42
+ private var createPlatformPayPaymentMethodPromise: Promise? = null
41
43
 
42
44
  private var paymentSheetFragment: PaymentSheetFragment? = null
43
45
  private var googlePayFragment: GooglePayFragment? = null
@@ -53,20 +55,31 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
53
55
  PaymentLauncherFragment.TAG,
54
56
  CollectBankAccountLauncherFragment.TAG,
55
57
  FinancialConnectionsSheetFragment.TAG,
56
- AddressLauncherFragment.TAG
58
+ AddressLauncherFragment.TAG,
59
+ GooglePayLauncherFragment.TAG
57
60
  )
58
61
 
59
62
  private val mActivityEventListener = object : BaseActivityEventListener() {
60
63
  override fun onActivityResult(activity: Activity, requestCode: Int, resultCode: Int, data: Intent?) {
61
64
  if (::stripe.isInitialized) {
62
- dispatchActivityResultsToFragments(requestCode, resultCode, data)
63
- try {
64
- val result = AddPaymentMethodActivityStarter.Result.fromIntent(data)
65
- if (data?.getParcelableExtra<Parcelable>("extra_activity_result") != null) {
66
- onFpxPaymentMethodResult(result)
65
+ when (requestCode) {
66
+ GooglePayRequestHelper.LOAD_PAYMENT_DATA_REQUEST_CODE -> {
67
+ createPlatformPayPaymentMethodPromise?.let {
68
+ GooglePayRequestHelper.handleGooglePaymentMethodResult(resultCode, data, stripe, it)
69
+ createPlatformPayPaymentMethodPromise = null
70
+ } ?: run { Log.d("StripeReactNative", "No promise was found, Google Pay result went unhandled,") }
71
+ }
72
+ else -> {
73
+ dispatchActivityResultsToFragments(requestCode, resultCode, data)
74
+ try {
75
+ val result = AddPaymentMethodActivityStarter.Result.fromIntent(data)
76
+ if (data?.getParcelableExtra<Parcelable>("extra_activity_result") != null) {
77
+ onFpxPaymentMethodResult(result)
78
+ }
79
+ } catch (e: java.lang.Exception) {
80
+ Log.d("StripeReactNative", e.localizedMessage ?: e.toString())
81
+ }
67
82
  }
68
- } catch (e: java.lang.Exception) {
69
- Log.d("Error", e.localizedMessage ?: e.toString())
70
83
  }
71
84
  }
72
85
  }
@@ -495,6 +508,26 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
495
508
  }
496
509
  }
497
510
 
511
+ @ReactMethod
512
+ fun isPlatformPaySupported(params: ReadableMap?, promise: Promise) {
513
+ val fragment = GooglePayPaymentMethodLauncherFragment(
514
+ reactApplicationContext,
515
+ getBooleanOrFalse(params, "testEnv"),
516
+ getBooleanOrFalse(params, "existingPaymentMethodRequired"),
517
+ promise
518
+ )
519
+
520
+ getCurrentActivityOrResolveWithError(promise)?.let {
521
+ try {
522
+ it.supportFragmentManager.beginTransaction()
523
+ .add(fragment, GooglePayPaymentMethodLauncherFragment.TAG)
524
+ .commit()
525
+ } catch (error: IllegalStateException) {
526
+ promise.resolve(createError(ErrorType.Failed.toString(), error.message))
527
+ }
528
+ }
529
+ }
530
+
498
531
  @ReactMethod
499
532
  fun isGooglePaySupported(params: ReadableMap?, promise: Promise) {
500
533
  val fragment = GooglePayPaymentMethodLauncherFragment(
@@ -551,6 +584,62 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
551
584
  }
552
585
  }
553
586
 
587
+ @ReactMethod
588
+ fun confirmPlatformPay(clientSecret: String, params: ReadableMap, isPaymentIntent: Boolean, promise: Promise) {
589
+ if (!::stripe.isInitialized) {
590
+ promise.resolve(createMissingInitError())
591
+ return
592
+ }
593
+
594
+ val googlePayParams: ReadableMap = params.getMap("googlePay") ?: run {
595
+ promise.resolve(createError(GooglePayErrorType.Failed.toString(), "You must provide the `googlePay` parameter."))
596
+ return
597
+ }
598
+
599
+ GooglePayLauncherFragment().also {
600
+ it.presentGooglePaySheet(
601
+ clientSecret,
602
+ if (isPaymentIntent) GooglePayLauncherFragment.Mode.ForPayment else GooglePayLauncherFragment.Mode.ForSetup,
603
+ googlePayParams,
604
+ reactApplicationContext
605
+ ) { launcherResult, errorMap ->
606
+ if (errorMap != null) {
607
+ promise.resolve(errorMap)
608
+ } else if (launcherResult != null) {
609
+ when (launcherResult) {
610
+ GooglePayLauncher.Result.Completed -> {
611
+ if (isPaymentIntent) {
612
+ stripe.retrievePaymentIntent(clientSecret, stripeAccountId, object : ApiResultCallback<PaymentIntent> {
613
+ override fun onError(e: Exception) {
614
+ promise.resolve(createResult("paymentIntent", WritableNativeMap()))
615
+ }
616
+ override fun onSuccess(result: PaymentIntent) {
617
+ promise.resolve(createResult("paymentIntent", mapFromPaymentIntentResult(result)))
618
+ }
619
+ })
620
+ } else {
621
+ stripe.retrieveSetupIntent(clientSecret, stripeAccountId, object : ApiResultCallback<SetupIntent> {
622
+ override fun onError(e: Exception) {
623
+ promise.resolve(createResult("setupIntent", WritableNativeMap()))
624
+ }
625
+ override fun onSuccess(result: SetupIntent) {
626
+ promise.resolve(createResult("setupIntent", mapFromSetupIntentResult(result)))
627
+ }
628
+ })
629
+ }
630
+ }
631
+ GooglePayLauncher.Result.Canceled -> {
632
+ promise.resolve(createError(GooglePayErrorType.Canceled.toString(), "Google Pay has been canceled"))
633
+ }
634
+ is GooglePayLauncher.Result.Failed -> {
635
+ promise.resolve(createError(GooglePayErrorType.Failed.toString(), launcherResult.error))
636
+ }
637
+ }
638
+ }
639
+ }
640
+ }
641
+ }
642
+
554
643
  @ReactMethod
555
644
  fun createGooglePayPaymentMethod(params: ReadableMap, promise: Promise) {
556
645
  val currencyCode = getValOr(params, "currencyCode", null) ?: run {
@@ -564,6 +653,23 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
564
653
  googlePayFragment?.createPaymentMethod(currencyCode, amount, promise)
565
654
  }
566
655
 
656
+ @ReactMethod
657
+ fun createPlatformPayPaymentMethod(params: ReadableMap, promise: Promise) {
658
+ val googlePayParams: ReadableMap = params.getMap("googlePay") ?: run {
659
+ promise.resolve(createError(GooglePayErrorType.Failed.toString(), "You must provide the `googlePay` parameter."))
660
+ return
661
+ }
662
+ createPlatformPayPaymentMethodPromise = promise
663
+ getCurrentActivityOrResolveWithError(promise)?.let {
664
+ val request = GooglePayRequestHelper.createPaymentRequest(
665
+ it,
666
+ GooglePayJsonFactory(reactApplicationContext),
667
+ googlePayParams
668
+ )
669
+ GooglePayRequestHelper.createPaymentMethod(request, it)
670
+ }
671
+ }
672
+
567
673
  @ReactMethod
568
674
  fun canAddCardToWallet(params: ReadableMap, promise: Promise) {
569
675
  val last4 = getValOr(params, "cardLastFour", null) ?: run {
@@ -740,6 +846,15 @@ class StripeSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
740
846
  }
741
847
  }
742
848
 
849
+ /**
850
+ * We need the following in order to avoid some annoying console.warns() from our Apple Pay event listeners. Otherwise,
851
+ * we'd have to put our users through some annoying (if Platform.OS...) logic & null-handling logic.
852
+ */
853
+ @ReactMethod
854
+ fun addListener(eventName: String) {}
855
+ @ReactMethod
856
+ fun removeListeners(count: Int) {}
857
+
743
858
  /**
744
859
  * Safely get and cast the current activity as an AppCompatActivity. If that fails, the promise
745
860
  * provided will be resolved with an error message instructing the user to retry the method.