@stripe/stripe-react-native 0.57.0 → 0.57.2

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 (324) hide show
  1. package/README.md +0 -8
  2. package/android/.idea/AndroidProjectSystem.xml +6 -0
  3. package/android/.idea/caches/deviceStreaming.xml +1029 -0
  4. package/android/.idea/compiler.xml +6 -0
  5. package/android/.idea/gradle.xml +19 -0
  6. package/android/.idea/migrations.xml +10 -0
  7. package/android/.idea/misc.xml +10 -0
  8. package/android/.idea/runConfigurations.xml +17 -0
  9. package/android/.idea/vcs.xml +6 -0
  10. package/android/build.gradle +76 -118
  11. package/android/gradle.properties +1 -1
  12. package/android/local.properties +8 -0
  13. package/android/settings.gradle +2 -0
  14. package/android/spotless.gradle +1 -1
  15. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +20 -17
  16. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +13 -11
  17. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +17 -21
  18. package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherManager.kt +2 -0
  19. package/android/src/main/java/com/reactnativestripesdk/CustomPaymentMethodActivity.kt +2 -0
  20. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +53 -11
  21. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +105 -117
  22. package/android/src/main/java/com/reactnativestripesdk/EventEmitterCompat.kt +4 -8
  23. package/android/src/main/java/com/reactnativestripesdk/FakeOnrampSdkModule.kt +154 -0
  24. package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetManager.kt +13 -15
  25. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +1 -1
  26. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +1 -1
  27. package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +7 -5
  28. package/android/src/main/java/com/reactnativestripesdk/NavigationBarManager.kt +31 -0
  29. package/android/src/main/java/com/reactnativestripesdk/NavigationBarView.kt +120 -0
  30. package/android/src/main/java/com/reactnativestripesdk/PaymentElementConfig.kt +228 -0
  31. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherManager.kt +1 -0
  32. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +3 -0
  33. package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +4 -6
  34. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +73 -30
  35. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +19 -245
  36. package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +53 -17
  37. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +52 -14
  38. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +21 -2
  39. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +4 -4
  40. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +2 -2
  41. package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +15 -35
  42. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +2 -1
  43. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +5 -10
  44. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +90 -77
  45. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/TapAndPayProxy.kt +6 -4
  46. package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +13 -3
  47. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +41 -0
  48. package/android/src/main/java/com/reactnativestripesdk/utils/KeepJsAwakeTask.kt +1 -1
  49. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +92 -44
  50. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerDelegate.java +3 -0
  51. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerInterface.java +2 -0
  52. package/android/src/oldarch/java/com/reactnativestripesdk/NativeOnrampSdkModuleSpec.java +118 -0
  53. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +4 -0
  54. package/android/src/onramp/java/com/reactnativestripesdk/OnrampSdkModule.kt +922 -0
  55. package/android/src/test/java/com/facebook/testutils/shadows/ShadowArguments.kt +29 -0
  56. package/android/src/test/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManagerTest.kt +163 -0
  57. package/android/src/test/java/com/reactnativestripesdk/PaymentElementConfigTest.kt +976 -0
  58. package/android/src/test/java/com/reactnativestripesdk/PaymentSheetAppearanceTest.kt +801 -0
  59. package/android/src/test/java/com/reactnativestripesdk/PaymentSheetManagerTest.kt +523 -0
  60. package/android/src/test/java/com/reactnativestripesdk/addresssheet/AddressSheetViewTest.kt +551 -0
  61. package/android/src/test/java/com/reactnativestripesdk/mappers/MappersTest.kt +567 -0
  62. package/android/src/test/java/com/reactnativestripesdk/mappers/PaymentOptionDisplayDataMapperTest.kt +456 -0
  63. package/android/src/test/java/com/reactnativestripesdk/pushprovisioning/PushProvisioningProxyTest.kt +43 -0
  64. package/android/src/test/resources/robolectric.properties +2 -0
  65. package/ios/AddressSheet/AddressSheetUtils.swift +3 -3
  66. package/ios/AddressSheet/AddressSheetView.swift +25 -25
  67. package/ios/AddressSheet/AddressSheetViewManager.swift +2 -2
  68. package/ios/ApplePayButtonManager.swift +1 -1
  69. package/ios/ApplePayButtonView.swift +9 -10
  70. package/ios/ApplePayUtils.swift +51 -51
  71. package/ios/ApplePayViewController.swift +25 -29
  72. package/ios/AuBECSDebitFormManager.swift +1 -1
  73. package/ios/AuBECSDebitFormView.swift +13 -15
  74. package/ios/CardFieldManager.swift +4 -4
  75. package/ios/CardFieldView.swift +9 -9
  76. package/ios/CardFormManager.swift +3 -3
  77. package/ios/CardFormView.swift +28 -28
  78. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingView.swift +97 -0
  79. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewController.swift +133 -0
  80. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.m +16 -0
  81. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.swift +17 -0
  82. package/ios/CustomerSheet/CustomerSheetUtils.swift +15 -16
  83. package/ios/CustomerSheet/ReactNativeCustomerAdapter.swift +19 -19
  84. package/ios/EmbeddedPaymentElementView.swift +2 -2
  85. package/ios/Errors.swift +22 -23
  86. package/ios/FinancialConnections.swift +37 -37
  87. package/ios/Mappers.swift +210 -71
  88. package/ios/NavigationBarManager.m +13 -0
  89. package/ios/NavigationBarManager.swift +17 -0
  90. package/ios/NavigationBarView.swift +65 -0
  91. package/ios/NewArch/NavigationBarComponentView.h +10 -0
  92. package/ios/NewArch/NavigationBarComponentView.mm +86 -0
  93. package/ios/OldArch/StripeSdkEventEmitterCompat.h +1 -0
  94. package/ios/OldArch/StripeSdkEventEmitterCompat.m +7 -1
  95. package/ios/PaymentMethodFactory.swift +24 -24
  96. package/ios/PaymentOptionDisplayData+ReactNative.swift +4 -4
  97. package/ios/PaymentPassFinder.swift +9 -10
  98. package/ios/PaymentSheetAppearance.swift +137 -138
  99. package/ios/PushProvisioning/AddToWalletButtonManager.swift +2 -2
  100. package/ios/PushProvisioning/AddToWalletButtonView.swift +15 -17
  101. package/ios/PushProvisioning/PushProvisioningUtils.swift +11 -11
  102. package/ios/StripeContainerManager.swift +1 -1
  103. package/ios/StripeContainerView.swift +3 -3
  104. package/ios/StripeOnrampSdk.h +17 -0
  105. package/ios/StripeOnrampSdk.mm +158 -0
  106. package/ios/StripeSdk.mm +8 -0
  107. package/ios/StripeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  108. package/ios/StripeSdk.xcodeproj/project.xcworkspace/xcuserdata/tianzhao.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  109. package/ios/StripeSdk.xcodeproj/xcuserdata/tianzhao.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  110. package/ios/StripeSdkEmitter.swift +4 -0
  111. package/ios/StripeSdkImpl+CustomerSheet.swift +30 -25
  112. package/ios/StripeSdkImpl+Embedded.swift +11 -9
  113. package/ios/StripeSdkImpl+PaymentSheet.swift +36 -34
  114. package/ios/StripeSdkImpl.swift +913 -185
  115. package/ios/UIColorExtension.swift +72 -0
  116. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  117. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  118. package/lib/commonjs/components/AddressSheet.js +1 -1
  119. package/lib/commonjs/components/AddressSheet.js.map +1 -1
  120. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  121. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  122. package/lib/commonjs/components/CardField.js +1 -1
  123. package/lib/commonjs/components/CardField.js.map +1 -1
  124. package/lib/commonjs/components/CardForm.js +1 -1
  125. package/lib/commonjs/components/CardForm.js.map +1 -1
  126. package/lib/commonjs/components/PlatformPayButton.js +1 -1
  127. package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
  128. package/lib/commonjs/components/StripeContainer.js +1 -1
  129. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  130. package/lib/commonjs/components/StripeProvider.js +1 -1
  131. package/lib/commonjs/components/StripeProvider.js.map +1 -1
  132. package/lib/commonjs/connect/Components.js +2 -0
  133. package/lib/commonjs/connect/Components.js.map +1 -0
  134. package/lib/commonjs/connect/ConnectComponentsProvider.js +2 -0
  135. package/lib/commonjs/connect/ConnectComponentsProvider.js.map +1 -0
  136. package/lib/commonjs/connect/EmbeddedComponent.js +19 -0
  137. package/lib/commonjs/connect/EmbeddedComponent.js.map +1 -0
  138. package/lib/commonjs/connect/ModalCloseButton.js +2 -0
  139. package/lib/commonjs/connect/ModalCloseButton.js.map +1 -0
  140. package/lib/commonjs/connect/NavigationBar.js +2 -0
  141. package/lib/commonjs/connect/NavigationBar.js.map +1 -0
  142. package/lib/commonjs/connect/connectTypes.js +2 -0
  143. package/lib/commonjs/connect/connectTypes.js.map +1 -0
  144. package/lib/commonjs/events.js +1 -1
  145. package/lib/commonjs/events.js.map +1 -1
  146. package/lib/commonjs/helpers.js +1 -1
  147. package/lib/commonjs/helpers.js.map +1 -1
  148. package/lib/commonjs/hooks/useOnramp.js +2 -0
  149. package/lib/commonjs/hooks/useOnramp.js.map +1 -0
  150. package/lib/commonjs/index.js +1 -1
  151. package/lib/commonjs/index.js.map +1 -1
  152. package/lib/commonjs/plugin/withStripe.js +1 -1
  153. package/lib/commonjs/plugin/withStripe.js.map +1 -1
  154. package/lib/commonjs/specs/NativeAddToWalletButton.js +1 -1
  155. package/lib/commonjs/specs/NativeAddToWalletButton.js.map +1 -1
  156. package/lib/commonjs/specs/NativeAddressSheet.js +1 -1
  157. package/lib/commonjs/specs/NativeAddressSheet.js.map +1 -1
  158. package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
  159. package/lib/commonjs/specs/NativeApplePayButton.js.map +1 -1
  160. package/lib/commonjs/specs/NativeAuBECSDebitForm.js +1 -1
  161. package/lib/commonjs/specs/NativeAuBECSDebitForm.js.map +1 -1
  162. package/lib/commonjs/specs/NativeCardField.js +1 -1
  163. package/lib/commonjs/specs/NativeCardField.js.map +1 -1
  164. package/lib/commonjs/specs/NativeCardForm.js +1 -1
  165. package/lib/commonjs/specs/NativeCardForm.js.map +1 -1
  166. package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js +2 -0
  167. package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js.map +1 -0
  168. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +1 -1
  169. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  170. package/lib/commonjs/specs/NativeGooglePayButton.js +1 -1
  171. package/lib/commonjs/specs/NativeGooglePayButton.js.map +1 -1
  172. package/lib/commonjs/specs/NativeNavigationBar.js +2 -0
  173. package/lib/commonjs/specs/NativeNavigationBar.js.map +1 -0
  174. package/lib/commonjs/specs/NativeOnrampSdkModule.js +2 -0
  175. package/lib/commonjs/specs/NativeOnrampSdkModule.js.map +1 -0
  176. package/lib/commonjs/specs/NativeStripeContainer.js +1 -1
  177. package/lib/commonjs/specs/NativeStripeContainer.js.map +1 -1
  178. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
  179. package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
  180. package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
  181. package/lib/commonjs/types/Errors.js +1 -1
  182. package/lib/commonjs/types/Errors.js.map +1 -1
  183. package/lib/commonjs/types/Onramp.js +2 -0
  184. package/lib/commonjs/types/Onramp.js.map +1 -0
  185. package/lib/commonjs/types/PaymentSheet.js.map +1 -1
  186. package/lib/commonjs/types/index.js +1 -1
  187. package/lib/commonjs/types/index.js.map +1 -1
  188. package/lib/module/components/AddToWalletButton.js +1 -1
  189. package/lib/module/components/AddToWalletButton.js.map +1 -1
  190. package/lib/module/components/AddressSheet.js +1 -1
  191. package/lib/module/components/AddressSheet.js.map +1 -1
  192. package/lib/module/components/AuBECSDebitForm.js +1 -1
  193. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  194. package/lib/module/components/CardField.js +1 -1
  195. package/lib/module/components/CardField.js.map +1 -1
  196. package/lib/module/components/CardForm.js +1 -1
  197. package/lib/module/components/CardForm.js.map +1 -1
  198. package/lib/module/components/PlatformPayButton.js +1 -1
  199. package/lib/module/components/PlatformPayButton.js.map +1 -1
  200. package/lib/module/components/StripeContainer.js +1 -1
  201. package/lib/module/components/StripeContainer.js.map +1 -1
  202. package/lib/module/components/StripeProvider.js +1 -1
  203. package/lib/module/components/StripeProvider.js.map +1 -1
  204. package/lib/module/connect/Components.js +2 -0
  205. package/lib/module/connect/Components.js.map +1 -0
  206. package/lib/module/connect/ConnectComponentsProvider.js +2 -0
  207. package/lib/module/connect/ConnectComponentsProvider.js.map +1 -0
  208. package/lib/module/connect/EmbeddedComponent.js +19 -0
  209. package/lib/module/connect/EmbeddedComponent.js.map +1 -0
  210. package/lib/module/connect/ModalCloseButton.js +2 -0
  211. package/lib/module/connect/ModalCloseButton.js.map +1 -0
  212. package/lib/module/connect/NavigationBar.js +2 -0
  213. package/lib/module/connect/NavigationBar.js.map +1 -0
  214. package/lib/module/connect/connectTypes.js +2 -0
  215. package/lib/module/connect/connectTypes.js.map +1 -0
  216. package/lib/module/events.js +1 -1
  217. package/lib/module/events.js.map +1 -1
  218. package/lib/module/helpers.js +1 -1
  219. package/lib/module/helpers.js.map +1 -1
  220. package/lib/module/hooks/useOnramp.js +2 -0
  221. package/lib/module/hooks/useOnramp.js.map +1 -0
  222. package/lib/module/index.js +1 -1
  223. package/lib/module/index.js.map +1 -1
  224. package/lib/module/plugin/withStripe.js +1 -1
  225. package/lib/module/plugin/withStripe.js.map +1 -1
  226. package/lib/module/specs/NativeAddToWalletButton.js +1 -1
  227. package/lib/module/specs/NativeAddToWalletButton.js.map +1 -1
  228. package/lib/module/specs/NativeAddressSheet.js +1 -1
  229. package/lib/module/specs/NativeAddressSheet.js.map +1 -1
  230. package/lib/module/specs/NativeApplePayButton.js +1 -1
  231. package/lib/module/specs/NativeApplePayButton.js.map +1 -1
  232. package/lib/module/specs/NativeAuBECSDebitForm.js +1 -1
  233. package/lib/module/specs/NativeAuBECSDebitForm.js.map +1 -1
  234. package/lib/module/specs/NativeCardField.js +1 -1
  235. package/lib/module/specs/NativeCardField.js.map +1 -1
  236. package/lib/module/specs/NativeCardForm.js +1 -1
  237. package/lib/module/specs/NativeCardForm.js.map +1 -1
  238. package/lib/module/specs/NativeConnectAccountOnboardingView.js +2 -0
  239. package/lib/module/specs/NativeConnectAccountOnboardingView.js.map +1 -0
  240. package/lib/module/specs/NativeEmbeddedPaymentElement.js +1 -1
  241. package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  242. package/lib/module/specs/NativeGooglePayButton.js +1 -1
  243. package/lib/module/specs/NativeGooglePayButton.js.map +1 -1
  244. package/lib/module/specs/NativeNavigationBar.js +2 -0
  245. package/lib/module/specs/NativeNavigationBar.js.map +1 -0
  246. package/lib/module/specs/NativeOnrampSdkModule.js +2 -0
  247. package/lib/module/specs/NativeOnrampSdkModule.js.map +1 -0
  248. package/lib/module/specs/NativeStripeContainer.js +1 -1
  249. package/lib/module/specs/NativeStripeContainer.js.map +1 -1
  250. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
  251. package/lib/module/types/EmbeddedPaymentElement.js +1 -1
  252. package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
  253. package/lib/module/types/Errors.js +1 -1
  254. package/lib/module/types/Errors.js.map +1 -1
  255. package/lib/module/types/Onramp.js +2 -0
  256. package/lib/module/types/Onramp.js.map +1 -0
  257. package/lib/module/types/PaymentSheet.js.map +1 -1
  258. package/lib/module/types/index.js +1 -1
  259. package/lib/module/types/index.js.map +1 -1
  260. package/lib/typescript/src/components/StripeProvider.d.ts.map +1 -1
  261. package/lib/typescript/src/connect/Components.d.ts +23 -0
  262. package/lib/typescript/src/connect/Components.d.ts.map +1 -0
  263. package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts +22 -0
  264. package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts.map +1 -0
  265. package/lib/typescript/src/connect/EmbeddedComponent.d.ts +18 -0
  266. package/lib/typescript/src/connect/EmbeddedComponent.d.ts.map +1 -0
  267. package/lib/typescript/src/connect/ModalCloseButton.d.ts +7 -0
  268. package/lib/typescript/src/connect/ModalCloseButton.d.ts.map +1 -0
  269. package/lib/typescript/src/connect/NavigationBar.d.ts +8 -0
  270. package/lib/typescript/src/connect/NavigationBar.d.ts.map +1 -0
  271. package/lib/typescript/src/connect/connectTypes.d.ts +464 -0
  272. package/lib/typescript/src/connect/connectTypes.d.ts.map +1 -0
  273. package/lib/typescript/src/events.d.ts +4 -0
  274. package/lib/typescript/src/events.d.ts.map +1 -1
  275. package/lib/typescript/src/functions.d.ts.map +1 -1
  276. package/lib/typescript/src/helpers.d.ts.map +1 -1
  277. package/lib/typescript/src/hooks/useOnramp.d.ts +158 -0
  278. package/lib/typescript/src/hooks/useOnramp.d.ts.map +1 -0
  279. package/lib/typescript/src/index.d.ts +4 -0
  280. package/lib/typescript/src/index.d.ts.map +1 -1
  281. package/lib/typescript/src/plugin/withStripe.d.ts +15 -0
  282. package/lib/typescript/src/plugin/withStripe.d.ts.map +1 -1
  283. package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts +14 -0
  284. package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts.map +1 -0
  285. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts +1 -0
  286. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts.map +1 -1
  287. package/lib/typescript/src/specs/NativeNavigationBar.d.ts +11 -0
  288. package/lib/typescript/src/specs/NativeNavigationBar.d.ts.map +1 -0
  289. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts +28 -0
  290. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts.map +1 -0
  291. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -0
  292. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
  293. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -1
  294. package/lib/typescript/src/types/Errors.d.ts +5 -0
  295. package/lib/typescript/src/types/Errors.d.ts.map +1 -1
  296. package/lib/typescript/src/types/Onramp.d.ts +275 -0
  297. package/lib/typescript/src/types/Onramp.d.ts.map +1 -0
  298. package/lib/typescript/src/types/PaymentSheet.d.ts +7 -0
  299. package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -1
  300. package/lib/typescript/src/types/index.d.ts +7 -1
  301. package/lib/typescript/src/types/index.d.ts.map +1 -1
  302. package/package.json +25 -14
  303. package/src/components/StripeProvider.tsx +5 -0
  304. package/src/connect/Components.tsx +279 -0
  305. package/src/connect/ConnectComponentsProvider.tsx +93 -0
  306. package/src/connect/EmbeddedComponent.tsx +407 -0
  307. package/src/connect/ModalCloseButton.tsx +44 -0
  308. package/src/connect/NavigationBar.tsx +29 -0
  309. package/src/connect/connectTypes.ts +626 -0
  310. package/src/events.ts +23 -0
  311. package/src/hooks/useOnramp.tsx +334 -0
  312. package/src/index.tsx +13 -0
  313. package/src/plugin/withStripe.ts +104 -7
  314. package/src/specs/NativeConnectAccountOnboardingView.ts +19 -0
  315. package/src/specs/NativeEmbeddedPaymentElement.ts +5 -1
  316. package/src/specs/NativeNavigationBar.ts +16 -0
  317. package/src/specs/NativeOnrampSdkModule.ts +47 -0
  318. package/src/specs/NativeStripeSdkModule.ts +5 -0
  319. package/src/types/EmbeddedPaymentElement.tsx +24 -3
  320. package/src/types/Errors.ts +6 -0
  321. package/src/types/Onramp.ts +317 -0
  322. package/src/types/PaymentSheet.ts +7 -0
  323. package/src/types/index.ts +8 -0
  324. package/stripe-react-native.podspec +20 -7
@@ -0,0 +1,154 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import com.facebook.react.bridge.Promise
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReactMethod
6
+ import com.facebook.react.bridge.ReadableMap
7
+ import com.facebook.react.module.annotations.ReactModule
8
+ import com.reactnativestripesdk.utils.createFailedError
9
+
10
+ @ReactModule(name = NativeOnrampSdkModuleSpec.NAME)
11
+ class FakeOnrampSdkModule(
12
+ reactContext: ReactApplicationContext,
13
+ ) : NativeOnrampSdkModuleSpec(reactContext) {
14
+ @ReactMethod
15
+ override fun initialise(
16
+ params: ReadableMap?,
17
+ promise: Promise?,
18
+ ) {
19
+ promise?.resolve(null)
20
+ }
21
+
22
+ @ReactMethod
23
+ override fun configureOnramp(
24
+ config: ReadableMap?,
25
+ promise: Promise?,
26
+ ) {
27
+ promise?.resolveNotImplemented()
28
+ }
29
+
30
+ @ReactMethod
31
+ override fun hasLinkAccount(
32
+ email: String?,
33
+ promise: Promise?,
34
+ ) {
35
+ promise?.resolveNotImplemented()
36
+ }
37
+
38
+ @ReactMethod
39
+ override fun registerLinkUser(
40
+ info: ReadableMap?,
41
+ promise: Promise?,
42
+ ) {
43
+ promise?.resolveNotImplemented()
44
+ }
45
+
46
+ @ReactMethod
47
+ override fun registerWalletAddress(
48
+ walletAddress: String?,
49
+ network: String?,
50
+ promise: Promise?,
51
+ ) {
52
+ promise?.resolveNotImplemented()
53
+ }
54
+
55
+ @ReactMethod
56
+ override fun attachKycInfo(
57
+ kycInfo: ReadableMap?,
58
+ promise: Promise?,
59
+ ) {
60
+ promise?.resolveNotImplemented()
61
+ }
62
+
63
+ @ReactMethod
64
+ override fun updatePhoneNumber(
65
+ phone: String?,
66
+ promise: Promise?,
67
+ ) {
68
+ promise?.resolveNotImplemented()
69
+ }
70
+
71
+ @ReactMethod
72
+ override fun authenticateUser(promise: Promise?) {
73
+ promise?.resolveNotImplemented()
74
+ }
75
+
76
+ @ReactMethod
77
+ override fun verifyIdentity(promise: Promise?) {
78
+ promise?.resolveNotImplemented()
79
+ }
80
+
81
+ @ReactMethod
82
+ override fun presentKycInfoVerification(
83
+ updatedAddress: ReadableMap?,
84
+ promise: Promise,
85
+ ) {
86
+ promise?.resolveNotImplemented()
87
+ }
88
+
89
+ @ReactMethod
90
+ override fun collectPaymentMethod(
91
+ paymentMethod: String?,
92
+ platformPayParams: ReadableMap?,
93
+ promise: Promise?,
94
+ ) {
95
+ promise?.resolveNotImplemented()
96
+ }
97
+
98
+ @ReactMethod
99
+ override fun provideCheckoutClientSecret(clientSecret: String?) {
100
+ // No-op
101
+ }
102
+
103
+ @ReactMethod
104
+ override fun createCryptoPaymentToken(promise: Promise?) {
105
+ promise?.resolveNotImplemented()
106
+ }
107
+
108
+ @ReactMethod
109
+ override fun performCheckout(
110
+ onrampSessionId: String?,
111
+ promise: Promise?,
112
+ ) {
113
+ promise?.resolveNotImplemented()
114
+ }
115
+
116
+ @ReactMethod
117
+ override fun onrampAuthorize(
118
+ linkAuthIntentId: String?,
119
+ promise: Promise?,
120
+ ) {
121
+ promise?.resolveNotImplemented()
122
+ }
123
+
124
+ @ReactMethod
125
+ override fun logout(promise: Promise?) {
126
+ promise?.resolveNotImplemented()
127
+ }
128
+
129
+ @ReactMethod
130
+ override fun getCryptoTokenDisplayData(
131
+ token: ReadableMap,
132
+ promise: Promise,
133
+ ) {
134
+ promise?.resolveNotImplemented()
135
+ }
136
+
137
+ @ReactMethod
138
+ override fun authenticateUserWithToken(
139
+ token: String,
140
+ promise: Promise,
141
+ ) {
142
+ promise.resolveNotImplemented()
143
+ }
144
+
145
+ private fun Promise.resolveNotImplemented() {
146
+ this.resolve(
147
+ createFailedError(
148
+ NotImplementedError(
149
+ "To enable Onramp, add 'StripeSdk_includeOnramp=true' to gradle.properties.",
150
+ ),
151
+ ),
152
+ )
153
+ }
154
+ }
@@ -6,7 +6,6 @@ import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.bridge.ReadableArray
7
7
  import com.facebook.react.bridge.WritableArray
8
8
  import com.facebook.react.bridge.WritableMap
9
- import com.facebook.react.bridge.WritableNativeMap
10
9
  import com.reactnativestripesdk.utils.ErrorType
11
10
  import com.reactnativestripesdk.utils.StripeUIManager
12
11
  import com.reactnativestripesdk.utils.createError
@@ -105,7 +104,7 @@ class FinancialConnectionsSheetManager(
105
104
 
106
105
  is FinancialConnectionsSheetResult.Completed -> {
107
106
  promise?.resolve(
108
- WritableNativeMap().also {
107
+ Arguments.createMap().also {
109
108
  it.putMap("session", mapFromSession(result.financialConnectionsSession))
110
109
  },
111
110
  )
@@ -115,13 +114,13 @@ class FinancialConnectionsSheetManager(
115
114
 
116
115
  companion object {
117
116
  private fun createTokenResult(result: FinancialConnectionsSheetForTokenResult.Completed): WritableMap =
118
- WritableNativeMap().also {
117
+ Arguments.createMap().also {
119
118
  it.putMap("session", mapFromSession(result.financialConnectionsSession))
120
119
  it.putMap("token", mapFromToken(result.token))
121
120
  }
122
121
 
123
122
  private fun mapFromSession(financialConnectionsSession: FinancialConnectionsSession): WritableMap {
124
- val session = WritableNativeMap()
123
+ val session = Arguments.createMap()
125
124
  session.putString("id", financialConnectionsSession.id)
126
125
  session.putString("clientSecret", financialConnectionsSession.clientSecret)
127
126
  session.putBoolean("livemode", financialConnectionsSession.livemode)
@@ -132,7 +131,7 @@ class FinancialConnectionsSheetManager(
132
131
  private fun mapFromAccountsList(accounts: FinancialConnectionsAccountList): ReadableArray {
133
132
  val results: WritableArray = Arguments.createArray()
134
133
  for (account in accounts.data) {
135
- val map = WritableNativeMap()
134
+ val map = Arguments.createMap()
136
135
  map.putString("id", account.id)
137
136
  map.putBoolean("livemode", account.livemode)
138
137
  map.putString("displayName", account.displayName)
@@ -166,10 +165,10 @@ class FinancialConnectionsSheetManager(
166
165
  if (balance == null) {
167
166
  return null
168
167
  }
169
- val map = WritableNativeMap()
168
+ val map = Arguments.createMap()
170
169
  map.putDouble("asOf", balance.asOf * 1000.0)
171
170
  map.putString("type", mapFromBalanceType(balance.type))
172
- WritableNativeMap().also {
171
+ Arguments.createMap().also {
173
172
  for (entry in balance.current.entries) {
174
173
  it.putInt(entry.key, entry.value)
175
174
  }
@@ -181,9 +180,9 @@ class FinancialConnectionsSheetManager(
181
180
  return map
182
181
  }
183
182
 
184
- private fun mapFromCashAvailable(balance: Balance): WritableNativeMap =
185
- WritableNativeMap().also { cashMap ->
186
- WritableNativeMap().also { availableMap ->
183
+ private fun mapFromCashAvailable(balance: Balance): WritableMap =
184
+ Arguments.createMap().also { cashMap ->
185
+ Arguments.createMap().also { availableMap ->
187
186
  balance.cash?.available?.entries?.let { entries ->
188
187
  for (entry in entries) {
189
188
  availableMap.putInt(entry.key, entry.value)
@@ -193,9 +192,9 @@ class FinancialConnectionsSheetManager(
193
192
  }
194
193
  }
195
194
 
196
- private fun mapFromCreditUsed(balance: Balance): WritableNativeMap =
197
- WritableNativeMap().also { creditMap ->
198
- WritableNativeMap().also { usedMap ->
195
+ private fun mapFromCreditUsed(balance: Balance): WritableMap =
196
+ Arguments.createMap().also { creditMap ->
197
+ Arguments.createMap().also { usedMap ->
199
198
  balance.credit?.used?.entries?.let { entries ->
200
199
  for (entry in entries) {
201
200
  usedMap.putInt(entry.key, entry.value)
@@ -209,7 +208,7 @@ class FinancialConnectionsSheetManager(
209
208
  if (balanceRefresh == null) {
210
209
  return null
211
210
  }
212
- val map = WritableNativeMap()
211
+ val map = Arguments.createMap()
213
212
  map.putString("status", mapFromBalanceRefreshStatus(balanceRefresh.status))
214
213
  map.putDouble("lastAttemptedAt", balanceRefresh.lastAttemptedAt * 1000.0)
215
214
  return map
@@ -251,7 +250,6 @@ class FinancialConnectionsSheetManager(
251
250
  FinancialConnectionsAccount.Permissions.TRANSACTIONS -> "transactions"
252
251
  FinancialConnectionsAccount.Permissions.ACCOUNT_NUMBERS -> "accountNumbers"
253
252
  FinancialConnectionsAccount.Permissions.UNKNOWN -> "unparsable"
254
- FinancialConnectionsAccount.Permissions.ACCOUNT_NUMBERS -> "accountNumbers"
255
253
  }
256
254
 
257
255
  private fun mapFromSupportedPaymentMethodTypes(type: FinancialConnectionsAccount.SupportedPaymentMethodTypes): String =
@@ -108,7 +108,7 @@ class GooglePayButtonView(
108
108
  MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
109
109
  MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
110
110
  )
111
- button?.layout(left, top, right, bottom)
111
+ layout(left, top, right, bottom)
112
112
  }
113
113
 
114
114
  fun setType(type: Int) {
@@ -30,7 +30,7 @@ class GooglePayLauncherManager(
30
30
  private var configuration =
31
31
  GooglePayLauncher.Config(
32
32
  environment =
33
- if (googlePayParams.getBoolean("testEnv")) {
33
+ if (googlePayParams.getBooleanOr("testEnv", false)) {
34
34
  GooglePayEnvironment.Test
35
35
  } else {
36
36
  GooglePayEnvironment.Production
@@ -3,9 +3,9 @@ package com.reactnativestripesdk
3
3
  import android.app.Activity
4
4
  import android.content.Intent
5
5
  import androidx.fragment.app.FragmentActivity
6
+ import com.facebook.react.bridge.Arguments
6
7
  import com.facebook.react.bridge.Promise
7
8
  import com.facebook.react.bridge.ReadableMap
8
- import com.facebook.react.bridge.WritableNativeMap
9
9
  import com.google.android.gms.tasks.Task
10
10
  import com.google.android.gms.wallet.AutoResolveHelper
11
11
  import com.google.android.gms.wallet.PaymentData
@@ -15,6 +15,7 @@ import com.google.android.gms.wallet.WalletConstants
15
15
  import com.reactnativestripesdk.utils.ErrorType
16
16
  import com.reactnativestripesdk.utils.createError
17
17
  import com.reactnativestripesdk.utils.getBooleanOr
18
+ import com.reactnativestripesdk.utils.getIntOr
18
19
  import com.reactnativestripesdk.utils.mapFromPaymentMethod
19
20
  import com.reactnativestripesdk.utils.mapFromShippingContact
20
21
  import com.reactnativestripesdk.utils.mapFromToken
@@ -58,7 +59,7 @@ class GooglePayRequestHelper {
58
59
  Wallet.WalletOptions
59
60
  .Builder()
60
61
  .setEnvironment(
61
- if (googlePayParams.getBoolean("testEnv")) {
62
+ if (googlePayParams.getBooleanOr("testEnv", false)) {
62
63
  WalletConstants.ENVIRONMENT_TEST
63
64
  } else {
64
65
  WalletConstants.ENVIRONMENT_PRODUCTION
@@ -107,7 +108,7 @@ class GooglePayRequestHelper {
107
108
  private fun buildTransactionInfo(params: ReadableMap): GooglePayJsonFactory.TransactionInfo {
108
109
  val countryCode = params.getString("merchantCountryCode").orEmpty()
109
110
  val currencyCode = params.getString("currencyCode") ?: "USD"
110
- val amount = params.getInt("amount")
111
+ val amount = params.getIntOr("amount", 0)
111
112
  val label = params.getString("label")
112
113
 
113
114
  return GooglePayJsonFactory.TransactionInfo(
@@ -124,6 +125,7 @@ class GooglePayRequestHelper {
124
125
  request: Task<PaymentData>,
125
126
  activity: FragmentActivity,
126
127
  ) {
128
+ @Suppress("DEPRECATION")
127
129
  AutoResolveHelper.resolveTask(request, activity, LOAD_PAYMENT_DATA_REQUEST_CODE)
128
130
  }
129
131
 
@@ -165,7 +167,7 @@ class GooglePayRequestHelper {
165
167
  promise: Promise,
166
168
  ) {
167
169
  val paymentInformation = JSONObject(paymentData.toJson())
168
- val promiseResult = WritableNativeMap()
170
+ val promiseResult = Arguments.createMap()
169
171
  stripe.createPaymentMethod(
170
172
  PaymentMethodCreateParams.createFromGooglePay(paymentInformation),
171
173
  callback =
@@ -193,7 +195,7 @@ class GooglePayRequestHelper {
193
195
  ) {
194
196
  val paymentInformation = JSONObject(paymentData.toJson())
195
197
  val googlePayResult = GooglePayResult.fromJson(paymentInformation)
196
- val promiseResult = WritableNativeMap()
198
+ val promiseResult = Arguments.createMap()
197
199
  googlePayResult.token?.let {
198
200
  promiseResult.putMap("token", mapFromToken(it))
199
201
  if (googlePayResult.shippingInformation != null) {
@@ -0,0 +1,31 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import com.facebook.react.module.annotations.ReactModule
4
+ import com.facebook.react.uimanager.SimpleViewManager
5
+ import com.facebook.react.uimanager.ThemedReactContext
6
+ import com.facebook.react.uimanager.annotations.ReactProp
7
+
8
+ @ReactModule(name = NavigationBarManager.REACT_CLASS)
9
+ class NavigationBarManager : SimpleViewManager<NavigationBarView>() {
10
+ override fun getName() = REACT_CLASS
11
+
12
+ override fun getExportedCustomDirectEventTypeConstants() =
13
+ mutableMapOf(
14
+ EVENT_ON_CLOSE_BUTTON_PRESS to mutableMapOf("registrationName" to EVENT_ON_CLOSE_BUTTON_PRESS),
15
+ )
16
+
17
+ @ReactProp(name = "title")
18
+ fun setTitle(
19
+ view: NavigationBarView,
20
+ title: String?,
21
+ ) {
22
+ view.setTitle(title)
23
+ }
24
+
25
+ override fun createViewInstance(reactContext: ThemedReactContext): NavigationBarView = NavigationBarView(reactContext)
26
+
27
+ companion object {
28
+ const val REACT_CLASS = "NavigationBar"
29
+ private const val EVENT_ON_CLOSE_BUTTON_PRESS = "onCloseButtonPress"
30
+ }
31
+ }
@@ -0,0 +1,120 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.graphics.Color
5
+ import android.view.Gravity
6
+ import android.widget.FrameLayout
7
+ import android.widget.ImageButton
8
+ import android.widget.TextView
9
+ import androidx.appcompat.widget.Toolbar
10
+ import com.facebook.react.bridge.Arguments
11
+ import com.facebook.react.uimanager.ThemedReactContext
12
+ import com.facebook.react.uimanager.UIManagerHelper
13
+ import com.facebook.react.uimanager.events.Event
14
+
15
+ @SuppressLint("ViewConstructor")
16
+ class NavigationBarView(
17
+ context: ThemedReactContext,
18
+ ) : FrameLayout(context) {
19
+ private val toolbar: Toolbar
20
+ private val titleTextView: TextView
21
+ private var titleText: String? = null
22
+
23
+ init {
24
+ // Create Toolbar
25
+ toolbar =
26
+ Toolbar(context).apply {
27
+ layoutParams =
28
+ LayoutParams(
29
+ LayoutParams.MATCH_PARENT,
30
+ LayoutParams.WRAP_CONTENT,
31
+ )
32
+ setBackgroundColor(Color.WHITE)
33
+ elevation = 4f
34
+ }
35
+
36
+ // Create title TextView
37
+ titleTextView =
38
+ TextView(context).apply {
39
+ textSize = 17f
40
+ setTextColor(Color.BLACK)
41
+ gravity = Gravity.CENTER
42
+ }
43
+
44
+ // Add title to toolbar
45
+ val titleParams =
46
+ Toolbar
47
+ .LayoutParams(
48
+ Toolbar.LayoutParams.WRAP_CONTENT,
49
+ Toolbar.LayoutParams.WRAP_CONTENT,
50
+ ).apply {
51
+ gravity = Gravity.CENTER
52
+ }
53
+ toolbar.addView(titleTextView, titleParams)
54
+
55
+ // Create close button
56
+ val closeButton =
57
+ ImageButton(context).apply {
58
+ setImageDrawable(
59
+ context.resources.getDrawable(
60
+ android.R.drawable.ic_menu_close_clear_cancel,
61
+ null,
62
+ ),
63
+ )
64
+ setBackgroundColor(Color.TRANSPARENT)
65
+ setOnClickListener {
66
+ dispatchCloseButtonPress()
67
+ }
68
+ }
69
+
70
+ // Add close button to toolbar
71
+ val buttonParams =
72
+ Toolbar
73
+ .LayoutParams(
74
+ Toolbar.LayoutParams.WRAP_CONTENT,
75
+ Toolbar.LayoutParams.WRAP_CONTENT,
76
+ ).apply {
77
+ gravity = Gravity.END or Gravity.CENTER_VERTICAL
78
+ marginEnd = 16
79
+ }
80
+ toolbar.addView(closeButton, buttonParams)
81
+
82
+ // Add toolbar to this view
83
+ addView(toolbar)
84
+ }
85
+
86
+ fun setTitle(title: String?) {
87
+ titleText = title
88
+ titleTextView.text = title
89
+ }
90
+
91
+ private fun dispatchCloseButtonPress() {
92
+ val reactContext = context as ThemedReactContext
93
+ val event =
94
+ CloseButtonPressEvent(
95
+ UIManagerHelper.getSurfaceId(reactContext),
96
+ id,
97
+ )
98
+ UIManagerHelper.getEventDispatcherForReactTag(reactContext, id)?.dispatchEvent(event)
99
+ }
100
+
101
+ override fun onMeasure(
102
+ widthMeasureSpec: Int,
103
+ heightMeasureSpec: Int,
104
+ ) {
105
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec)
106
+ // Set a fixed height for the navigation bar
107
+ val desiredHeight = (56 * resources.displayMetrics.density).toInt()
108
+ val newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(desiredHeight, MeasureSpec.EXACTLY)
109
+ super.onMeasure(widthMeasureSpec, newHeightMeasureSpec)
110
+ }
111
+
112
+ private class CloseButtonPressEvent(
113
+ surfaceId: Int,
114
+ viewId: Int,
115
+ ) : Event<CloseButtonPressEvent>(surfaceId, viewId) {
116
+ override fun getEventName() = "onCloseButtonPress"
117
+
118
+ override fun getEventData() = Arguments.createMap()
119
+ }
120
+ }