@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
@@ -4,7 +4,7 @@ import StripePaymentSheet
4
4
  import StripeFinancialConnections
5
5
 
6
6
  @objc(StripeSdk)
7
- class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionViewControllerDelegate, UIAdaptivePresentationControllerDelegate {
7
+ class StripeSdk: RCTEventEmitter, STPBankSelectionViewControllerDelegate, UIAdaptivePresentationControllerDelegate {
8
8
  public var cardFieldView: CardFieldView? = nil
9
9
  public var cardFormView: CardFormView? = nil
10
10
 
@@ -14,19 +14,49 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
14
14
  private var paymentSheetFlowController: PaymentSheet.FlowController?
15
15
 
16
16
  var urlScheme: String? = nil
17
-
18
- var applePayCompletionCallback: STPIntentClientSecretCompletionBlock? = nil
19
- var applePayRequestResolver: RCTPromiseResolveBlock? = nil
20
- var applePayRequestRejecter: RCTPromiseRejectBlock? = nil
21
- var applePayCompletionRejecter: RCTPromiseRejectBlock? = nil
22
- var confirmApplePayPaymentResolver: RCTPromiseResolveBlock? = nil
17
+
23
18
  var confirmPaymentResolver: RCTPromiseResolveBlock? = nil
24
19
 
20
+ var applePayCompletionCallback: STPIntentClientSecretCompletionBlock? = nil
21
+ var deprecatedApplePayRequestResolver: RCTPromiseResolveBlock? = nil
22
+ var deprecatedApplePayRequestRejecter: RCTPromiseRejectBlock? = nil
23
+ var deprecatedApplePayCompletionRejecter: RCTPromiseRejectBlock? = nil
24
+ var deprecatedConfirmApplePayPaymentResolver: RCTPromiseResolveBlock? = nil
25
+
26
+ var confirmApplePayResolver: RCTPromiseResolveBlock? = nil
27
+ var confirmApplePayPaymentClientSecret: String? = nil
28
+ var confirmApplePaySetupClientSecret: String? = nil
29
+
30
+ var applePaymentAuthorizationController: PKPaymentAuthorizationViewController? = nil
31
+ var createPlatformPayPaymentMethodResolver: RCTPromiseResolveBlock? = nil
32
+ var applePaymentMethodFlowCanBeCanceled = false
33
+
25
34
  var confirmPaymentClientSecret: String? = nil
26
35
 
27
- var shippingMethodUpdateHandler: ((PKPaymentRequestShippingMethodUpdate) -> Void)? = nil
28
- var shippingContactUpdateHandler: ((PKPaymentRequestShippingContactUpdate) -> Void)? = nil
29
-
36
+ var shippingMethodUpdateCompletion: ((PKPaymentRequestShippingMethodUpdate) -> Void)? = nil
37
+ var shippingContactUpdateCompletion: ((PKPaymentRequestShippingContactUpdate) -> Void)? = nil
38
+ @available(iOS 15.0, *)
39
+ var couponCodeUpdateCompletion: ((PKPaymentRequestCouponCodeUpdate) -> Void)? {
40
+ get { _couponCodeUpdateCompletion as? ((PKPaymentRequestCouponCodeUpdate) -> Void) }
41
+ set { _couponCodeUpdateCompletion = newValue }
42
+ }
43
+ private var _couponCodeUpdateCompletion: Any? = nil
44
+ var shippingMethodUpdateJSCallback: RCTDirectEventBlock? = nil
45
+ var shippingContactUpdateJSCallback: RCTDirectEventBlock? = nil
46
+ var couponCodeEnteredJSCallback: RCTDirectEventBlock? = nil
47
+ var applePaySummaryItems: [PKPaymentSummaryItem] = []
48
+ var applePayShippingMethods: [PKShippingMethod] = []
49
+ var applePayShippingAddressErrors: [Error]? = nil
50
+ var applePayCouponCodeErrors: [Error]? = nil
51
+
52
+ var hasLegacyApplePayListeners = false
53
+ override func startObserving() {
54
+ hasLegacyApplePayListeners = true
55
+ }
56
+ override func stopObserving() {
57
+ hasLegacyApplePayListeners = false
58
+ }
59
+
30
60
  override func supportedEvents() -> [String]! {
31
61
  return ["onDidSetShippingMethod", "onDidSetShippingContact"]
32
62
  }
@@ -83,7 +113,7 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
83
113
 
84
114
  if let appearanceParams = params["appearance"] as? NSDictionary {
85
115
  do {
86
- configuration.appearance = try buildPaymentSheetAppearance(userParams: appearanceParams)
116
+ configuration.appearance = try PaymentSheetAppearance.buildAppearanceFromParams(userParams: appearanceParams)
87
117
  } catch {
88
118
  resolve(Errors.createError(ErrorType.Failed, error.localizedDescription))
89
119
  return
@@ -130,6 +160,12 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
130
160
  }
131
161
 
132
162
  }
163
+
164
+ if let defaultShippingDetails = params["defaultShippingDetails"] as? NSDictionary {
165
+ configuration.shippingDetails = {
166
+ return AddressSheetUtils.buildAddressDetails(params: defaultShippingDetails)
167
+ }
168
+ }
133
169
 
134
170
  if let customerId = params["customerId"] as? String {
135
171
  if let customerEphemeralKeySecret = params["customerEphemeralKeySecret"] as? String {
@@ -358,9 +394,56 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
358
394
  }
359
395
  }
360
396
 
397
+ @objc(updatePlatformPaySheet:shippingMethods:errors:resolver:rejecter:)
398
+ func updatePlatformPaySheet(summaryItems: NSArray,
399
+ shippingMethods: NSArray,
400
+ errors: [NSDictionary],
401
+ resolver resolve: @escaping RCTPromiseResolveBlock,
402
+ rejecter reject: @escaping RCTPromiseRejectBlock)
403
+ {
404
+ let couponUpdateHandlerIsNil: Bool = {
405
+ if #available(iOS 15.0, *), self.couponCodeUpdateCompletion == nil {
406
+ return true
407
+ }
408
+ return false
409
+ }()
410
+
411
+ if (shippingMethodUpdateCompletion == nil && shippingContactUpdateCompletion == nil && couponUpdateHandlerIsNil) {
412
+ resolve(Errors.createError(ErrorType.Failed, "You can use this method only after either onShippingContactSelected, onShippingMethodSelected, or onCouponCodeEntered callbacks are triggered"))
413
+ return
414
+ }
415
+
416
+ do {
417
+ applePaySummaryItems = try ApplePayUtils.buildPaymentSummaryItems(items: summaryItems as? [[String : Any]])
418
+ } catch {
419
+ resolve(Errors.createError(ErrorType.Failed, error.localizedDescription))
420
+ return
421
+ }
422
+
423
+ applePayShippingMethods = ApplePayUtils.buildShippingMethods(items: shippingMethods as? [[String : Any]])
424
+
425
+ do {
426
+ (applePayShippingAddressErrors, applePayCouponCodeErrors) = try ApplePayUtils.buildApplePayErrors(errorItems: errors)
427
+ } catch {
428
+ resolve(Errors.createError(ErrorType.Failed, error.localizedDescription))
429
+ return
430
+ }
431
+
432
+
433
+ shippingMethodUpdateCompletion?(PKPaymentRequestShippingMethodUpdate.init(paymentSummaryItems: applePaySummaryItems))
434
+ shippingContactUpdateCompletion?(PKPaymentRequestShippingContactUpdate.init(errors: applePayShippingAddressErrors, paymentSummaryItems: applePaySummaryItems, shippingMethods: applePayShippingMethods))
435
+ if #available(iOS 15.0, *) {
436
+ couponCodeUpdateCompletion?(PKPaymentRequestCouponCodeUpdate.init(errors: applePayCouponCodeErrors, paymentSummaryItems: applePaySummaryItems, shippingMethods: applePayShippingMethods))
437
+ self.couponCodeUpdateCompletion = nil
438
+ }
439
+ self.shippingMethodUpdateCompletion = nil
440
+ self.shippingContactUpdateCompletion = nil
441
+ resolve([])
442
+ }
443
+
361
444
  @objc(updateApplePaySummaryItems:errorAddressFields:resolver:rejecter:)
362
445
  func updateApplePaySummaryItems(summaryItems: NSArray, errorAddressFields: [NSDictionary], resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
363
- if (shippingMethodUpdateHandler == nil && shippingContactUpdateHandler == nil) {
446
+ if (shippingMethodUpdateCompletion == nil && shippingContactUpdateCompletion == nil) {
364
447
  resolve(Errors.createError(ErrorType.Failed, "You can use this method only after either onDidSetShippingMethod or onDidSetShippingContact events emitted"))
365
448
  return
366
449
  }
@@ -380,88 +463,26 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
380
463
  shippingAddressErrors.append(PKPaymentRequest.paymentShippingAddressInvalidError(withKey: field, localizedDescription: message))
381
464
  }
382
465
 
383
- shippingMethodUpdateHandler?(PKPaymentRequestShippingMethodUpdate.init(paymentSummaryItems: paymentSummaryItems))
384
- shippingContactUpdateHandler?(PKPaymentRequestShippingContactUpdate.init(errors: shippingAddressErrors, paymentSummaryItems: paymentSummaryItems, shippingMethods: []))
385
- self.shippingMethodUpdateHandler = nil
386
- self.shippingContactUpdateHandler = nil
466
+ shippingMethodUpdateCompletion?(PKPaymentRequestShippingMethodUpdate.init(paymentSummaryItems: paymentSummaryItems))
467
+ shippingContactUpdateCompletion?(PKPaymentRequestShippingContactUpdate.init(errors: shippingAddressErrors, paymentSummaryItems: paymentSummaryItems, shippingMethods: []))
468
+ self.shippingMethodUpdateCompletion = nil
469
+ self.shippingContactUpdateCompletion = nil
387
470
  resolve([])
388
471
  }
389
472
 
390
473
  @objc(openApplePaySetup:rejecter:)
391
474
  func openApplePaySetup(resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
392
- let library = PKPassLibrary.init()
393
- if (library.responds(to: #selector(PKPassLibrary.openPaymentSetup))) {
394
- library.openPaymentSetup()
395
- resolve([])
396
- } else {
397
- resolve(Errors.createError(ErrorType.Failed, "Cannot open payment setup"))
398
- }
399
- }
400
-
401
-
402
- func applePayContext(_ context: STPApplePayContext, didSelect shippingMethod: PKShippingMethod, handler: @escaping (PKPaymentRequestShippingMethodUpdate) -> Void) {
403
- self.shippingMethodUpdateHandler = handler
404
- sendEvent(withName: "onDidSetShippingMethod", body: ["shippingMethod": Mappers.mapFromShippingMethod(shippingMethod: shippingMethod)])
405
- }
406
-
407
- func applePayContext(_ context: STPApplePayContext, didSelectShippingContact contact: PKContact, handler: @escaping (PKPaymentRequestShippingContactUpdate) -> Void) {
408
- self.shippingContactUpdateHandler = handler
409
- sendEvent(withName: "onDidSetShippingContact", body: ["shippingContact": Mappers.mapFromShippingContact(shippingContact: contact)])
410
- }
411
-
412
- func applePayContext(_ context: STPApplePayContext, didCreatePaymentMethod paymentMethod: STPPaymentMethod, paymentInformation: PKPayment, completion: @escaping STPIntentClientSecretCompletionBlock) {
413
- self.applePayCompletionCallback = completion
414
-
415
- let address = paymentMethod.billingDetails?.address?.line1?.split(whereSeparator: \.isNewline)
416
- if (address?.indices.contains(0) == true) {
417
- paymentMethod.billingDetails?.address?.line1 = String(address?[0] ?? "")
418
- }
419
- if (address?.indices.contains(1) == true) {
420
- paymentMethod.billingDetails?.address?.line2 = String(address?[1] ?? "")
421
- }
422
-
423
- let method = Mappers.mapFromPaymentMethod(paymentMethod)
424
- self.applePayRequestResolver?(Mappers.createResult("paymentMethod", method))
425
- self.applePayRequestRejecter = nil
475
+ PKPassLibrary.init().openPaymentSetup()
476
+ resolve([])
426
477
  }
427
478
 
428
479
  @objc(confirmApplePayPayment:resolver:rejecter:)
429
480
  func confirmApplePayPayment(clientSecret: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
430
- self.applePayCompletionRejecter = reject
431
- self.confirmApplePayPaymentResolver = resolve
481
+ self.deprecatedApplePayCompletionRejecter = reject
482
+ self.deprecatedConfirmApplePayPaymentResolver = resolve
432
483
  self.applePayCompletionCallback?(clientSecret, nil)
433
484
  }
434
485
 
435
- func applePayContext(_ context: STPApplePayContext, didCompleteWith status: STPPaymentStatus, error: Error?) {
436
- switch status {
437
- case .success:
438
- applePayCompletionRejecter = nil
439
- applePayRequestRejecter = nil
440
- confirmApplePayPaymentResolver?([])
441
- break
442
- case .error:
443
- let message = "Payment not completed"
444
- applePayCompletionRejecter?(ErrorType.Failed, message, nil)
445
- applePayRequestRejecter?(ErrorType.Failed, message, nil)
446
- applePayCompletionRejecter = nil
447
- applePayRequestRejecter = nil
448
- break
449
- case .userCancellation:
450
- let message = "The payment has been canceled"
451
- applePayCompletionRejecter?(ErrorType.Canceled, message, nil)
452
- applePayRequestRejecter?(ErrorType.Canceled, message, nil)
453
- applePayCompletionRejecter = nil
454
- applePayRequestRejecter = nil
455
- break
456
- @unknown default:
457
- let message = "Payment not completed"
458
- applePayCompletionRejecter?(ErrorType.Unknown, message, nil)
459
- applePayRequestRejecter?(ErrorType.Unknown, message, nil)
460
- applePayCompletionRejecter = nil
461
- applePayRequestRejecter = nil
462
- }
463
- }
464
-
465
486
  @objc(isApplePaySupported:rejecter:)
466
487
  func isApplePaySupported(resolver resolve: @escaping RCTPromiseResolveBlock,
467
488
  rejecter reject: @escaping RCTPromiseRejectBlock) {
@@ -490,65 +511,110 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
490
511
  func presentApplePay(params: NSDictionary,
491
512
  resolver resolve: @escaping RCTPromiseResolveBlock,
492
513
  rejecter reject: @escaping RCTPromiseRejectBlock) {
493
- if (merchantIdentifier == nil) {
494
- reject(ErrorType.Failed, "You must provide merchantIdentifier", nil)
514
+ self.deprecatedApplePayRequestResolver = resolve
515
+ self.deprecatedApplePayRequestRejecter = reject
516
+
517
+ let (error, paymentRequest) = ApplePayUtils.createPaymentRequest(merchantIdentifier: merchantIdentifier, params: params)
518
+ guard let paymentRequest = paymentRequest else {
519
+ resolve(error)
495
520
  return
496
521
  }
497
-
498
- if (params["jcbEnabled"] as? Bool == true) {
499
- StripeAPI.additionalEnabledApplePayNetworks = [.JCB]
522
+
523
+ if let applePayContext = STPApplePayContext(paymentRequest: paymentRequest, delegate: self) {
524
+ DispatchQueue.main.async {
525
+ applePayContext.presentApplePay(completion: nil)
526
+ }
527
+ } else {
528
+ resolve(Errors.createError(ErrorType.Failed, "Payment not completed"))
500
529
  }
501
-
502
- guard let summaryItems = params["cartItems"] as? NSArray else {
503
- reject(ErrorType.Failed, "You must provide the items for purchase", nil)
530
+ }
531
+
532
+ @objc(isPlatformPaySupported:resolver:rejecter:)
533
+ func isPlatformPaySupported(params: NSDictionary,
534
+ resolver resolve: @escaping RCTPromiseResolveBlock,
535
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
536
+ resolve(StripeAPI.deviceSupportsApplePay())
537
+ }
538
+
539
+ @objc(createPlatformPayPaymentMethod:resolver:rejecter:)
540
+ func createPlatformPayPaymentMethod(params: NSDictionary,
541
+ resolver resolve: @escaping RCTPromiseResolveBlock,
542
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
543
+ guard let applePayPatams = params["applePay"] as? NSDictionary else {
544
+ resolve(Errors.createError(ErrorType.Failed, "You must provide the `applePay` parameter."))
504
545
  return
505
546
  }
506
- guard let country = params["country"] as? String else {
507
- reject(ErrorType.Failed, "You must provide the country", nil)
547
+ let (error, paymentRequest) = ApplePayUtils.createPaymentRequest(merchantIdentifier: merchantIdentifier, params: applePayPatams)
548
+ guard let paymentRequest = paymentRequest else {
549
+ resolve(error)
508
550
  return
509
551
  }
510
- guard let currency = params["currency"] as? String else {
511
- reject(ErrorType.Failed, "You must provide the payment currency", nil)
552
+
553
+ self.applePaySummaryItems = paymentRequest.paymentSummaryItems
554
+ self.applePayShippingMethods = paymentRequest.shippingMethods ?? []
555
+ self.applePayShippingAddressErrors = nil
556
+ self.applePayCouponCodeErrors = nil
557
+ applePaymentMethodFlowCanBeCanceled = true
558
+ createPlatformPayPaymentMethodResolver = resolve
559
+ self.applePaymentAuthorizationController = PKPaymentAuthorizationViewController(paymentRequest: paymentRequest)
560
+ if let applePaymentAuthorizationController = self.applePaymentAuthorizationController {
561
+ applePaymentAuthorizationController.delegate = self
562
+ DispatchQueue.main.async {
563
+ let vc = findViewControllerPresenter(from: UIApplication.shared.delegate?.window??.rootViewController ?? UIViewController())
564
+ vc.present(
565
+ applePaymentAuthorizationController,
566
+ animated: true,
567
+ completion: nil
568
+ )
569
+ }
570
+ } else {
571
+ resolve(Errors.createError(ErrorType.Failed, "Invalid in-app payment request. Search the iOS logs for `NSUnderlyingError` to get more information."))
572
+ }
573
+ }
574
+
575
+ @objc(dismissPlatformPay:rejecter:)
576
+ func dismissPlatformPay(resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
577
+ let didDismiss = maybeDismissApplePay()
578
+ resolve(didDismiss)
579
+ }
580
+
581
+ @objc(confirmPlatformPay:params:isPaymentIntent:resolver:rejecter:)
582
+ func confirmPlatformPay(
583
+ clientSecret: String?,
584
+ params: NSDictionary,
585
+ isPaymentIntent: Bool,
586
+ resolver resolve: @escaping RCTPromiseResolveBlock,
587
+ rejecter reject: @escaping RCTPromiseRejectBlock
588
+ ) -> Void {
589
+ guard let applePayPatams = params["applePay"] as? NSDictionary else {
590
+ resolve(Errors.createError(ErrorType.Failed, "You must provide the `applePay` parameter."))
512
591
  return
513
592
  }
514
-
515
- self.applePayRequestResolver = resolve
516
- self.applePayRequestRejecter = reject
517
-
518
- let merchantIdentifier = self.merchantIdentifier ?? ""
519
- let paymentRequest = StripeAPI.paymentRequest(withMerchantIdentifier: merchantIdentifier, country: country, currency: currency)
520
-
521
- let requiredShippingAddressFields = params["requiredShippingAddressFields"] as? NSArray ?? NSArray()
522
- let requiredBillingContactFields = params["requiredBillingContactFields"] as? NSArray ?? NSArray()
523
- let shippingMethods = params["shippingMethods"] as? NSArray ?? NSArray()
524
-
525
- paymentRequest.requiredShippingContactFields = Set(requiredShippingAddressFields.map {
526
- Mappers.mapToPKContactField(field: $0 as! String)
527
- })
528
-
529
- paymentRequest.requiredBillingContactFields = Set(requiredBillingContactFields.map {
530
- Mappers.mapToPKContactField(field: $0 as! String)
531
- })
532
-
533
- paymentRequest.shippingMethods = Mappers.mapToShippingMethods(shippingMethods: shippingMethods)
534
-
535
- do {
536
- paymentRequest.paymentSummaryItems = try ApplePayUtils
537
- .buildPaymentSummaryItems(items: summaryItems as? [[String : Any]])
538
- } catch {
539
- resolve(Errors.createError(ErrorType.Failed, error.localizedDescription))
593
+ let (error, paymentRequest) = ApplePayUtils.createPaymentRequest(merchantIdentifier: merchantIdentifier, params: applePayPatams)
594
+ guard let paymentRequest = paymentRequest else {
595
+ resolve(error)
540
596
  return
541
597
  }
542
598
 
599
+ self.applePaySummaryItems = paymentRequest.paymentSummaryItems
600
+ self.applePayShippingMethods = paymentRequest.shippingMethods ?? []
601
+ self.applePayShippingAddressErrors = nil
602
+ self.applePayCouponCodeErrors = nil
603
+ self.confirmApplePayResolver = resolve
604
+ if (isPaymentIntent) {
605
+ self.confirmApplePayPaymentClientSecret = clientSecret
606
+ } else {
607
+ self.confirmApplePaySetupClientSecret = clientSecret
608
+ }
543
609
  if let applePayContext = STPApplePayContext(paymentRequest: paymentRequest, delegate: self) {
544
610
  DispatchQueue.main.async {
545
611
  applePayContext.presentApplePay(completion: nil)
546
612
  }
547
613
  } else {
548
- reject(ErrorType.Failed, "Payment not completed", nil)
614
+ resolve(Errors.createError(ErrorType.Failed, "Payment not completed"))
549
615
  }
550
616
  }
551
-
617
+
552
618
  func configure3dSecure(_ params: NSDictionary) {
553
619
  let threeDSCustomizationSettings = STPPaymentHandler.shared().threeDSCustomizationSettings
554
620
  let uiCustomization = Mappers.mapUICustomization(params)
@@ -1050,13 +1116,17 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
1050
1116
  resolve(Errors.createError(ErrorType.Failed, "You must provide `cardLastFour`"))
1051
1117
  return
1052
1118
  }
1053
- let (canAddCard, status) = PushProvisioningUtils.canAddCardToWallet(last4: last4,
1054
- primaryAccountIdentifier: params["primaryAccountIdentifier"] as? String ?? "",
1055
- testEnv: params["testEnv"] as? Bool ?? false)
1056
- resolve([
1057
- "canAddCard": canAddCard,
1058
- "details": ["status": status?.rawValue],
1059
- ])
1119
+ PushProvisioningUtils.canAddCardToWallet(
1120
+ last4: last4,
1121
+ primaryAccountIdentifier: params["primaryAccountIdentifier"] as? String ?? "",
1122
+ testEnv: params["testEnv"] as? Bool ?? false,
1123
+ hasPairedAppleWatch: params["hasPairedAppleWatch"] as? Bool ?? false)
1124
+ { canAddCard, status in
1125
+ resolve([
1126
+ "canAddCard": canAddCard,
1127
+ "details": ["status": status?.rawValue],
1128
+ ])
1129
+ }
1060
1130
  }
1061
1131
 
1062
1132
  @objc(isCardInWallet:resolver:rejecter:)
@@ -1069,7 +1139,7 @@ class StripeSdk: RCTEventEmitter, STPApplePayContextDelegate, STPBankSelectionVi
1069
1139
  resolve(Errors.createError(ErrorType.Failed, "You must provide `cardLastFour`"))
1070
1140
  return
1071
1141
  }
1072
- resolve(["isInWallet": PushProvisioningUtils.passExistsWith(last4: last4)])
1142
+ resolve(["isInWallet": PushProvisioningUtils.getPassLocation(last4: last4) != nil])
1073
1143
  }
1074
1144
 
1075
1145
  @objc(collectBankAccountToken:resolver:rejecter:)