@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,567 @@
1
+ package com.reactnativestripesdk.mappers
2
+
3
+ import android.annotation.SuppressLint
4
+ import com.facebook.react.bridge.WritableMap
5
+ import com.reactnativestripesdk.utils.createCanAddCardResult
6
+ import com.reactnativestripesdk.utils.mapToAddress
7
+ import com.reactnativestripesdk.utils.mapToBillingDetails
8
+ import com.reactnativestripesdk.utils.mapToPreferredNetworks
9
+ import com.reactnativestripesdk.utils.parseCustomPaymentMethods
10
+ import com.reactnativestripesdk.utils.readableArrayOf
11
+ import com.reactnativestripesdk.utils.readableMapOf
12
+ import com.stripe.android.model.CardBrand
13
+ import org.junit.Assert
14
+ import org.junit.Assert.assertEquals
15
+ import org.junit.Assert.assertFalse
16
+ import org.junit.Assert.assertNotNull
17
+ import org.junit.Assert.assertNull
18
+ import org.junit.Assert.assertTrue
19
+ import org.junit.Test
20
+ import org.junit.runner.RunWith
21
+ import org.robolectric.RobolectricTestRunner
22
+
23
+ @SuppressLint("RestrictedApi")
24
+ @RunWith(RobolectricTestRunner::class)
25
+ class MappersTest {
26
+ @Test
27
+ fun createCanAddCardResult_NoStatus() {
28
+ val result =
29
+ createCanAddCardResult(
30
+ true,
31
+ null,
32
+ null,
33
+ )
34
+ Assert.assertNotNull(result.getMap("details"))
35
+ Assert.assertNull(result.getMap("details")?.getString("status"))
36
+ Assert.assertNull(result.getMap("details")?.getMap("token"))
37
+ Assert.assertTrue(result.getBoolean("canAddCard"))
38
+ }
39
+
40
+ @Test
41
+ fun createCanAddCardResult_WithToken() {
42
+ val tokenMap = readableMapOf("key" to "value") as WritableMap
43
+ val result =
44
+ createCanAddCardResult(
45
+ true,
46
+ "CARD_ALREADY_EXISTS",
47
+ tokenMap,
48
+ )
49
+ Assert.assertTrue(result.getBoolean("canAddCard"))
50
+ val details = result.getMap("details")
51
+ Assert.assertEquals(details?.getString("status"), "CARD_ALREADY_EXISTS")
52
+ Assert.assertEquals(details?.getMap("token")?.getString("key"), "value")
53
+ }
54
+
55
+ @Test
56
+ fun createCanAddCardResult_UnsupportedDevice() {
57
+ val result =
58
+ createCanAddCardResult(
59
+ false,
60
+ "UNSUPPORTED_DEVICE",
61
+ null,
62
+ )
63
+ Assert.assertFalse(result.getBoolean("canAddCard"))
64
+ val details = result.getMap("details")
65
+ Assert.assertEquals(details?.getString("status"), "UNSUPPORTED_DEVICE")
66
+ Assert.assertNull(details?.getMap("token"))
67
+ }
68
+
69
+ @Test
70
+ fun createCanAddCardResult_MissingConfiguration() {
71
+ val result =
72
+ createCanAddCardResult(
73
+ false,
74
+ "MISSING_CONFIGURATION",
75
+ null,
76
+ )
77
+ Assert.assertFalse(result.getBoolean("canAddCard"))
78
+ val details = result.getMap("details")
79
+ Assert.assertEquals(details?.getString("status"), "MISSING_CONFIGURATION")
80
+ Assert.assertNull(details?.getMap("token"))
81
+ }
82
+
83
+ // ============================================
84
+ // mapToPreferredNetworks Tests
85
+ // ============================================
86
+
87
+ @Test
88
+ fun mapToPreferredNetworks_NullInput_ReturnsEmptyList() {
89
+ val result = mapToPreferredNetworks(null)
90
+ assertTrue(result.isEmpty())
91
+ }
92
+
93
+ @Test
94
+ fun mapToPreferredNetworks_EmptyList_ReturnsEmptyList() {
95
+ val result = mapToPreferredNetworks(emptyList())
96
+ assertTrue(result.isEmpty())
97
+ }
98
+
99
+ @Test
100
+ fun mapToPreferredNetworks_AllValidValues_ReturnsMappedList() {
101
+ val input = listOf(0, 1, 2, 3, 4, 5, 6, 7, 8)
102
+ val result = mapToPreferredNetworks(input)
103
+
104
+ assertEquals(9, result.size)
105
+ assertEquals(CardBrand.JCB, result[0])
106
+ assertEquals(CardBrand.AmericanExpress, result[1])
107
+ assertEquals(CardBrand.CartesBancaires, result[2])
108
+ assertEquals(CardBrand.DinersClub, result[3])
109
+ assertEquals(CardBrand.Discover, result[4])
110
+ assertEquals(CardBrand.MasterCard, result[5])
111
+ assertEquals(CardBrand.UnionPay, result[6])
112
+ assertEquals(CardBrand.Visa, result[7])
113
+ assertEquals(CardBrand.Unknown, result[8])
114
+ }
115
+
116
+ @Test
117
+ fun mapToPreferredNetworks_InvalidIndices_FiltersOutInvalid() {
118
+ val input = listOf(7, 99, 5, -1, 4)
119
+ val result = mapToPreferredNetworks(input)
120
+
121
+ // Only valid indices (7, 5, 4) should be mapped
122
+ assertEquals(3, result.size)
123
+ assertEquals(CardBrand.Visa, result[0])
124
+ assertEquals(CardBrand.MasterCard, result[1])
125
+ assertEquals(CardBrand.Discover, result[2])
126
+ }
127
+
128
+ @Test
129
+ fun mapToPreferredNetworks_OnlyInvalidIndices_ReturnsEmptyList() {
130
+ val result = mapToPreferredNetworks(listOf(99, -1, 100))
131
+ assertTrue(result.isEmpty())
132
+ }
133
+
134
+ // ============================================
135
+ // parseCustomPaymentMethods Tests
136
+ // ============================================
137
+
138
+ @Test
139
+ fun parseCustomPaymentMethods_NullConfig_ReturnsEmptyList() {
140
+ val result = parseCustomPaymentMethods(null)
141
+ assertTrue(result.isEmpty())
142
+ }
143
+
144
+ @Test
145
+ fun parseCustomPaymentMethods_EmptyMap_ReturnsEmptyList() {
146
+ val params = readableMapOf()
147
+ val result = parseCustomPaymentMethods(params)
148
+ assertTrue(result.isEmpty())
149
+ }
150
+
151
+ @Test
152
+ fun parseCustomPaymentMethods_NoCustomPaymentMethodsKey_ReturnsEmptyList() {
153
+ val params =
154
+ readableMapOf(
155
+ "someOtherKey" to "value",
156
+ )
157
+ val result = parseCustomPaymentMethods(params)
158
+ assertTrue(result.isEmpty())
159
+ }
160
+
161
+ @Test
162
+ fun parseCustomPaymentMethods_EmptyArray_ReturnsEmptyList() {
163
+ val params =
164
+ readableMapOf(
165
+ "customPaymentMethods" to readableArrayOf(),
166
+ )
167
+ val result = parseCustomPaymentMethods(params)
168
+ assertTrue(result.isEmpty())
169
+ }
170
+
171
+ @Test
172
+ fun parseCustomPaymentMethods_SingleValidMethod_ReturnsSingleItem() {
173
+ val params =
174
+ readableMapOf(
175
+ "customPaymentMethods" to
176
+ readableArrayOf(
177
+ readableMapOf(
178
+ "id" to "cpmt_test123",
179
+ ),
180
+ ),
181
+ )
182
+
183
+ val result = parseCustomPaymentMethods(params)
184
+ assertEquals(1, result.size)
185
+ assertEquals("cpmt_test123", result[0].id)
186
+ }
187
+
188
+ @Test
189
+ fun parseCustomPaymentMethods_WithSubtitle_ReturnsWithSubtitle() {
190
+ val params =
191
+ readableMapOf(
192
+ "customPaymentMethods" to
193
+ readableArrayOf(
194
+ readableMapOf(
195
+ "id" to "cpmt_test123",
196
+ "subtitle" to "Pay later with installments",
197
+ ),
198
+ ),
199
+ )
200
+
201
+ val result = parseCustomPaymentMethods(params)
202
+ assertEquals(1, result.size)
203
+ assertEquals("cpmt_test123", result[0].id)
204
+ // subtitle and disableBillingDetailCollection are internal properties
205
+ // we verify the function doesn't crash and returns the correct object
206
+ }
207
+
208
+ @Test
209
+ fun parseCustomPaymentMethods_WithDisableBillingDetailCollectionTrue_ReturnsValidObject() {
210
+ val params =
211
+ readableMapOf(
212
+ "customPaymentMethods" to
213
+ readableArrayOf(
214
+ readableMapOf(
215
+ "id" to "cpmt_test123",
216
+ "disableBillingDetailCollection" to true,
217
+ ),
218
+ ),
219
+ )
220
+
221
+ val result = parseCustomPaymentMethods(params)
222
+ assertEquals(1, result.size)
223
+ assertEquals("cpmt_test123", result[0].id)
224
+ }
225
+
226
+ @Test
227
+ fun parseCustomPaymentMethods_WithDisableBillingDetailCollectionFalse_ReturnsValidObject() {
228
+ val params =
229
+ readableMapOf(
230
+ "customPaymentMethods" to
231
+ readableArrayOf(
232
+ readableMapOf(
233
+ "id" to "cpmt_test123",
234
+ "disableBillingDetailCollection" to false,
235
+ ),
236
+ ),
237
+ )
238
+
239
+ val result = parseCustomPaymentMethods(params)
240
+ assertEquals(1, result.size)
241
+ assertEquals("cpmt_test123", result[0].id)
242
+ }
243
+
244
+ @Test
245
+ fun parseCustomPaymentMethods_MultipleValidMethods_ReturnsAll() {
246
+ val params =
247
+ readableMapOf(
248
+ "customPaymentMethods" to
249
+ readableArrayOf(
250
+ readableMapOf(
251
+ "id" to "cpmt_test1",
252
+ "subtitle" to "Method 1",
253
+ ),
254
+ readableMapOf(
255
+ "id" to "cpmt_test2",
256
+ "subtitle" to "Method 2",
257
+ "disableBillingDetailCollection" to true,
258
+ ),
259
+ readableMapOf(
260
+ "id" to "cpmt_test3",
261
+ ),
262
+ ),
263
+ )
264
+
265
+ val result = parseCustomPaymentMethods(params)
266
+ assertEquals(3, result.size)
267
+ assertEquals("cpmt_test1", result[0].id)
268
+ assertEquals("cpmt_test2", result[1].id)
269
+ assertEquals("cpmt_test3", result[2].id)
270
+ }
271
+
272
+ @Test
273
+ fun parseCustomPaymentMethods_MissingIdField_SkipsThatMethod() {
274
+ val params =
275
+ readableMapOf(
276
+ "customPaymentMethods" to
277
+ readableArrayOf(
278
+ readableMapOf(
279
+ "id" to "cpmt_valid",
280
+ ),
281
+ readableMapOf(
282
+ "subtitle" to "No ID here",
283
+ ),
284
+ readableMapOf(
285
+ "id" to "cpmt_valid2",
286
+ ),
287
+ ),
288
+ )
289
+
290
+ val result = parseCustomPaymentMethods(params)
291
+ // Only methods with id should be included
292
+ assertEquals(2, result.size)
293
+ assertEquals("cpmt_valid", result[0].id)
294
+ assertEquals("cpmt_valid2", result[1].id)
295
+ }
296
+
297
+ @Test
298
+ fun parseCustomPaymentMethods_NullIdField_SkipsThatMethod() {
299
+ val params =
300
+ readableMapOf(
301
+ "customPaymentMethods" to
302
+ readableArrayOf(
303
+ readableMapOf(
304
+ "id" to "cpmt_valid",
305
+ ),
306
+ readableMapOf(
307
+ "id" to null,
308
+ "subtitle" to "Null ID",
309
+ ),
310
+ ),
311
+ )
312
+
313
+ val result = parseCustomPaymentMethods(params)
314
+ assertEquals(1, result.size)
315
+ assertEquals("cpmt_valid", result[0].id)
316
+ }
317
+
318
+ // ============================================
319
+ // mapToAddress Tests
320
+ // ============================================
321
+
322
+ @Test
323
+ fun mapToAddress_NullInputs_ReturnsEmptyAddress() {
324
+ val result = mapToAddress(null, null)
325
+ assertNotNull(result)
326
+ assertNull(result.city)
327
+ assertNull(result.country)
328
+ assertNull(result.line1)
329
+ assertNull(result.line2)
330
+ assertNull(result.postalCode)
331
+ assertNull(result.state)
332
+ }
333
+
334
+ @Test
335
+ fun mapToAddress_EmptyMap_ReturnsAddressWithEmptyStrings() {
336
+ val result = mapToAddress(readableMapOf(), null)
337
+ assertNotNull(result)
338
+ assertEquals("", result.city)
339
+ assertEquals("", result.country)
340
+ assertEquals("", result.line1)
341
+ assertEquals("", result.line2)
342
+ assertEquals("", result.postalCode)
343
+ assertEquals("", result.state)
344
+ }
345
+
346
+ @Test
347
+ fun mapToAddress_FullAddress_ReturnsCompleteAddress() {
348
+ val addressMap =
349
+ readableMapOf(
350
+ "city" to "San Francisco",
351
+ "country" to "US",
352
+ "line1" to "123 Main St",
353
+ "line2" to "Apt 4",
354
+ "postalCode" to "94111",
355
+ "state" to "CA",
356
+ )
357
+
358
+ val result = mapToAddress(addressMap, null)
359
+ assertEquals("San Francisco", result.city)
360
+ assertEquals("US", result.country)
361
+ assertEquals("123 Main St", result.line1)
362
+ assertEquals("Apt 4", result.line2)
363
+ assertEquals("94111", result.postalCode)
364
+ assertEquals("CA", result.state)
365
+ }
366
+
367
+ @Test
368
+ fun mapToAddress_PartialAddress_ReturnsPartialWithEmptyStrings() {
369
+ val addressMap =
370
+ readableMapOf(
371
+ "city" to "New York",
372
+ "postalCode" to "10001",
373
+ )
374
+
375
+ val result = mapToAddress(addressMap, null)
376
+ assertEquals("New York", result.city)
377
+ assertEquals("10001", result.postalCode)
378
+ assertEquals("", result.country)
379
+ assertEquals("", result.line1)
380
+ assertEquals("", result.line2)
381
+ assertEquals("", result.state)
382
+ }
383
+
384
+ @Test
385
+ fun mapToAddress_CardAddressOnly_UsesCardAddress() {
386
+ val cardAddress =
387
+ com.stripe.android.model.Address
388
+ .Builder()
389
+ .setPostalCode("12345")
390
+ .setCountry("CA")
391
+ .build()
392
+
393
+ val result = mapToAddress(null, cardAddress)
394
+ assertEquals("12345", result.postalCode)
395
+ assertEquals("CA", result.country)
396
+ }
397
+
398
+ @Test
399
+ fun mapToAddress_BothInputs_CardOverridesMap() {
400
+ val addressMap =
401
+ readableMapOf(
402
+ "postalCode" to "94111",
403
+ "country" to "US",
404
+ )
405
+
406
+ val cardAddress =
407
+ com.stripe.android.model.Address
408
+ .Builder()
409
+ .setPostalCode("12345")
410
+ .setCountry("CA")
411
+ .build()
412
+
413
+ val result = mapToAddress(addressMap, cardAddress)
414
+ // Card address overrides map values (card is checked after map is set)
415
+ assertEquals("12345", result.postalCode)
416
+ assertEquals("CA", result.country)
417
+ }
418
+
419
+ // ============================================
420
+ // mapToBillingDetails Tests
421
+ // ============================================
422
+
423
+ @Test
424
+ fun mapToBillingDetails_NullInputs_ReturnsNull() {
425
+ val result = mapToBillingDetails(null, null)
426
+ assertNull(result)
427
+ }
428
+
429
+ @Test
430
+ fun mapToBillingDetails_EmptyMap_ReturnsBillingDetailsWithEmptyStrings() {
431
+ val result = mapToBillingDetails(readableMapOf(), null)
432
+ assertNotNull(result)
433
+ assertEquals("", result!!.name)
434
+ assertEquals("", result.email)
435
+ assertEquals("", result.phone)
436
+ assertNotNull(result.address)
437
+ }
438
+
439
+ @Test
440
+ fun mapToBillingDetails_FullDetails_ReturnsComplete() {
441
+ val billingMap =
442
+ readableMapOf(
443
+ "name" to "John Doe",
444
+ "email" to "john@example.com",
445
+ "phone" to "+1234567890",
446
+ "address" to
447
+ readableMapOf(
448
+ "city" to "San Francisco",
449
+ "country" to "US",
450
+ "line1" to "123 Main St",
451
+ "line2" to "Apt 4",
452
+ "postalCode" to "94111",
453
+ "state" to "CA",
454
+ ),
455
+ )
456
+
457
+ val result = mapToBillingDetails(billingMap, null)
458
+ assertNotNull(result)
459
+ assertEquals("John Doe", result!!.name)
460
+ assertEquals("john@example.com", result.email)
461
+ assertEquals("+1234567890", result.phone)
462
+ assertEquals("San Francisco", result.address?.city)
463
+ assertEquals("US", result.address?.country)
464
+ assertEquals("123 Main St", result.address?.line1)
465
+ assertEquals("Apt 4", result.address?.line2)
466
+ assertEquals("94111", result.address?.postalCode)
467
+ assertEquals("CA", result.address?.state)
468
+ }
469
+
470
+ @Test
471
+ fun mapToBillingDetails_OnlyName_ReturnsPartialWithEmptyStrings() {
472
+ val billingMap =
473
+ readableMapOf(
474
+ "name" to "Jane Smith",
475
+ )
476
+
477
+ val result = mapToBillingDetails(billingMap, null)
478
+ assertNotNull(result)
479
+ assertEquals("Jane Smith", result!!.name)
480
+ // Missing fields get empty string from getValOr default
481
+ assertEquals("", result.email)
482
+ assertEquals("", result.phone)
483
+ }
484
+
485
+ @Test
486
+ fun mapToBillingDetails_OnlyEmail_ReturnsPartialWithEmptyStrings() {
487
+ val billingMap =
488
+ readableMapOf(
489
+ "email" to "test@example.com",
490
+ )
491
+
492
+ val result = mapToBillingDetails(billingMap, null)
493
+ assertNotNull(result)
494
+ assertEquals("", result!!.name)
495
+ assertEquals("test@example.com", result.email)
496
+ assertEquals("", result.phone)
497
+ }
498
+
499
+ @Test
500
+ fun mapToBillingDetails_OnlyPhone_ReturnsPartialWithEmptyStrings() {
501
+ val billingMap =
502
+ readableMapOf(
503
+ "phone" to "+9876543210",
504
+ )
505
+
506
+ val result = mapToBillingDetails(billingMap, null)
507
+ assertNotNull(result)
508
+ assertEquals("", result!!.name)
509
+ assertEquals("", result.email)
510
+ assertEquals("+9876543210", result.phone)
511
+ }
512
+
513
+ @Test
514
+ fun mapToBillingDetails_WithCardAddress_IncludesCardAddress() {
515
+ val billingMap =
516
+ readableMapOf(
517
+ "name" to "John Doe",
518
+ )
519
+
520
+ val cardAddress =
521
+ com.stripe.android.model.Address
522
+ .Builder()
523
+ .setPostalCode("12345")
524
+ .setCountry("US")
525
+ .build()
526
+
527
+ val result = mapToBillingDetails(billingMap, cardAddress)
528
+ assertNotNull(result)
529
+ assertEquals("John Doe", result!!.name)
530
+ assertEquals("12345", result.address?.postalCode)
531
+ assertEquals("US", result.address?.country)
532
+ }
533
+
534
+ @Test
535
+ fun mapToBillingDetails_EmptyStringValues_UsesEmptyStrings() {
536
+ val billingMap =
537
+ readableMapOf(
538
+ "name" to "",
539
+ "email" to "",
540
+ "phone" to "",
541
+ )
542
+
543
+ val result = mapToBillingDetails(billingMap, null)
544
+ assertNotNull(result)
545
+ assertEquals("", result!!.name)
546
+ assertEquals("", result.email)
547
+ assertEquals("", result.phone)
548
+ }
549
+
550
+ @Test
551
+ fun mapToBillingDetails_OnlyCardAddress_ReturnsBillingDetailsWithAddress() {
552
+ val cardAddress =
553
+ com.stripe.android.model.Address
554
+ .Builder()
555
+ .setPostalCode("90210")
556
+ .setCountry("US")
557
+ .build()
558
+
559
+ val result = mapToBillingDetails(null, cardAddress)
560
+ assertNotNull(result)
561
+ assertNull(result!!.name)
562
+ assertNull(result.email)
563
+ assertNull(result.phone)
564
+ assertEquals("90210", result.address?.postalCode)
565
+ assertEquals("US", result.address?.country)
566
+ }
567
+ }