@stripe/stripe-react-native 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/android/build.gradle +1 -0
  3. package/android/gradle.properties +1 -1
  4. package/android/proguard-rules.txt +7 -0
  5. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +4 -0
  6. package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherFragment.kt +1 -1
  7. package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetFragment.kt +4 -1
  8. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +5 -0
  9. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +46 -8
  10. package/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt +1 -1
  11. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +132 -0
  12. package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +144 -0
  13. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherFragment.kt +1 -1
  14. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +10 -9
  15. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +8 -3
  16. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +142 -21
  17. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +3 -1
  18. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherFragment.kt +111 -0
  19. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetEvent.kt +28 -0
  20. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +178 -0
  21. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +67 -0
  22. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +5 -0
  23. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +1 -1
  24. package/android/src/main/res/drawable/book_with_googlepay_button_content.xml +14 -0
  25. package/android/src/main/res/drawable/buy_with_googlepay_button_content.xml +14 -0
  26. package/android/src/main/res/drawable/checkout_with_googlepay_button_content.xml +14 -0
  27. package/android/src/main/res/drawable/donate_with_googlepay_button_content.xml +14 -0
  28. package/android/src/main/res/drawable/googlepay_button_background_shape.xml +11 -0
  29. package/android/src/main/res/drawable/googlepay_mark_background.xml +12 -0
  30. package/android/src/main/res/drawable/googlepay_mark_content.xml +27 -0
  31. package/android/src/main/res/drawable/order_with_googlepay_button_content.xml +14 -0
  32. package/android/src/main/res/drawable/pay_with_googlepay_button_content.xml +6 -6
  33. package/android/src/main/res/drawable/subscribe_with_googlepay_button_content.xml +14 -0
  34. package/android/src/main/res/drawable-ar/book_with_googlepay_button_content.xml +14 -0
  35. package/android/src/main/res/drawable-ar/buy_with_googlepay_button_content.xml +14 -0
  36. package/android/src/main/res/drawable-ar/checkout_with_googlepay_button_content.xml +14 -0
  37. package/android/src/main/res/drawable-ar/donate_with_googlepay_button_content.xml +14 -0
  38. package/android/src/main/res/drawable-ar/order_with_googlepay_button_content.xml +14 -0
  39. package/android/src/main/res/drawable-ar/pay_with_googlepay_button_content.xml +6 -6
  40. package/android/src/main/res/drawable-ar/subscribe_with_googlepay_button_content.xml +14 -0
  41. package/android/src/main/res/drawable-bg/book_with_googlepay_button_content.xml +14 -0
  42. package/android/src/main/res/drawable-bg/buy_with_googlepay_button_content.xml +14 -0
  43. package/android/src/main/res/drawable-bg/checkout_with_googlepay_button_content.xml +14 -0
  44. package/android/src/main/res/drawable-bg/donate_with_googlepay_button_content.xml +14 -0
  45. package/android/src/main/res/drawable-bg/order_with_googlepay_button_content.xml +14 -0
  46. package/android/src/main/res/drawable-bg/pay_with_googlepay_button_content.xml +4 -4
  47. package/android/src/main/res/drawable-bg/subscribe_with_googlepay_button_content.xml +14 -0
  48. package/android/src/main/res/drawable-ca/book_with_googlepay_button_content.xml +14 -0
  49. package/android/src/main/res/drawable-ca/buy_with_googlepay_button_content.xml +14 -0
  50. package/android/src/main/res/drawable-ca/checkout_with_googlepay_button_content.xml +14 -0
  51. package/android/src/main/res/drawable-ca/donate_with_googlepay_button_content.xml +14 -0
  52. package/android/src/main/res/drawable-ca/order_with_googlepay_button_content.xml +14 -0
  53. package/android/src/main/res/drawable-ca/pay_with_googlepay_button_content.xml +6 -6
  54. package/android/src/main/res/drawable-ca/subscribe_with_googlepay_button_content.xml +14 -0
  55. package/android/src/main/res/drawable-cs/book_with_googlepay_button_content.xml +14 -0
  56. package/android/src/main/res/drawable-cs/buy_with_googlepay_button_content.xml +14 -0
  57. package/android/src/main/res/drawable-cs/checkout_with_googlepay_button_content.xml +14 -0
  58. package/android/src/main/res/drawable-cs/donate_with_googlepay_button_content.xml +14 -0
  59. package/android/src/main/res/drawable-cs/order_with_googlepay_button_content.xml +14 -0
  60. package/android/src/main/res/drawable-cs/pay_with_googlepay_button_content.xml +6 -6
  61. package/android/src/main/res/drawable-cs/subscribe_with_googlepay_button_content.xml +14 -0
  62. package/android/src/main/res/drawable-da/book_with_googlepay_button_content.xml +14 -0
  63. package/android/src/main/res/drawable-da/buy_with_googlepay_button_content.xml +14 -0
  64. package/android/src/main/res/drawable-da/checkout_with_googlepay_button_content.xml +14 -0
  65. package/android/src/main/res/drawable-da/donate_with_googlepay_button_content.xml +14 -0
  66. package/android/src/main/res/drawable-da/order_with_googlepay_button_content.xml +14 -0
  67. package/android/src/main/res/drawable-da/pay_with_googlepay_button_content.xml +6 -6
  68. package/android/src/main/res/drawable-da/subscribe_with_googlepay_button_content.xml +14 -0
  69. package/android/src/main/res/drawable-de/book_with_googlepay_button_content.xml +15 -0
  70. package/android/src/main/res/drawable-de/buy_with_googlepay_button_content.xml +15 -0
  71. package/android/src/main/res/drawable-de/checkout_with_googlepay_button_content.xml +15 -0
  72. package/android/src/main/res/drawable-de/donate_with_googlepay_button_content.xml +15 -0
  73. package/android/src/main/res/drawable-de/order_with_googlepay_button_content.xml +15 -0
  74. package/android/src/main/res/drawable-de/pay_with_googlepay_button_content.xml +7 -7
  75. package/android/src/main/res/drawable-de/subscribe_with_googlepay_button_content.xml +15 -0
  76. package/android/src/main/res/drawable-el/book_with_googlepay_button_content.xml +14 -0
  77. package/android/src/main/res/drawable-el/buy_with_googlepay_button_content.xml +14 -0
  78. package/android/src/main/res/drawable-el/checkout_with_googlepay_button_content.xml +14 -0
  79. package/android/src/main/res/drawable-el/donate_with_googlepay_button_content.xml +14 -0
  80. package/android/src/main/res/drawable-el/order_with_googlepay_button_content.xml +14 -0
  81. package/android/src/main/res/drawable-el/pay_with_googlepay_button_content.xml +4 -4
  82. package/android/src/main/res/drawable-el/subscribe_with_googlepay_button_content.xml +14 -0
  83. package/android/src/main/res/drawable-et/book_with_googlepay_button_content.xml +15 -0
  84. package/android/src/main/res/drawable-et/buy_with_googlepay_button_content.xml +15 -0
  85. package/android/src/main/res/drawable-et/checkout_with_googlepay_button_content.xml +15 -0
  86. package/android/src/main/res/drawable-et/donate_with_googlepay_button_content.xml +15 -0
  87. package/android/src/main/res/drawable-et/order_with_googlepay_button_content.xml +15 -0
  88. package/android/src/main/res/drawable-et/pay_with_googlepay_button_content.xml +8 -8
  89. package/android/src/main/res/drawable-et/subscribe_with_googlepay_button_content.xml +15 -0
  90. package/android/src/main/res/drawable-fi/book_with_googlepay_button_content.xml +15 -0
  91. package/android/src/main/res/drawable-fi/buy_with_googlepay_button_content.xml +15 -0
  92. package/android/src/main/res/drawable-fi/checkout_with_googlepay_button_content.xml +15 -0
  93. package/android/src/main/res/drawable-fi/donate_with_googlepay_button_content.xml +15 -0
  94. package/android/src/main/res/drawable-fi/order_with_googlepay_button_content.xml +15 -0
  95. package/android/src/main/res/drawable-fi/pay_with_googlepay_button_content.xml +8 -8
  96. package/android/src/main/res/drawable-fi/subscribe_with_googlepay_button_content.xml +15 -0
  97. package/android/src/main/res/drawable-fr/book_with_googlepay_button_content.xml +14 -0
  98. package/android/src/main/res/drawable-fr/buy_with_googlepay_button_content.xml +14 -0
  99. package/android/src/main/res/drawable-fr/checkout_with_googlepay_button_content.xml +14 -0
  100. package/android/src/main/res/drawable-fr/donate_with_googlepay_button_content.xml +14 -0
  101. package/android/src/main/res/drawable-fr/order_with_googlepay_button_content.xml +14 -0
  102. package/android/src/main/res/drawable-fr/pay_with_googlepay_button_content.xml +5 -5
  103. package/android/src/main/res/drawable-fr/subscribe_with_googlepay_button_content.xml +14 -0
  104. package/android/src/main/res/drawable-hr/book_with_googlepay_button_content.xml +14 -0
  105. package/android/src/main/res/drawable-hr/buy_with_googlepay_button_content.xml +14 -0
  106. package/android/src/main/res/drawable-hr/checkout_with_googlepay_button_content.xml +14 -0
  107. package/android/src/main/res/drawable-hr/donate_with_googlepay_button_content.xml +14 -0
  108. package/android/src/main/res/drawable-hr/order_with_googlepay_button_content.xml +14 -0
  109. package/android/src/main/res/drawable-hr/pay_with_googlepay_button_content.xml +4 -4
  110. package/android/src/main/res/drawable-hr/subscribe_with_googlepay_button_content.xml +14 -0
  111. package/android/src/main/res/drawable-id/book_with_googlepay_button_content.xml +14 -0
  112. package/android/src/main/res/drawable-id/buy_with_googlepay_button_content.xml +14 -0
  113. package/android/src/main/res/drawable-id/checkout_with_googlepay_button_content.xml +14 -0
  114. package/android/src/main/res/drawable-id/donate_with_googlepay_button_content.xml +14 -0
  115. package/android/src/main/res/drawable-id/order_with_googlepay_button_content.xml +14 -0
  116. package/android/src/main/res/drawable-id/pay_with_googlepay_button_content.xml +4 -4
  117. package/android/src/main/res/drawable-id/subscribe_with_googlepay_button_content.xml +14 -0
  118. package/android/src/main/res/drawable-it/book_with_googlepay_button_content.xml +14 -0
  119. package/android/src/main/res/drawable-it/buy_with_googlepay_button_content.xml +14 -0
  120. package/android/src/main/res/drawable-it/checkout_with_googlepay_button_content.xml +14 -0
  121. package/android/src/main/res/drawable-it/donate_with_googlepay_button_content.xml +14 -0
  122. package/android/src/main/res/drawable-it/order_with_googlepay_button_content.xml +14 -0
  123. package/android/src/main/res/drawable-it/pay_with_googlepay_button_content.xml +6 -6
  124. package/android/src/main/res/drawable-it/subscribe_with_googlepay_button_content.xml +14 -0
  125. package/android/src/main/res/drawable-ja/book_with_googlepay_button_content.xml +14 -0
  126. package/android/src/main/res/drawable-ja/buy_with_googlepay_button_content.xml +14 -0
  127. package/android/src/main/res/drawable-ja/checkout_with_googlepay_button_content.xml +14 -0
  128. package/android/src/main/res/drawable-ja/donate_with_googlepay_button_content.xml +14 -0
  129. package/android/src/main/res/drawable-ja/order_with_googlepay_button_content.xml +14 -0
  130. package/android/src/main/res/drawable-ja/pay_with_googlepay_button_content.xml +5 -5
  131. package/android/src/main/res/drawable-ja/subscribe_with_googlepay_button_content.xml +14 -0
  132. package/android/src/main/res/drawable-ko/book_with_googlepay_button_content.xml +14 -0
  133. package/android/src/main/res/drawable-ko/buy_with_googlepay_button_content.xml +14 -0
  134. package/android/src/main/res/drawable-ko/checkout_with_googlepay_button_content.xml +14 -0
  135. package/android/src/main/res/drawable-ko/donate_with_googlepay_button_content.xml +14 -0
  136. package/android/src/main/res/drawable-ko/order_with_googlepay_button_content.xml +14 -0
  137. package/android/src/main/res/drawable-ko/pay_with_googlepay_button_content.xml +7 -7
  138. package/android/src/main/res/drawable-ko/subscribe_with_googlepay_button_content.xml +14 -0
  139. package/android/src/main/res/drawable-ms/book_with_googlepay_button_content.xml +14 -0
  140. package/android/src/main/res/drawable-ms/buy_with_googlepay_button_content.xml +14 -0
  141. package/android/src/main/res/drawable-ms/checkout_with_googlepay_button_content.xml +14 -0
  142. package/android/src/main/res/drawable-ms/donate_with_googlepay_button_content.xml +14 -0
  143. package/android/src/main/res/drawable-ms/order_with_googlepay_button_content.xml +14 -0
  144. package/android/src/main/res/drawable-ms/pay_with_googlepay_button_content.xml +4 -4
  145. package/android/src/main/res/drawable-ms/subscribe_with_googlepay_button_content.xml +14 -0
  146. package/android/src/main/res/drawable-nl/book_with_googlepay_button_content.xml +14 -0
  147. package/android/src/main/res/drawable-nl/buy_with_googlepay_button_content.xml +14 -0
  148. package/android/src/main/res/drawable-nl/checkout_with_googlepay_button_content.xml +14 -0
  149. package/android/src/main/res/drawable-nl/donate_with_googlepay_button_content.xml +14 -0
  150. package/android/src/main/res/drawable-nl/order_with_googlepay_button_content.xml +14 -0
  151. package/android/src/main/res/drawable-nl/pay_with_googlepay_button_content.xml +4 -4
  152. package/android/src/main/res/drawable-nl/subscribe_with_googlepay_button_content.xml +14 -0
  153. package/android/src/main/res/drawable-no/book_with_googlepay_button_content.xml +14 -0
  154. package/android/src/main/res/drawable-no/buy_with_googlepay_button_content.xml +14 -0
  155. package/android/src/main/res/drawable-no/checkout_with_googlepay_button_content.xml +14 -0
  156. package/android/src/main/res/drawable-no/donate_with_googlepay_button_content.xml +14 -0
  157. package/android/src/main/res/drawable-no/order_with_googlepay_button_content.xml +14 -0
  158. package/android/src/main/res/drawable-no/pay_with_googlepay_button_content.xml +6 -6
  159. package/android/src/main/res/drawable-no/subscribe_with_googlepay_button_content.xml +14 -0
  160. package/android/src/main/res/drawable-pl/book_with_googlepay_button_content.xml +14 -0
  161. package/android/src/main/res/drawable-pl/buy_with_googlepay_button_content.xml +14 -0
  162. package/android/src/main/res/drawable-pl/checkout_with_googlepay_button_content.xml +14 -0
  163. package/android/src/main/res/drawable-pl/donate_with_googlepay_button_content.xml +14 -0
  164. package/android/src/main/res/drawable-pl/order_with_googlepay_button_content.xml +14 -0
  165. package/android/src/main/res/drawable-pl/pay_with_googlepay_button_content.xml +7 -7
  166. package/android/src/main/res/drawable-pl/subscribe_with_googlepay_button_content.xml +14 -0
  167. package/android/src/main/res/drawable-ru/book_with_googlepay_button_content.xml +14 -0
  168. package/android/src/main/res/drawable-ru/buy_with_googlepay_button_content.xml +14 -0
  169. package/android/src/main/res/drawable-ru/checkout_with_googlepay_button_content.xml +14 -0
  170. package/android/src/main/res/drawable-ru/donate_with_googlepay_button_content.xml +14 -0
  171. package/android/src/main/res/drawable-ru/order_with_googlepay_button_content.xml +14 -0
  172. package/android/src/main/res/drawable-ru/pay_with_googlepay_button_content.xml +7 -7
  173. package/android/src/main/res/drawable-ru/subscribe_with_googlepay_button_content.xml +14 -0
  174. package/android/src/main/res/drawable-sk/book_with_googlepay_button_content.xml +14 -0
  175. package/android/src/main/res/drawable-sk/buy_with_googlepay_button_content.xml +14 -0
  176. package/android/src/main/res/drawable-sk/checkout_with_googlepay_button_content.xml +14 -0
  177. package/android/src/main/res/drawable-sk/donate_with_googlepay_button_content.xml +14 -0
  178. package/android/src/main/res/drawable-sk/order_with_googlepay_button_content.xml +14 -0
  179. package/android/src/main/res/drawable-sk/pay_with_googlepay_button_content.xml +4 -4
  180. package/android/src/main/res/drawable-sk/subscribe_with_googlepay_button_content.xml +14 -0
  181. package/android/src/main/res/drawable-sl/book_with_googlepay_button_content.xml +14 -0
  182. package/android/src/main/res/drawable-sl/buy_with_googlepay_button_content.xml +14 -0
  183. package/android/src/main/res/drawable-sl/checkout_with_googlepay_button_content.xml +14 -0
  184. package/android/src/main/res/drawable-sl/donate_with_googlepay_button_content.xml +14 -0
  185. package/android/src/main/res/drawable-sl/order_with_googlepay_button_content.xml +14 -0
  186. package/android/src/main/res/drawable-sl/pay_with_googlepay_button_content.xml +4 -4
  187. package/android/src/main/res/drawable-sl/subscribe_with_googlepay_button_content.xml +14 -0
  188. package/android/src/main/res/drawable-sr/book_with_googlepay_button_content.xml +14 -0
  189. package/android/src/main/res/drawable-sr/buy_with_googlepay_button_content.xml +14 -0
  190. package/android/src/main/res/drawable-sr/checkout_with_googlepay_button_content.xml +14 -0
  191. package/android/src/main/res/drawable-sr/donate_with_googlepay_button_content.xml +14 -0
  192. package/android/src/main/res/drawable-sr/order_with_googlepay_button_content.xml +14 -0
  193. package/android/src/main/res/drawable-sr/pay_with_googlepay_button_content.xml +7 -7
  194. package/android/src/main/res/drawable-sr/subscribe_with_googlepay_button_content.xml +14 -0
  195. package/android/src/main/res/drawable-sv/book_with_googlepay_button_content.xml +14 -0
  196. package/android/src/main/res/drawable-sv/buy_with_googlepay_button_content.xml +14 -0
  197. package/android/src/main/res/drawable-sv/checkout_with_googlepay_button_content.xml +14 -0
  198. package/android/src/main/res/drawable-sv/donate_with_googlepay_button_content.xml +14 -0
  199. package/android/src/main/res/drawable-sv/order_with_googlepay_button_content.xml +14 -0
  200. package/android/src/main/res/drawable-sv/pay_with_googlepay_button_content.xml +4 -4
  201. package/android/src/main/res/drawable-sv/subscribe_with_googlepay_button_content.xml +14 -0
  202. package/android/src/main/res/drawable-th/book_with_googlepay_button_content.xml +14 -0
  203. package/android/src/main/res/drawable-th/buy_with_googlepay_button_content.xml +14 -0
  204. package/android/src/main/res/drawable-th/checkout_with_googlepay_button_content.xml +14 -0
  205. package/android/src/main/res/drawable-th/donate_with_googlepay_button_content.xml +14 -0
  206. package/android/src/main/res/drawable-th/order_with_googlepay_button_content.xml +14 -0
  207. package/android/src/main/res/drawable-th/pay_with_googlepay_button_content.xml +6 -6
  208. package/android/src/main/res/drawable-th/subscribe_with_googlepay_button_content.xml +14 -0
  209. package/android/src/main/res/drawable-tr/book_with_googlepay_button_content.xml +14 -0
  210. package/android/src/main/res/drawable-tr/buy_with_googlepay_button_content.xml +14 -0
  211. package/android/src/main/res/drawable-tr/checkout_with_googlepay_button_content.xml +14 -0
  212. package/android/src/main/res/drawable-tr/donate_with_googlepay_button_content.xml +14 -0
  213. package/android/src/main/res/drawable-tr/order_with_googlepay_button_content.xml +14 -0
  214. package/android/src/main/res/drawable-tr/pay_with_googlepay_button_content.xml +7 -7
  215. package/android/src/main/res/drawable-tr/subscribe_with_googlepay_button_content.xml +14 -0
  216. package/android/src/main/res/drawable-uk/book_with_googlepay_button_content.xml +14 -0
  217. package/android/src/main/res/drawable-uk/buy_with_googlepay_button_content.xml +14 -0
  218. package/android/src/main/res/drawable-uk/checkout_with_googlepay_button_content.xml +14 -0
  219. package/android/src/main/res/drawable-uk/donate_with_googlepay_button_content.xml +14 -0
  220. package/android/src/main/res/drawable-uk/order_with_googlepay_button_content.xml +14 -0
  221. package/android/src/main/res/drawable-uk/pay_with_googlepay_button_content.xml +5 -5
  222. package/android/src/main/res/drawable-uk/subscribe_with_googlepay_button_content.xml +14 -0
  223. package/android/src/main/res/layout/book_with_googlepay_button.xml +20 -0
  224. package/android/src/main/res/layout/buy_with_googlepay_button.xml +20 -0
  225. package/android/src/main/res/layout/checkout_with_googlepay_button.xml +20 -0
  226. package/android/src/main/res/layout/donate_with_googlepay_button.xml +20 -0
  227. package/android/src/main/res/layout/googlepay_mark_button.xml +18 -0
  228. package/android/src/main/res/layout/order_with_googlepay_button.xml +20 -0
  229. package/android/src/main/res/layout/pay_with_googlepay_button.xml +10 -24
  230. package/android/src/main/res/layout/plain_googlepay_button.xml +17 -0
  231. package/android/src/main/res/layout/subscribe_with_googlepay_button.xml +20 -0
  232. package/android/src/main/res/values/googlepay_strings.xml +3 -2
  233. package/ios/AddressSheet/AddressSheetUtils.swift +98 -0
  234. package/ios/AddressSheet/AddressSheetView.swift +131 -0
  235. package/ios/AddressSheet/AddressSheetViewManager.m +25 -0
  236. package/ios/AddressSheet/AddressSheetViewManager.swift +19 -0
  237. package/ios/ApplePayButtonManager.m +5 -0
  238. package/ios/ApplePayButtonManager.swift +3 -1
  239. package/ios/ApplePayButtonView.swift +21 -0
  240. package/ios/ApplePayUtils.swift +187 -0
  241. package/ios/ApplePayViewController.swift +279 -0
  242. package/ios/PaymentPassFinder.swift +61 -0
  243. package/ios/PaymentSheetAppearance.swift +24 -23
  244. package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonManager.m +0 -0
  245. package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonManager.swift +0 -0
  246. package/ios/{pushprovisioning → PushProvisioning}/AddToWalletButtonView.swift +10 -10
  247. package/ios/PushProvisioning/PushProvisioningUtils.swift +87 -0
  248. package/ios/StripeSdk.m +29 -0
  249. package/ios/StripeSdk.swift +200 -130
  250. package/ios/Tests/AddressSheetUtilsTests.swift +273 -0
  251. package/ios/Tests/PushProvisioningTests.swift +14 -11
  252. package/jest/mock.js +44 -0
  253. package/lib/commonjs/NativeStripeSdk.js.map +1 -1
  254. package/lib/commonjs/components/AddressSheet.js +2 -0
  255. package/lib/commonjs/components/AddressSheet.js.map +1 -0
  256. package/lib/commonjs/components/PlatformPayButton.js +2 -0
  257. package/lib/commonjs/components/PlatformPayButton.js.map +1 -0
  258. package/lib/commonjs/functions.js +1 -1
  259. package/lib/commonjs/functions.js.map +1 -1
  260. package/lib/commonjs/hooks/usePlatformPay.js +2 -0
  261. package/lib/commonjs/hooks/usePlatformPay.js.map +1 -0
  262. package/lib/commonjs/hooks/useStripe.js +1 -1
  263. package/lib/commonjs/hooks/useStripe.js.map +1 -1
  264. package/lib/commonjs/index.js +1 -1
  265. package/lib/commonjs/index.js.map +1 -1
  266. package/lib/commonjs/types/Errors.js +1 -1
  267. package/lib/commonjs/types/Errors.js.map +1 -1
  268. package/lib/commonjs/types/PlatformPay.js +2 -0
  269. package/lib/commonjs/types/PlatformPay.js.map +1 -0
  270. package/lib/commonjs/types/PushProvisioning.js +2 -0
  271. package/lib/commonjs/types/PushProvisioning.js.map +1 -0
  272. package/lib/commonjs/types/index.js +1 -1
  273. package/lib/commonjs/types/index.js.map +1 -1
  274. package/lib/module/NativeStripeSdk.js.map +1 -1
  275. package/lib/module/components/AddressSheet.js +2 -0
  276. package/lib/module/components/AddressSheet.js.map +1 -0
  277. package/lib/module/components/PlatformPayButton.js +2 -0
  278. package/lib/module/components/PlatformPayButton.js.map +1 -0
  279. package/lib/module/functions.js +1 -1
  280. package/lib/module/functions.js.map +1 -1
  281. package/lib/module/hooks/usePlatformPay.js +2 -0
  282. package/lib/module/hooks/usePlatformPay.js.map +1 -0
  283. package/lib/module/hooks/useStripe.js +1 -1
  284. package/lib/module/hooks/useStripe.js.map +1 -1
  285. package/lib/module/index.js +1 -1
  286. package/lib/module/index.js.map +1 -1
  287. package/lib/module/types/Errors.js +1 -1
  288. package/lib/module/types/Errors.js.map +1 -1
  289. package/lib/module/types/PlatformPay.js +2 -0
  290. package/lib/module/types/PlatformPay.js.map +1 -0
  291. package/lib/module/types/PushProvisioning.js +2 -0
  292. package/lib/module/types/PushProvisioning.js.map +1 -0
  293. package/lib/module/types/index.js +1 -1
  294. package/lib/module/types/index.js.map +1 -1
  295. package/lib/typescript/src/NativeStripeSdk.d.ts +8 -1
  296. package/lib/typescript/src/components/AddressSheet.d.ts +53 -0
  297. package/lib/typescript/src/components/PlatformPayButton.d.ts +65 -0
  298. package/lib/typescript/src/functions.d.ts +73 -1
  299. package/lib/typescript/src/hooks/usePlatformPay.d.ts +70 -0
  300. package/lib/typescript/src/hooks/useStripe.d.ts +18 -1
  301. package/lib/typescript/src/index.d.ts +3 -0
  302. package/lib/typescript/src/types/ApplePay.d.ts +9 -0
  303. package/lib/typescript/src/types/Common.d.ts +12 -0
  304. package/lib/typescript/src/types/Errors.d.ts +9 -0
  305. package/lib/typescript/src/types/GooglePay.d.ts +2 -1
  306. package/lib/typescript/src/types/PaymentSheet.d.ts +7 -1
  307. package/lib/typescript/src/types/PlatformPay.d.ts +285 -0
  308. package/lib/typescript/src/types/PushProvisioning.d.ts +66 -0
  309. package/lib/typescript/src/types/components/ApplePayButtonComponent.d.ts +2 -2
  310. package/lib/typescript/src/types/index.d.ts +6 -44
  311. package/package.json +8 -1
  312. package/src/NativeStripeSdk.tsx +20 -0
  313. package/src/components/AddressSheet.tsx +82 -0
  314. package/src/components/PlatformPayButton.tsx +157 -0
  315. package/src/functions.ts +181 -0
  316. package/src/hooks/usePlatformPay.tsx +174 -0
  317. package/src/hooks/useStripe.tsx +77 -0
  318. package/src/index.tsx +9 -0
  319. package/src/types/ApplePay.ts +9 -0
  320. package/src/types/Common.ts +13 -0
  321. package/src/types/Errors.ts +11 -0
  322. package/src/types/GooglePay.ts +2 -1
  323. package/src/types/PaymentSheet.ts +7 -1
  324. package/src/types/PlatformPay.ts +326 -0
  325. package/src/types/PushProvisioning.ts +76 -0
  326. package/src/types/components/ApplePayButtonComponent.ts +3 -2
  327. package/src/types/index.ts +8 -64
  328. package/stripe-react-native.podspec +1 -1
  329. package/android/src/main/res/drawable/googlepay_button_background.xml +0 -6
  330. package/android/src/main/res/drawable/googlepay_button_content.xml +0 -48
  331. package/android/src/main/res/drawable/googlepay_button_overlay.xml +0 -12
  332. package/android/src/main/res/drawable-af/pay_with_googlepay_button_content.xml +0 -14
  333. package/android/src/main/res/drawable-am/pay_with_googlepay_button_content.xml +0 -15
  334. package/android/src/main/res/drawable-as/pay_with_googlepay_button_content.xml +0 -14
  335. package/android/src/main/res/drawable-az/pay_with_googlepay_button_content.xml +0 -14
  336. package/android/src/main/res/drawable-be/pay_with_googlepay_button_content.xml +0 -14
  337. package/android/src/main/res/drawable-bn/pay_with_googlepay_button_content.xml +0 -14
  338. package/android/src/main/res/drawable-bs/pay_with_googlepay_button_content.xml +0 -14
  339. package/android/src/main/res/drawable-cy/pay_with_googlepay_button_content.xml +0 -14
  340. package/android/src/main/res/drawable-en-rau/pay_with_googlepay_button_content.xml +0 -14
  341. package/android/src/main/res/drawable-en-rca/pay_with_googlepay_button_content.xml +0 -14
  342. package/android/src/main/res/drawable-en-rgb/pay_with_googlepay_button_content.xml +0 -14
  343. package/android/src/main/res/drawable-en-rin/pay_with_googlepay_button_content.xml +0 -14
  344. package/android/src/main/res/drawable-es/pay_with_googlepay_button_content.xml +0 -14
  345. package/android/src/main/res/drawable-es-res/pay_with_googlepay_button_content.xml +0 -14
  346. package/android/src/main/res/drawable-eu/pay_with_googlepay_button_content.xml +0 -15
  347. package/android/src/main/res/drawable-fa/pay_with_googlepay_button_content.xml +0 -14
  348. package/android/src/main/res/drawable-fil/pay_with_googlepay_button_content.xml +0 -14
  349. package/android/src/main/res/drawable-fr-rca/pay_with_googlepay_button_content.xml +0 -14
  350. package/android/src/main/res/drawable-ga/pay_with_googlepay_button_content.xml +0 -14
  351. package/android/src/main/res/drawable-gl/pay_with_googlepay_button_content.xml +0 -14
  352. package/android/src/main/res/drawable-gu/pay_with_googlepay_button_content.xml +0 -14
  353. package/android/src/main/res/drawable-hdpi/googlepay_button_background_image.9.png +0 -0
  354. package/android/src/main/res/drawable-hu/pay_with_googlepay_button_content.xml +0 -15
  355. package/android/src/main/res/drawable-hy/pay_with_googlepay_button_content.xml +0 -15
  356. package/android/src/main/res/drawable-is/pay_with_googlepay_button_content.xml +0 -14
  357. package/android/src/main/res/drawable-iw/pay_with_googlepay_button_content.xml +0 -14
  358. package/android/src/main/res/drawable-ka/pay_with_googlepay_button_content.xml +0 -15
  359. package/android/src/main/res/drawable-kk/pay_with_googlepay_button_content.xml +0 -14
  360. package/android/src/main/res/drawable-km/pay_with_googlepay_button_content.xml +0 -14
  361. package/android/src/main/res/drawable-kn/pay_with_googlepay_button_content.xml +0 -14
  362. package/android/src/main/res/drawable-ky/pay_with_googlepay_button_content.xml +0 -14
  363. package/android/src/main/res/drawable-lo/pay_with_googlepay_button_content.xml +0 -14
  364. package/android/src/main/res/drawable-lt/pay_with_googlepay_button_content.xml +0 -14
  365. package/android/src/main/res/drawable-lv/pay_with_googlepay_button_content.xml +0 -14
  366. package/android/src/main/res/drawable-mdpi/googlepay_button_background_image.9.png +0 -0
  367. package/android/src/main/res/drawable-mk/pay_with_googlepay_button_content.xml +0 -14
  368. package/android/src/main/res/drawable-ml/pay_with_googlepay_button_content.xml +0 -14
  369. package/android/src/main/res/drawable-mn/pay_with_googlepay_button_content.xml +0 -14
  370. package/android/src/main/res/drawable-mr/pay_with_googlepay_button_content.xml +0 -14
  371. package/android/src/main/res/drawable-ne/pay_with_googlepay_button_content.xml +0 -14
  372. package/android/src/main/res/drawable-pt-rbr/pay_with_googlepay_button_content.xml +0 -14
  373. package/android/src/main/res/drawable-pt-rpt/pay_with_googlepay_button_content.xml +0 -14
  374. package/android/src/main/res/drawable-ro/pay_with_googlepay_button_content.xml +0 -14
  375. package/android/src/main/res/drawable-sq/pay_with_googlepay_button_content.xml +0 -14
  376. package/android/src/main/res/drawable-sw/pay_with_googlepay_button_content.xml +0 -14
  377. package/android/src/main/res/drawable-ta/pay_with_googlepay_button_content.xml +0 -14
  378. package/android/src/main/res/drawable-te/pay_with_googlepay_button_content.xml +0 -14
  379. package/android/src/main/res/drawable-ur/pay_with_googlepay_button_content.xml +0 -14
  380. package/android/src/main/res/drawable-uz/pay_with_googlepay_button_content.xml +0 -14
  381. package/android/src/main/res/drawable-v21/googlepay_button_background.xml +0 -7
  382. package/android/src/main/res/drawable-vi/pay_with_googlepay_button_content.xml +0 -14
  383. package/android/src/main/res/drawable-xhdpi/googlepay_button_background_image.9.png +0 -0
  384. package/android/src/main/res/drawable-xxhdpi/googlepay_button_background_image.9.png +0 -0
  385. package/android/src/main/res/drawable-xxxhdpi/googlepay_button_background_image.9.png +0 -0
  386. package/android/src/main/res/drawable-zh-rcn/pay_with_googlepay_button_content.xml +0 -15
  387. package/android/src/main/res/drawable-zh-rhk/pay_with_googlepay_button_content.xml +0 -15
  388. package/android/src/main/res/drawable-zh-rtw/pay_with_googlepay_button_content.xml +0 -15
  389. package/android/src/main/res/drawable-zu/pay_with_googlepay_button_content.xml +0 -14
  390. package/android/src/main/res/layout/googlepay_button.xml +0 -39
  391. package/ios/pushprovisioning/PushProvisioningUtils.swift +0 -64
@@ -0,0 +1,82 @@
1
+ import React from 'react';
2
+ import {
3
+ AccessibilityProps,
4
+ requireNativeComponent,
5
+ NativeSyntheticEvent,
6
+ } from 'react-native';
7
+ import type {
8
+ PaymentSheet,
9
+ AddressDetails,
10
+ StripeError,
11
+ AddressSheetError,
12
+ } from '../types';
13
+
14
+ const AddressSheetNative = requireNativeComponent<any>('AddressSheetView');
15
+
16
+ /**
17
+ * Props
18
+ */
19
+ export interface Props extends AccessibilityProps {
20
+ /** Whether the sheet is visible. Defaults to false. */
21
+ visible: boolean;
22
+ /** Controls how the modal is presented (after animation). iOS only. Defaults to `popover`. */
23
+ presentationStyle?: 'fullscreen' | 'popover';
24
+ /** Controls how the modal animates. iOS only. */
25
+ animationStyle?: 'flip' | 'curl' | 'slide' | 'dissolve';
26
+ /** Configuration for the look and feel of the UI. */
27
+ appearance?: PaymentSheet.AppearanceParams;
28
+ /** The values to prepopulate the sheet's fields with. */
29
+ defaultValues?: AddressDetails;
30
+ /** Configuration for additional fields besides the physical address */
31
+ additionalFields?: {
32
+ /** Determines whether the phone number is hidden, required, or optional. Defaults to hidden. */
33
+ phoneNumber?: 'hidden' | 'optional' | 'required';
34
+ /** The label of a checkbox displayed below other fields. If null or undefined, the checkbox is not displayed. */
35
+ checkboxLabel?: string;
36
+ };
37
+ /** A list of two-letter country codes representing countries the customers can select. If the list is empty (the default), we display all countries. */
38
+ allowedCountries?: Array<string>;
39
+ /** A list of two-letter country codes representing countries that support address autocomplete. Defaults to a list of countries that Stripe has audited to ensure a good autocomplete experience. */
40
+ autocompleteCountries?: Array<string>;
41
+ /** The title of the primary button displayed at the bottom of the screen. Defaults to "Save Address". */
42
+ primaryButtonTitle?: string;
43
+ /** Title displayed at the top of the sheet. Defaults to "Address". */
44
+ sheetTitle?: string;
45
+ /** Android only. Google Places api key used to provide autocomplete suggestions. When null, autocomplete is disabled on Android. */
46
+ googlePlacesApiKey?: string;
47
+ /** Called when the user submits their information */
48
+ onSubmit: (result: CollectAddressResult) => void;
49
+ /** Called when the user taps the button to close the sheet before submitting their information, or when an error occurs. */
50
+ onError: (error: StripeError<AddressSheetError>) => void;
51
+ }
52
+
53
+ export type CollectAddressResult = Required<AddressDetails>;
54
+
55
+ /**
56
+ *
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * <AddressSheet
61
+ *
62
+ * />
63
+ * ```
64
+ * @param __namedParameters Props
65
+ * @returns JSX.Element
66
+ * @category ReactComponents
67
+ */
68
+ export function AddressSheet({ onSubmit, onError, ...props }: Props) {
69
+ return (
70
+ <AddressSheetNative
71
+ {...props}
72
+ onSubmitAction={(value: NativeSyntheticEvent<CollectAddressResult>) =>
73
+ onSubmit(value.nativeEvent)
74
+ }
75
+ onErrorAction={(
76
+ value: NativeSyntheticEvent<{
77
+ error: StripeError<AddressSheetError>;
78
+ }>
79
+ ) => onError(value.nativeEvent.error)}
80
+ />
81
+ );
82
+ }
@@ -0,0 +1,157 @@
1
+ import React from 'react';
2
+ import {
3
+ AccessibilityProps,
4
+ StyleProp,
5
+ ViewStyle,
6
+ requireNativeComponent,
7
+ TouchableOpacity,
8
+ StyleSheet,
9
+ Platform,
10
+ NativeSyntheticEvent,
11
+ } from 'react-native';
12
+ import {
13
+ ButtonType,
14
+ ButtonStyle,
15
+ ShippingMethod,
16
+ ShippingContact,
17
+ } from '../types/PlatformPay';
18
+
19
+ const GooglePayButtonNative = requireNativeComponent<any>('GooglePayButton');
20
+ const ApplePayButtonNative = requireNativeComponent<any>('ApplePayButton');
21
+
22
+ /**
23
+ * PlatformPayButton Component Props
24
+ */
25
+ export interface Props extends AccessibilityProps {
26
+ /** Sets the text displayed by the button. */
27
+ type?: ButtonType;
28
+ /** iOS only. Sets the coloring of the button. */
29
+ appearance?: ButtonStyle;
30
+ /** iOS only. Sets the border radius of the button. */
31
+ borderRadius?: number;
32
+ /** Function called whenever the button is pressed. */
33
+ onPress(): void;
34
+ /** Set to `true` to disable the button from being pressed & apply a slight opacity to indicate that it is unpressable. Defaults to false. */
35
+ disabled?: boolean;
36
+ /**
37
+ * This callback is triggered whenever the user selects a shipping method in the Apple Pay sheet.
38
+ * It receives one parameter: an `event` object with a `shippingMethod` field. You MUST
39
+ * update the Apple Pay sheet in your callback using the updatePlatformPaySheet function, otherwise the
40
+ * Apple Pay sheet will hang and the payment flow will automatically cancel.
41
+ */
42
+ onShippingMethodSelected?: (event: {
43
+ shippingMethod: ShippingMethod;
44
+ }) => void;
45
+ /**
46
+ * This callback is triggered whenever the user selects a shipping contact in the Apple Pay sheet.
47
+ * It receives one parameter: an `event` object with a `shippingContact` field. You MUST
48
+ * update the Apple Pay sheet in your callback using the updatePlatformPaySheet function, otherwise the
49
+ * Apple Pay sheet will hang and the payment flow will automatically cancel.
50
+ */
51
+ onShippingContactSelected?: (event: {
52
+ shippingContact: ShippingContact;
53
+ }) => void;
54
+ /**
55
+ * This callback is triggered whenever the user inputs a coupon code in the Apple Pay sheet.
56
+ * It receives one parameter: an `event` object with a `couponCode` field. You MUST
57
+ * update the Apple Pay sheet in your callback using the updatePlatformPaySheet function, otherwise the
58
+ * Apple Pay sheet will hang and the payment flow will automatically cancel.
59
+ */
60
+ onCouponCodeEntered?: (event: { couponCode: string }) => void;
61
+ testID?: string;
62
+ style?: StyleProp<ViewStyle>;
63
+ }
64
+
65
+ /**
66
+ * PlatformPayButton Component. Display the platform-specific native wallet pay button: Apple Pay on iOS, and Google Pay on Android.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * <PlatformPayButton
71
+ * onPress={pay}
72
+ * type={PlatformPay.ButtonType.Subscribe}
73
+ * appearance={PlatformPay.ButtonStyle.WhiteOutline}
74
+ * borderRadius={4}
75
+ * disabled={!isApplePaySupported}
76
+ * style={styles.payButton}
77
+ * />
78
+ * ```
79
+ * @param __namedParameters Props
80
+ * @returns JSX.Element
81
+ * @category ReactComponents
82
+ */
83
+ export function PlatformPayButton({
84
+ type = ButtonType.Default,
85
+ appearance = ButtonStyle.Automatic,
86
+ onPress,
87
+ disabled,
88
+ borderRadius,
89
+ onShippingMethodSelected,
90
+ onShippingContactSelected,
91
+ onCouponCodeEntered,
92
+ ...props
93
+ }: Props) {
94
+ const shippingMethodCallback = onShippingMethodSelected
95
+ ? (
96
+ value: NativeSyntheticEvent<{
97
+ shippingMethod: ShippingMethod;
98
+ }>
99
+ ) => {
100
+ onShippingMethodSelected && onShippingMethodSelected(value.nativeEvent);
101
+ }
102
+ : undefined;
103
+
104
+ const shippingContactCallback = onShippingContactSelected
105
+ ? (
106
+ value: NativeSyntheticEvent<{
107
+ shippingContact: ShippingContact;
108
+ }>
109
+ ) => {
110
+ onShippingContactSelected(value.nativeEvent);
111
+ }
112
+ : undefined;
113
+
114
+ const couponCodeCallback = onCouponCodeEntered
115
+ ? (
116
+ value: NativeSyntheticEvent<{
117
+ couponCode: string;
118
+ }>
119
+ ) => {
120
+ onCouponCodeEntered && onCouponCodeEntered(value.nativeEvent);
121
+ }
122
+ : undefined;
123
+
124
+ return (
125
+ <TouchableOpacity
126
+ disabled={disabled}
127
+ activeOpacity={disabled ? 0.3 : 1}
128
+ onPress={onPress}
129
+ style={disabled ? styles.disabled : styles.notDisabled}
130
+ >
131
+ {Platform.OS === 'ios' ? (
132
+ <ApplePayButtonNative
133
+ type={type}
134
+ buttonStyle={appearance}
135
+ borderRadius={borderRadius}
136
+ disabled={disabled}
137
+ onShippingMethodSelectedAction={shippingMethodCallback}
138
+ onShippingContactSelectedAction={shippingContactCallback}
139
+ onCouponCodeEnteredAction={couponCodeCallback}
140
+ {...props}
141
+ />
142
+ ) : (
143
+ <GooglePayButtonNative type={type} {...props} />
144
+ )}
145
+ </TouchableOpacity>
146
+ );
147
+ }
148
+
149
+ const styles = StyleSheet.create({
150
+ disabled: {
151
+ flex: 0,
152
+ opacity: 0.3,
153
+ },
154
+ notDisabled: {
155
+ flex: 0,
156
+ },
157
+ });
package/src/functions.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  ApplePay,
6
6
  ApplePayError,
7
7
  ApplePayResult,
8
+ PlatformPayError,
8
9
  ConfirmPaymentResult,
9
10
  ConfirmPaymentSheetPaymentResult,
10
11
  SetupIntent,
@@ -36,6 +37,7 @@ import {
36
37
  CanAddCardToWalletParams,
37
38
  CanAddCardToWalletResult,
38
39
  FinancialConnections,
40
+ PlatformPay,
39
41
  } from './types';
40
42
  import { Platform } from 'react-native';
41
43
 
@@ -174,10 +176,12 @@ export const confirmPayment = async (
174
176
  }
175
177
  };
176
178
 
179
+ /** @deprecated Use `isPlatformPaySupported` instead. */
177
180
  export const isApplePaySupported = async (): Promise<boolean> => {
178
181
  return isiOS && (await NativeStripeSdk.isApplePaySupported());
179
182
  };
180
183
 
184
+ /** @deprecated Use `confirmPlatformPaySetupIntent`, `confirmPlatformPayPayment`, or `createPlatformPayPaymentMethod` instead. */
181
185
  export const presentApplePay = async (
182
186
  params: ApplePay.PresentParams
183
187
  ): Promise<ApplePayResult> => {
@@ -207,6 +211,7 @@ export const presentApplePay = async (
207
211
  }
208
212
  };
209
213
 
214
+ /** @deprecated Use `updatePlatformPaySheet` instead. */
210
215
  export const updateApplePaySummaryItems = async (
211
216
  summaryItems: ApplePay.CartSummaryItem[],
212
217
  errorAddressFields: Array<{
@@ -237,6 +242,7 @@ export const updateApplePaySummaryItems = async (
237
242
  }
238
243
  };
239
244
 
245
+ /** @deprecated Use `confirmPlatformPaySetupIntent` or `confirmPlatformPayPayment` instead. */
240
246
  export const confirmApplePayPayment = async (
241
247
  clientSecret: string
242
248
  ): Promise<{ error?: StripeError<ApplePayError> }> => {
@@ -464,6 +470,7 @@ export const resetPaymentSheetCustomer = async (): Promise<null> => {
464
470
  return await NativeStripeSdk.resetPaymentSheetCustomer();
465
471
  };
466
472
 
473
+ /** @deprecated Use `isPlatformPaySupported` instead. */
467
474
  export const isGooglePaySupported = async (
468
475
  params?: GooglePay.IsSupportedParams
469
476
  ): Promise<boolean> => {
@@ -472,6 +479,7 @@ export const isGooglePaySupported = async (
472
479
  );
473
480
  };
474
481
 
482
+ /** @deprecated Use `confirmPlatformPaySetupIntent`, `confirmPlatformPayPayment`, or `createPlatformPayPaymentMethod` instead. */
475
483
  export const initGooglePay = async (
476
484
  params: GooglePay.InitParams
477
485
  ): Promise<GooglePayInitResult> => {
@@ -490,6 +498,7 @@ export const initGooglePay = async (
490
498
  }
491
499
  };
492
500
 
501
+ /** @deprecated Use `confirmPlatformPaySetupIntent`, `confirmPlatformPayPayment`, or `createPlatformPayPaymentMethod` instead. */
493
502
  export const presentGooglePay = async (
494
503
  params: GooglePay.PresentParams
495
504
  ): Promise<PayWithGooglePayResult> => {
@@ -508,6 +517,7 @@ export const presentGooglePay = async (
508
517
  }
509
518
  };
510
519
 
520
+ /** @deprecated Use `createPlatformPayPaymentMethod` instead. */
511
521
  export const createGooglePayPaymentMethod = async (
512
522
  params: GooglePay.CreatePaymentMethodParams
513
523
  ): Promise<CreateGooglePayPaymentMethodResult> => {
@@ -529,6 +539,7 @@ export const createGooglePayPaymentMethod = async (
529
539
  }
530
540
  };
531
541
 
542
+ /** @deprecated Use `openNativePaySetup` instead. */
532
543
  export const openApplePaySetup = async (): Promise<OpenApplePaySetupResult> => {
533
544
  try {
534
545
  const { error } = await NativeStripeSdk.openApplePaySetup();
@@ -654,6 +665,12 @@ export const collectFinancialConnectionsAccounts = async (
654
665
  }
655
666
  };
656
667
 
668
+ /**
669
+ * Check if the app & device support adding this card to the native wallet.
670
+ * @param params An object containing fields for `primaryAccountIdentifier`, `cardLastFour`, and `testEnv`.
671
+ *
672
+ * @returns A promise resolving to an object of type CanAddCardToWalletResult. Check the `canAddCard` field, if it's true, you should show the `<AddToWalletButton />`
673
+ */
657
674
  export const canAddCardToWallet = async (
658
675
  params: CanAddCardToWalletParams
659
676
  ): Promise<CanAddCardToWalletResult> => {
@@ -677,6 +694,7 @@ export const canAddCardToWallet = async (
677
694
  }
678
695
  };
679
696
 
697
+ /** @deprecated Please use `canAddCardToWallet` instead. */
680
698
  export const isCardInWallet = async (params: {
681
699
  cardLastFour: string;
682
700
  }): Promise<IsCardInWalletResult> => {
@@ -702,3 +720,166 @@ export const isCardInWallet = async (params: {
702
720
  };
703
721
 
704
722
  export const Constants = NativeStripeSdk.getConstants();
723
+
724
+ /**
725
+ * Check if the relevant native wallet (Apple Pay on iOS, Google Pay on Android) is supported.
726
+ * @returns A boolean indicating whether or not the native wallet is supported.
727
+ */
728
+ export const isPlatformPaySupported = async (params?: {
729
+ googlePay?: PlatformPay.IsGooglePaySupportedParams;
730
+ }): Promise<boolean> => {
731
+ return await NativeStripeSdk.isPlatformPaySupported(params ?? {});
732
+ };
733
+
734
+ /**
735
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to confirm a Stripe [SetupIntent](https://stripe.com/docs/api/setup_intents).
736
+ * @param clientSecret The client secret of the SetupIntent.
737
+ * @param params an object describing the Apple Pay and Google Pay configurations.
738
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `setupIntent` and `paymentMethod` fields.
739
+ */
740
+ export const confirmPlatformPaySetupIntent = async (
741
+ clientSecret: string,
742
+ params: PlatformPay.ConfirmParams
743
+ ): Promise<PlatformPay.ConfirmSetupIntentResult> => {
744
+ try {
745
+ const { error, setupIntent } = (await NativeStripeSdk.confirmPlatformPay(
746
+ clientSecret,
747
+ params,
748
+ false
749
+ )) as PlatformPay.ConfirmSetupIntentResult;
750
+ if (error) {
751
+ return {
752
+ error,
753
+ };
754
+ }
755
+ return {
756
+ setupIntent: setupIntent!,
757
+ };
758
+ } catch (error: any) {
759
+ return {
760
+ error,
761
+ };
762
+ }
763
+ };
764
+
765
+ /**
766
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to confirm a Stripe [PaymentIntent](https://stripe.com/docs/api/payment_intents).
767
+ * @param clientSecret The client secret of the PaymentIntent.
768
+ * @param params an object describing the Apple Pay and Google Pay configurations.
769
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `paymentIntent` and `paymentMethod` fields.
770
+ */
771
+ export const confirmPlatformPayPayment = async (
772
+ clientSecret: string,
773
+ params: PlatformPay.ConfirmParams
774
+ ): Promise<PlatformPay.ConfirmPaymentResult> => {
775
+ try {
776
+ const { error, paymentIntent } = (await NativeStripeSdk.confirmPlatformPay(
777
+ clientSecret,
778
+ params,
779
+ true
780
+ )) as PlatformPay.ConfirmPaymentResult;
781
+ if (error) {
782
+ return {
783
+ error,
784
+ };
785
+ }
786
+ return {
787
+ paymentIntent: paymentIntent!,
788
+ };
789
+ } catch (error: any) {
790
+ return {
791
+ error,
792
+ };
793
+ }
794
+ };
795
+
796
+ /**
797
+ * iOS only, this will always return false on Android. Dismisses the Apple Pay sheet if it is open.
798
+ * @returns A boolean indicating whether or not the sheet was successfully closed. Will return false if the Apple Pay sheet was not open.
799
+ */
800
+ export const dismissPlatformPay = async (): Promise<boolean> => {
801
+ if (Platform.OS !== 'ios') {
802
+ return false;
803
+ }
804
+ try {
805
+ const didDismiss = await NativeStripeSdk.dismissPlatformPay();
806
+ return didDismiss;
807
+ } catch (error: any) {
808
+ return false;
809
+ }
810
+ };
811
+
812
+ /**
813
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to create a Stripe [PaymentMethod](https://stripe.com/docs/api/payment_methods) and [token](https://stripe.com/docs/api/tokens).
814
+ * @param params an object describing the Apple Pay and Google Pay configurations.
815
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `paymentMethod` and `token` fields.
816
+ */
817
+ export const createPlatformPayPaymentMethod = async (
818
+ params: PlatformPay.PaymentMethodParams
819
+ ): Promise<PlatformPay.PaymentMethodResult> => {
820
+ try {
821
+ const { error, paymentMethod, token } =
822
+ await NativeStripeSdk.createPlatformPayPaymentMethod(params);
823
+ if (error) {
824
+ return {
825
+ error,
826
+ };
827
+ }
828
+ return {
829
+ paymentMethod: paymentMethod!,
830
+ token: token!,
831
+ };
832
+ } catch (error: any) {
833
+ return {
834
+ error,
835
+ };
836
+ }
837
+ };
838
+
839
+ /**
840
+ * iOS only. Update different items on the Apple Pay sheet, including the summary items, the shipping methods, and any errors shown. iOS only, this is a no-op on Android.
841
+ * @param params an object describing the Apple Pay configuration, with the following fields:
842
+ * - cartItems An array of payment summary items to display in the Apple Pay sheet.
843
+ * - shippingMethods An array of shipping methods to display in the Apple Pay sheet.
844
+ * - errors An array of errors associated with the user's input that must be corrected to proceed with payment. These errors will be shown in the Apple Pay sheet.
845
+ *
846
+ * @returns An object with an optional 'error' field, which is only populated if something went wrong.
847
+ */
848
+ export const updatePlatformPaySheet = async (params: {
849
+ applePay: {
850
+ cartItems: Array<PlatformPay.CartSummaryItem>;
851
+ shippingMethods: Array<PlatformPay.ShippingMethod>;
852
+ errors: Array<PlatformPay.ApplePaySheetError>;
853
+ };
854
+ }): Promise<{
855
+ error?: StripeError<PlatformPayError>;
856
+ }> => {
857
+ if (Platform.OS !== 'ios') {
858
+ return {};
859
+ }
860
+
861
+ try {
862
+ await NativeStripeSdk.updatePlatformPaySheet(
863
+ params.applePay.cartItems,
864
+ params.applePay.shippingMethods,
865
+ params.applePay.errors
866
+ );
867
+
868
+ return {};
869
+ } catch (error: any) {
870
+ return {
871
+ error,
872
+ };
873
+ }
874
+ };
875
+
876
+ /**
877
+ * iOS only, this is a no-op on Android. Use this method to move users to the interface for adding credit cards.
878
+ * This method transfers control to the Wallet app on iPhone or to the Settings
879
+ * app on iPad. For devices that don’t support Apple Pay, this method does nothing.
880
+ */
881
+ export const openPlatformPaySetup = async (): Promise<void> => {
882
+ if (Platform.OS === 'ios') {
883
+ await NativeStripeSdk.openApplePaySetup();
884
+ }
885
+ };
@@ -0,0 +1,174 @@
1
+ import { useCallback, useState } from 'react';
2
+ import type {
3
+ PlatformPay,
4
+ CanAddCardToWalletParams,
5
+ CanAddCardToWalletResult,
6
+ } from '../types';
7
+ import { useStripe } from './useStripe';
8
+
9
+ /**
10
+ * usePlatformPay hook. Access all Apple and Google Pay functionality with this hook.
11
+ */
12
+ export function usePlatformPay() {
13
+ const {
14
+ isPlatformPaySupported,
15
+ confirmPlatformPaySetupIntent,
16
+ confirmPlatformPayPayment,
17
+ createPlatformPayPaymentMethod,
18
+ dismissPlatformPay,
19
+ updatePlatformPaySheet,
20
+ canAddCardToWallet,
21
+ openPlatformPaySetup,
22
+ } = useStripe();
23
+ const [loading, setLoading] = useState(false);
24
+
25
+ const _isPlatformPaySupported = useCallback(
26
+ async (params?: { googlePay?: PlatformPay.IsGooglePaySupportedParams }) => {
27
+ setLoading(true);
28
+
29
+ const result = await isPlatformPaySupported(params);
30
+ setLoading(false);
31
+
32
+ return result;
33
+ },
34
+ [isPlatformPaySupported]
35
+ );
36
+
37
+ const _confirmPlatformPaySetupIntent = useCallback(
38
+ async (clientSecret: string, params: PlatformPay.ConfirmParams) => {
39
+ setLoading(true);
40
+
41
+ const result = await confirmPlatformPaySetupIntent(clientSecret, params);
42
+ setLoading(false);
43
+
44
+ return result;
45
+ },
46
+ [confirmPlatformPaySetupIntent]
47
+ );
48
+
49
+ const _confirmPlatformPayPayment = useCallback(
50
+ async (clientSecret: string, params: PlatformPay.ConfirmParams) => {
51
+ setLoading(true);
52
+
53
+ const result = await confirmPlatformPayPayment(clientSecret, params);
54
+ setLoading(false);
55
+
56
+ return result;
57
+ },
58
+ [confirmPlatformPayPayment]
59
+ );
60
+
61
+ const _createPlatformPayPaymentMethod = useCallback(
62
+ async (params: PlatformPay.PaymentMethodParams) => {
63
+ setLoading(true);
64
+
65
+ const result = await createPlatformPayPaymentMethod(params);
66
+ setLoading(false);
67
+
68
+ return result;
69
+ },
70
+ [createPlatformPayPaymentMethod]
71
+ );
72
+
73
+ const _dismissPlatformPay = useCallback(async () => {
74
+ setLoading(true);
75
+
76
+ const result = await dismissPlatformPay();
77
+ setLoading(false);
78
+
79
+ return result;
80
+ }, [dismissPlatformPay]);
81
+
82
+ const _updatePlatformPaySheet = useCallback(
83
+ async (params: {
84
+ applePay: {
85
+ cartItems: Array<PlatformPay.CartSummaryItem>;
86
+ shippingMethods: Array<PlatformPay.ShippingMethod>;
87
+ errors: Array<PlatformPay.ApplePaySheetError>;
88
+ };
89
+ }) => {
90
+ setLoading(true);
91
+
92
+ const result = await updatePlatformPaySheet(params);
93
+ setLoading(false);
94
+
95
+ return result;
96
+ },
97
+ [updatePlatformPaySheet]
98
+ );
99
+
100
+ const _canAddCardToWallet = useCallback(
101
+ async (
102
+ params: CanAddCardToWalletParams
103
+ ): Promise<CanAddCardToWalletResult> => {
104
+ setLoading(true);
105
+
106
+ const result = await canAddCardToWallet(params);
107
+ setLoading(false);
108
+
109
+ return result;
110
+ },
111
+ [canAddCardToWallet]
112
+ );
113
+
114
+ const _openPlatformPaySetup = useCallback(async (): Promise<void> => {
115
+ return openPlatformPaySetup();
116
+ }, [openPlatformPaySetup]);
117
+
118
+ return {
119
+ /** Use this boolean to present a spinner or other similar loading screen. `true` if the SDK is currently processing, `false` if it is not. */
120
+ loading,
121
+ /**
122
+ * Check if the relevant native wallet (Apple Pay on iOS, Google Pay on Android) is supported.
123
+ * @returns A boolean indicating whether or not the native wallet is supported.
124
+ */
125
+ isPlatformPaySupported: _isPlatformPaySupported,
126
+ /**
127
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to confirm a Stripe [SetupIntent](https://stripe.com/docs/api/setup_intents).
128
+ * @param clientSecret The client secret of the SetupIntent.
129
+ * @param params an object describing the Apple Pay and Google Pay configurations.
130
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `setupIntent` and `paymentMethod` fields.
131
+ */
132
+ confirmPlatformPaySetupIntent: _confirmPlatformPaySetupIntent,
133
+ /**
134
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to confirm a Stripe [PaymentIntent](https://stripe.com/docs/api/payment_intents).
135
+ * @param clientSecret The client secret of the PaymentIntent.
136
+ * @param params an object describing the Apple Pay and Google Pay configurations.
137
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `paymentIntent` and `paymentMethod` fields.
138
+ */
139
+ confirmPlatformPayPayment: _confirmPlatformPayPayment,
140
+ /**
141
+ * Launches the relevant native wallet sheet (Apple Pay on iOS, Google Pay on Android) in order to create a Stripe [PaymentMethod](https://stripe.com/docs/api/payment_methods) and [token](https://stripe.com/docs/api/tokens).
142
+ * @param params an object describing the Apple Pay and Google Pay configurations.
143
+ * @returns An object with an error field if something went wrong or the flow was cancelled, otherwise an object with both `paymentMethod` and `token` fields.
144
+ */
145
+ createPlatformPayPaymentMethod: _createPlatformPayPaymentMethod,
146
+ /**
147
+ * Dismiss the Apple Pay sheet if it is open. iOS only, this is a no-op on Android.
148
+ * @returns A boolean indicating whether or not the sheet was successfully closed. Will return false if the Apple Pay sheet was not open.
149
+ */
150
+ dismissPlatformPay: _dismissPlatformPay,
151
+ /**
152
+ * Update different items on the Apple Pay sheet, including the summary items, the shipping methods, and any errors shown. iOS only, this is a no-op on Android.
153
+ * @param cartItems An array of payment summary items to display in the Apple Pay sheet.
154
+ * @param shippingMethods An array of shipping methods to display in the Apple Pay sheet.
155
+ * @param errors An array of errors associated with the user's input that must be corrected to proceed with payment. These errors will be shown in the Apple Pay sheet.
156
+ *
157
+ * @returns An object with an optional 'error' field, which is only populated if something went wrong.
158
+ */
159
+ updatePlatformPaySheet: _updatePlatformPaySheet,
160
+ /**
161
+ * Check if the app & device support adding this card to the native wallet.
162
+ * @param params An object containing fields for `primaryAccountIdentifier`, `cardLastFour`, and `testEnv`.
163
+ *
164
+ * @returns A promise resolving to an object of type CanAddCardToWalletResult. Check the `canAddCard` field, if it's true, you should show the `<AddToWalletButton />`
165
+ */
166
+ canAddCardToWallet: _canAddCardToWallet,
167
+ /**
168
+ * iOS only, this is a no-op on Android. Use this method to move users to the interface for adding credit cards.
169
+ * This method transfers control to the Wallet app on iPhone or to the Settings
170
+ * app on iPad. For devices that don’t support Apple Pay, this method does nothing.
171
+ */
172
+ openPlatformPaySetup: _openPlatformPaySetup,
173
+ };
174
+ }