@stripe/stripe-react-native 0.13.1 → 0.16.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 (219) hide show
  1. package/.editorconfig +15 -0
  2. package/CHANGELOG.md +68 -11
  3. package/android/.gradle/7.1/dependencies-accessors/dependencies-accessors.lock +0 -0
  4. package/android/.gradle/7.1/dependencies-accessors/gc.properties +0 -0
  5. package/android/.gradle/7.1/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/7.1/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/7.1/gc.properties +0 -0
  8. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  9. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  10. package/android/.gradle/checksums/checksums.lock +0 -0
  11. package/android/.gradle/vcs-1/gc.properties +0 -0
  12. package/android/.idea/gradle.xml +13 -0
  13. package/android/.idea/misc.xml +9 -0
  14. package/android/.idea/modules/android.iml +18 -0
  15. package/android/.idea/modules.xml +8 -0
  16. package/android/.idea/vcs.xml +6 -0
  17. package/android/build.gradle +6 -0
  18. package/android/local.properties +8 -0
  19. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +2 -0
  20. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +28 -6
  21. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +34 -3
  22. package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherFragment.kt +5 -0
  23. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +17 -7
  24. package/android/src/main/java/com/reactnativestripesdk/GooglePayFragment.kt +4 -0
  25. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherFragment.kt +3 -0
  26. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +213 -367
  27. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +1 -0
  28. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +48 -28
  29. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +69 -23
  30. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +1 -2
  31. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/PushProvisioningProxy.kt +19 -7
  32. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/TapAndPayProxy.kt +46 -39
  33. package/android/src/main/java/com/reactnativestripesdk/{Errors.kt → utils/Errors.kt} +1 -1
  34. package/android/src/main/java/com/reactnativestripesdk/{Extensions.kt → utils/Extensions.kt} +1 -1
  35. package/android/src/main/java/com/reactnativestripesdk/{Mappers.kt → utils/Mappers.kt} +19 -1
  36. package/android/src/main/java/com/reactnativestripesdk/utils/PostalCodeUtilities.kt +18 -0
  37. package/android/src/main/res/{drawable-night/googlepay_button_background.xml → drawable/googlepay_button_background_dark.xml} +1 -1
  38. package/android/src/main/res/{drawable-night/googlepay_button_content.xml → drawable/googlepay_button_content_dark.xml} +0 -0
  39. package/android/src/main/res/{drawable-night/googlepay_button_overlay.xml → drawable/googlepay_button_overlay_dark.xml} +0 -0
  40. package/android/src/main/res/{drawable-night/pay_with_googlepay_button_content.xml → drawable/pay_with_googlepay_button_content_dark.xml} +0 -0
  41. package/android/src/main/res/{drawable-ar-night/pay_with_googlepay_button_content.xml → drawable-ar/pay_with_googlepay_button_content_dark.xml} +0 -0
  42. package/android/src/main/res/{drawable-bg-night/pay_with_googlepay_button_content.xml → drawable-bg/pay_with_googlepay_button_content_dark.xml} +0 -0
  43. package/android/src/main/res/{drawable-ca-night/pay_with_googlepay_button_content.xml → drawable-ca/pay_with_googlepay_button_content_dark.xml} +0 -0
  44. package/android/src/main/res/{drawable-cs-night/pay_with_googlepay_button_content.xml → drawable-cs/pay_with_googlepay_button_content_dark.xml} +0 -0
  45. package/android/src/main/res/{drawable-da-night/pay_with_googlepay_button_content.xml → drawable-da/pay_with_googlepay_button_content_dark.xml} +0 -0
  46. package/android/src/main/res/{drawable-de-night/pay_with_googlepay_button_content.xml → drawable-de/pay_with_googlepay_button_content_dark.xml} +0 -0
  47. package/android/src/main/res/{drawable-el-night/pay_with_googlepay_button_content.xml → drawable-el/pay_with_googlepay_button_content_dark.xml} +0 -0
  48. package/android/src/main/res/{drawable-es-night/pay_with_googlepay_button_content.xml → drawable-es/pay_with_googlepay_button_content_dark.xml} +0 -0
  49. package/android/src/main/res/{drawable-et-night/pay_with_googlepay_button_content.xml → drawable-et/pay_with_googlepay_button_content_dark.xml} +0 -0
  50. package/android/src/main/res/{drawable-fi-night/pay_with_googlepay_button_content.xml → drawable-fi/pay_with_googlepay_button_content_dark.xml} +0 -0
  51. package/android/src/main/res/{drawable-fr-night/pay_with_googlepay_button_content.xml → drawable-fr/pay_with_googlepay_button_content_dark.xml} +0 -0
  52. package/android/src/main/res/{drawable-night-hdpi/googlepay_button_background_image.9.png → drawable-hdpi/googlepay_button_background_image_dark.9.png} +0 -0
  53. package/android/src/main/res/{drawable-hr-night/pay_with_googlepay_button_content.xml → drawable-hr/pay_with_googlepay_button_content_dark.xml} +0 -0
  54. package/android/src/main/res/{drawable-id-night/pay_with_googlepay_button_content.xml → drawable-id/pay_with_googlepay_button_content_dark.xml} +0 -0
  55. package/android/src/main/res/{drawable-it-night/pay_with_googlepay_button_content.xml → drawable-it/pay_with_googlepay_button_content_dark.xml} +0 -0
  56. package/android/src/main/res/{drawable-ja-night/pay_with_googlepay_button_content.xml → drawable-ja/pay_with_googlepay_button_content_dark.xml} +0 -0
  57. package/android/src/main/res/{drawable-ko-night/pay_with_googlepay_button_content.xml → drawable-ko/pay_with_googlepay_button_content_dark.xml} +0 -0
  58. package/android/src/main/res/{drawable-night-mdpi/googlepay_button_background_image.9.png → drawable-mdpi/googlepay_button_background_image_dark.9.png} +0 -0
  59. package/android/src/main/res/{drawable-ms-night/pay_with_googlepay_button_content.xml → drawable-ms/pay_with_googlepay_button_content_dark.xml} +0 -0
  60. package/android/src/main/res/{drawable-nl-night/pay_with_googlepay_button_content.xml → drawable-nl/pay_with_googlepay_button_content_dark.xml} +0 -0
  61. package/android/src/main/res/{drawable-no-night/pay_with_googlepay_button_content.xml → drawable-no/pay_with_googlepay_button_content_dark.xml} +0 -0
  62. package/android/src/main/res/{drawable-pl-night/pay_with_googlepay_button_content.xml → drawable-pl/pay_with_googlepay_button_content_dark.xml} +0 -0
  63. package/android/src/main/res/{drawable-pt-night/pay_with_googlepay_button_content.xml → drawable-pt/pay_with_googlepay_button_content_dark.xml} +0 -0
  64. package/android/src/main/res/{drawable-ru-night/pay_with_googlepay_button_content.xml → drawable-ru/pay_with_googlepay_button_content_dark.xml} +0 -0
  65. package/android/src/main/res/{drawable-sk-night/pay_with_googlepay_button_content.xml → drawable-sk/pay_with_googlepay_button_content_dark.xml} +0 -0
  66. package/android/src/main/res/{drawable-sl-night/pay_with_googlepay_button_content.xml → drawable-sl/pay_with_googlepay_button_content_dark.xml} +0 -0
  67. package/android/src/main/res/{drawable-sr-night/pay_with_googlepay_button_content.xml → drawable-sr/pay_with_googlepay_button_content_dark.xml} +0 -0
  68. package/android/src/main/res/{drawable-sv-night/pay_with_googlepay_button_content.xml → drawable-sv/pay_with_googlepay_button_content_dark.xml} +0 -0
  69. package/android/src/main/res/{drawable-th-night/pay_with_googlepay_button_content.xml → drawable-th/pay_with_googlepay_button_content_dark.xml} +0 -0
  70. package/android/src/main/res/{drawable-tr-night/pay_with_googlepay_button_content.xml → drawable-tr/pay_with_googlepay_button_content_dark.xml} +0 -0
  71. package/android/src/main/res/{drawable-uk-night/pay_with_googlepay_button_content.xml → drawable-uk/pay_with_googlepay_button_content_dark.xml} +0 -0
  72. package/android/src/main/res/{drawable-night-v21/googlepay_button_background.xml → drawable-v21/googlepay_button_background_dark.xml} +1 -1
  73. package/android/src/main/res/{drawable-night-xhdpi/googlepay_button_background_image.9.png → drawable-xhdpi/googlepay_button_background_image_dark.9.png} +0 -0
  74. package/android/src/main/res/{drawable-night-xxhdpi/googlepay_button_background_image.9.png → drawable-xxhdpi/googlepay_button_background_image_dark.9.png} +0 -0
  75. package/android/src/main/res/{drawable-night-xxxhdpi/googlepay_button_background_image.9.png → drawable-xxxhdpi/googlepay_button_background_image_dark.9.png} +0 -0
  76. package/android/src/main/res/{layout-night/googlepay_button.xml → layout/googlepay_button_dark.xml} +4 -4
  77. package/android/src/main/res/{layout-night/pay_with_googlepay_button.xml → layout/pay_with_googlepay_button_dark.xml} +4 -4
  78. package/ios/ApplePayUtils.swift +159 -0
  79. package/ios/CardFieldView.swift +11 -8
  80. package/ios/CardFormView.swift +20 -0
  81. package/ios/Mappers.swift +8 -13
  82. package/ios/PaymentMethodFactory.swift +9 -0
  83. package/ios/StripeSdk.m +5 -0
  84. package/ios/StripeSdk.swift +60 -53
  85. package/ios/StripeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  86. package/ios/StripeSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  87. package/ios/StripeSdk.xcodeproj/project.xcworkspace/xcuserdata/charliecruzan.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  88. package/ios/StripeSdk.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme +52 -0
  89. package/ios/StripeSdk.xcodeproj/xcuserdata/charliecruzan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +22 -0
  90. package/ios/StripeSdk.xcodeproj/xcuserdata/charliecruzan.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
  91. package/ios/Tests/ApplePayUtilsTests.swift +214 -0
  92. package/ios/Tests/PushProvisioningTests.swift +49 -0
  93. package/ios/pushprovisioning/AddToWalletButtonView.swift +1 -5
  94. package/ios/pushprovisioning/PushProvisioningUtils.swift +64 -0
  95. package/lib/commonjs/NativeStripeSdk.js.map +1 -1
  96. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  97. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  98. package/lib/commonjs/components/ApplePayButton.js +1 -1
  99. package/lib/commonjs/components/ApplePayButton.js.map +1 -1
  100. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  101. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  102. package/lib/commonjs/components/CardField.js +1 -1
  103. package/lib/commonjs/components/CardField.js.map +1 -1
  104. package/lib/commonjs/components/CardForm.js +1 -1
  105. package/lib/commonjs/components/CardForm.js.map +1 -1
  106. package/lib/commonjs/components/GooglePayButton.js +1 -1
  107. package/lib/commonjs/components/GooglePayButton.js.map +1 -1
  108. package/lib/commonjs/components/StripeContainer.js +1 -1
  109. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  110. package/lib/commonjs/functions.js +1 -1
  111. package/lib/commonjs/functions.js.map +1 -1
  112. package/lib/commonjs/hooks/useStripe.js +1 -1
  113. package/lib/commonjs/hooks/useStripe.js.map +1 -1
  114. package/lib/commonjs/types/index.js.map +1 -1
  115. package/lib/module/NativeStripeSdk.js.map +1 -1
  116. package/lib/module/components/AddToWalletButton.js +1 -1
  117. package/lib/module/components/AddToWalletButton.js.map +1 -1
  118. package/lib/module/components/ApplePayButton.js +1 -1
  119. package/lib/module/components/ApplePayButton.js.map +1 -1
  120. package/lib/module/components/AuBECSDebitForm.js +1 -1
  121. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  122. package/lib/module/components/CardField.js +1 -1
  123. package/lib/module/components/CardField.js.map +1 -1
  124. package/lib/module/components/CardForm.js +1 -1
  125. package/lib/module/components/CardForm.js.map +1 -1
  126. package/lib/module/components/GooglePayButton.js +1 -1
  127. package/lib/module/components/GooglePayButton.js.map +1 -1
  128. package/lib/module/components/StripeContainer.js +1 -1
  129. package/lib/module/components/StripeContainer.js.map +1 -1
  130. package/lib/module/functions.js +1 -1
  131. package/lib/module/functions.js.map +1 -1
  132. package/lib/module/hooks/useStripe.js +1 -1
  133. package/lib/module/hooks/useStripe.js.map +1 -1
  134. package/lib/module/types/index.js.map +1 -1
  135. package/lib/typescript/src/NativeStripeSdk.d.ts +2 -1
  136. package/lib/typescript/src/components/AddToWalletButton.d.ts +1 -1
  137. package/lib/typescript/src/components/CardForm.d.ts +1 -1
  138. package/lib/typescript/src/components/GooglePayButton.d.ts +2 -2
  139. package/lib/typescript/src/functions.d.ts +2 -1
  140. package/lib/typescript/src/hooks/useStripe.d.ts +2 -1
  141. package/lib/typescript/src/types/ApplePay.d.ts +31 -5
  142. package/lib/typescript/src/types/PaymentMethod.d.ts +9 -1
  143. package/lib/typescript/src/types/PaymentSheet.d.ts +19 -16
  144. package/lib/typescript/src/types/index.d.ts +20 -0
  145. package/package.json +7 -15
  146. package/src/NativeStripeSdk.tsx +5 -0
  147. package/src/components/AddToWalletButton.tsx +1 -1
  148. package/src/components/CardForm.tsx +2 -2
  149. package/src/components/GooglePayButton.tsx +8 -2
  150. package/src/functions.ts +25 -0
  151. package/src/hooks/useStripe.tsx +13 -0
  152. package/src/types/ApplePay.ts +39 -6
  153. package/src/types/PaymentMethod.ts +11 -1
  154. package/src/types/PaymentSheet.ts +34 -35
  155. package/src/types/index.ts +27 -0
  156. package/stripe-react-native.podspec +6 -1
  157. package/android/src/main/res/drawable-night/googlepay_button_no_shadow_background.xml +0 -6
  158. package/android/src/main/res/drawable-night-hdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  159. package/android/src/main/res/drawable-night-mdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  160. package/android/src/main/res/drawable-night-v21/googlepay_button_no_shadow_background.xml +0 -7
  161. package/android/src/main/res/drawable-night-xhdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  162. package/android/src/main/res/drawable-night-xxhdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  163. package/android/src/main/res/drawable-night-xxxhdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  164. package/android/src/main/res/values-night/googlepay_strings.xml +0 -12
  165. package/lib/typescript/e2e/buyNowPayLater.test.d.ts +0 -1
  166. package/lib/typescript/e2e/helpers.d.ts +0 -5
  167. package/lib/typescript/e2e/payments.test.d.ts +0 -1
  168. package/lib/typescript/e2e/paymentsWithRedirects.test.d.ts +0 -1
  169. package/lib/typescript/e2e/screenObject/BasicPaymentScreen.d.ts +0 -17
  170. package/lib/typescript/e2e/screenObject/HomeScreen.d.ts +0 -6
  171. package/lib/typescript/e2e/screenObject/components/BECSForm.d.ts +0 -8
  172. package/lib/typescript/e2e/screenObject/components/CardField.d.ts +0 -10
  173. package/lib/typescript/example/server/index.d.ts +0 -1
  174. package/lib/typescript/example/server/utils.d.ts +0 -11
  175. package/lib/typescript/example/src/App.d.ts +0 -45
  176. package/lib/typescript/example/src/Config.d.ts +0 -2
  177. package/lib/typescript/example/src/colors.d.ts +0 -8
  178. package/lib/typescript/example/src/components/Button.d.ts +0 -11
  179. package/lib/typescript/example/src/components/Collapse.d.ts +0 -6
  180. package/lib/typescript/example/src/components/PaymentScreen.d.ts +0 -7
  181. package/lib/typescript/example/src/helpers.d.ts +0 -1
  182. package/lib/typescript/example/src/screens/ACHPaymentScreen.d.ts +0 -1
  183. package/lib/typescript/example/src/screens/ACHSetupScreen.d.ts +0 -1
  184. package/lib/typescript/example/src/screens/AfterpayClearpayPaymentScreen.d.ts +0 -1
  185. package/lib/typescript/example/src/screens/AlipayPaymentScreen.d.ts +0 -1
  186. package/lib/typescript/example/src/screens/ApplePayScreen.d.ts +0 -1
  187. package/lib/typescript/example/src/screens/AuBECSDebitPaymentScreen.d.ts +0 -1
  188. package/lib/typescript/example/src/screens/AuBECSDebitSetupPaymentScreen.d.ts +0 -1
  189. package/lib/typescript/example/src/screens/BancontactPaymentScreen.d.ts +0 -1
  190. package/lib/typescript/example/src/screens/BancontactSetupFuturePaymentScreen.d.ts +0 -1
  191. package/lib/typescript/example/src/screens/CVCReCollectionScreen.d.ts +0 -1
  192. package/lib/typescript/example/src/screens/CreateTokenScreen.d.ts +0 -1
  193. package/lib/typescript/example/src/screens/EPSPaymentScreen.d.ts +0 -1
  194. package/lib/typescript/example/src/screens/FPXPaymentScreen.d.ts +0 -1
  195. package/lib/typescript/example/src/screens/GiropayPaymentScreen.d.ts +0 -1
  196. package/lib/typescript/example/src/screens/GooglePayScreen.d.ts +0 -1
  197. package/lib/typescript/example/src/screens/GrabPayPaymentScreen.d.ts +0 -1
  198. package/lib/typescript/example/src/screens/HomeScreen.d.ts +0 -1
  199. package/lib/typescript/example/src/screens/IdealPaymentScreen.d.ts +0 -1
  200. package/lib/typescript/example/src/screens/IdealSetupFuturePaymentScreen.d.ts +0 -1
  201. package/lib/typescript/example/src/screens/KlarnaPaymentScreen.d.ts +0 -1
  202. package/lib/typescript/example/src/screens/MultilineWebhookPaymentScreen.d.ts +0 -1
  203. package/lib/typescript/example/src/screens/NoWebhookPaymentScreen.d.ts +0 -1
  204. package/lib/typescript/example/src/screens/OxxoPaymentScreen.d.ts +0 -1
  205. package/lib/typescript/example/src/screens/P24PaymentScreen.d.ts +0 -1
  206. package/lib/typescript/example/src/screens/PayPalScreen.d.ts +0 -1
  207. package/lib/typescript/example/src/screens/PaymentResultScreen.d.ts +0 -8
  208. package/lib/typescript/example/src/screens/PaymentSheetAppearance.d.ts +0 -3
  209. package/lib/typescript/example/src/screens/PaymentsUICompleteScreen.d.ts +0 -1
  210. package/lib/typescript/example/src/screens/PaymentsUICustomScreen.d.ts +0 -1
  211. package/lib/typescript/example/src/screens/SepaPaymentScreen.d.ts +0 -1
  212. package/lib/typescript/example/src/screens/SepaSetupFuturePaymentScreen.d.ts +0 -1
  213. package/lib/typescript/example/src/screens/SetupFuturePaymentScreen.d.ts +0 -1
  214. package/lib/typescript/example/src/screens/SofortPaymentScreen.d.ts +0 -1
  215. package/lib/typescript/example/src/screens/SofortSetupFuturePaymentScreen.d.ts +0 -1
  216. package/lib/typescript/example/src/screens/WebhookPaymentScreen.d.ts +0 -1
  217. package/lib/typescript/src/plugin/__tests__/withStripe-test.d.ts +0 -1
  218. package/src/plugin/__tests__/fixtures/sample-AndroidManifest.xml +0 -24
  219. package/src/plugin/__tests__/withStripe-test.ts +0 -111
@@ -1,10 +1,13 @@
1
1
  package com.reactnativestripesdk
2
2
 
3
3
  import com.facebook.react.bridge.ReadableMap
4
+ import com.reactnativestripesdk.utils.*
5
+ import com.reactnativestripesdk.utils.mapToBillingDetails
6
+ import com.reactnativestripesdk.utils.mapToUSBankAccountHolderType
7
+ import com.reactnativestripesdk.utils.mapToUSBankAccountType
4
8
  import com.stripe.android.model.*
5
9
 
6
10
  class PaymentMethodCreateParamsFactory(
7
- private val clientSecret: String,
8
11
  private val paymentMethodData: ReadableMap?,
9
12
  private val options: ReadableMap,
10
13
  private val cardFieldView: CardFieldView?,
@@ -13,26 +16,27 @@ class PaymentMethodCreateParamsFactory(
13
16
  private val billingDetailsParams = mapToBillingDetails(getMapOrNull(paymentMethodData, "billingDetails"), cardFieldView?.cardAddress ?: cardFormView?.cardAddress)
14
17
 
15
18
  @Throws(PaymentMethodCreateParamsException::class)
16
- fun createConfirmParams(paymentMethodType: PaymentMethod.Type): ConfirmPaymentIntentParams {
19
+ fun createPaymentMethodParams(paymentMethodType: PaymentMethod.Type): PaymentMethodCreateParams {
17
20
  try {
18
21
  return when (paymentMethodType) {
19
- PaymentMethod.Type.Card -> createCardPaymentConfirmParams()
20
- PaymentMethod.Type.Ideal -> createIDEALPaymentConfirmParams()
21
- PaymentMethod.Type.Alipay -> createAlipayPaymentConfirmParams()
22
- PaymentMethod.Type.Sofort -> createSofortPaymentConfirmParams()
23
- PaymentMethod.Type.Bancontact -> createBancontactPaymentConfirmParams()
24
- PaymentMethod.Type.SepaDebit -> createSepaPaymentConfirmParams()
25
- PaymentMethod.Type.Oxxo -> createOXXOPaymentConfirmParams()
26
- PaymentMethod.Type.Giropay -> createGiropayPaymentConfirmParams()
27
- PaymentMethod.Type.Eps -> createEPSPaymentConfirmParams()
28
- PaymentMethod.Type.GrabPay -> createGrabPayPaymentConfirmParams()
29
- PaymentMethod.Type.P24 -> createP24PaymentConfirmParams()
30
- PaymentMethod.Type.Fpx -> createFpxPaymentConfirmParams()
31
- PaymentMethod.Type.AfterpayClearpay -> createAfterpayClearpayPaymentConfirmParams()
32
- PaymentMethod.Type.AuBecsDebit -> createAuBecsDebitPaymentConfirmParams()
33
- PaymentMethod.Type.Klarna -> createKlarnaPaymentConfirmParams()
34
- PaymentMethod.Type.USBankAccount -> createUSBankAccountPaymentConfirmParams()
35
- PaymentMethod.Type.PayPal -> createPayPalPaymentConfirmParams()
22
+ PaymentMethod.Type.Card -> createCardPaymentMethodParams()
23
+ PaymentMethod.Type.Ideal -> createIDEALParams()
24
+ PaymentMethod.Type.Alipay -> createAlipayParams()
25
+ PaymentMethod.Type.Sofort -> createSofortParams()
26
+ PaymentMethod.Type.Bancontact -> createBancontactParams()
27
+ PaymentMethod.Type.SepaDebit -> createSepaParams()
28
+ PaymentMethod.Type.Oxxo -> createOXXOParams()
29
+ PaymentMethod.Type.Giropay -> createGiropayParams()
30
+ PaymentMethod.Type.Eps -> createEPSParams()
31
+ PaymentMethod.Type.GrabPay -> createGrabPayParams()
32
+ PaymentMethod.Type.P24 -> createP24Params()
33
+ PaymentMethod.Type.Fpx -> createFpxParams()
34
+ PaymentMethod.Type.AfterpayClearpay -> createAfterpayClearpayParams()
35
+ PaymentMethod.Type.AuBecsDebit -> createAuBecsDebitParams()
36
+ PaymentMethod.Type.Klarna -> createKlarnaParams()
37
+ PaymentMethod.Type.USBankAccount -> createUSBankAccountParams(paymentMethodData)
38
+ PaymentMethod.Type.PayPal -> createPayPalParams()
39
+ PaymentMethod.Type.Affirm -> createAffirmParams()
36
40
  else -> {
37
41
  throw Exception("This paymentMethodType is not supported yet")
38
42
  }
@@ -43,351 +47,116 @@ class PaymentMethodCreateParamsFactory(
43
47
  }
44
48
 
45
49
  @Throws(PaymentMethodCreateParamsException::class)
46
- fun createSetupParams(paymentMethodType: PaymentMethod.Type): ConfirmSetupIntentParams {
47
- try {
48
- return when (paymentMethodType) {
49
- PaymentMethod.Type.Card -> createCardPaymentSetupParams()
50
- PaymentMethod.Type.Ideal -> createIDEALPaymentSetupParams()
51
- PaymentMethod.Type.Sofort -> createSofortPaymentSetupParams()
52
- PaymentMethod.Type.Bancontact -> createBancontactPaymentSetupParams()
53
- PaymentMethod.Type.SepaDebit -> createSepaPaymentSetupParams()
54
- PaymentMethod.Type.AuBecsDebit -> createAuBecsDebitPaymentSetupParams()
55
- PaymentMethod.Type.USBankAccount -> createUSBankAccountPaymentSetupParams()
56
- PaymentMethod.Type.PayPal -> createPayPalPaymentSetupParams()
57
- else -> {
58
- throw Exception("This paymentMethodType is not supported yet")
59
- }
60
- }
61
- } catch (error: PaymentMethodCreateParamsException) {
62
- throw error
63
- }
64
- }
65
-
66
- @Throws(PaymentMethodCreateParamsException::class)
67
- private fun createIDEALPaymentConfirmParams(): ConfirmPaymentIntentParams {
50
+ private fun createIDEALParams(): PaymentMethodCreateParams {
68
51
  val bankName = getValOr(paymentMethodData, "bankName", null)
69
52
 
70
53
  val idealParams = PaymentMethodCreateParams.Ideal(bankName)
71
- val createParams =
72
- PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
73
-
74
- return ConfirmPaymentIntentParams
75
- .createWithPaymentMethodCreateParams(
76
- paymentMethodCreateParams = createParams,
77
- clientSecret = clientSecret,
78
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
79
- )
80
- }
81
-
82
- @Throws(PaymentMethodCreateParamsException::class)
83
- private fun createP24PaymentConfirmParams(): ConfirmPaymentIntentParams {
84
- billingDetailsParams?.let {
85
- val params = PaymentMethodCreateParams.createP24(it)
86
-
87
- return ConfirmPaymentIntentParams
88
- .createWithPaymentMethodCreateParams(
89
- paymentMethodCreateParams = params,
90
- clientSecret = clientSecret,
91
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
92
- )
93
- }
94
-
95
- throw PaymentMethodCreateParamsException("You must provide billing details")
96
- }
97
-
98
- @Throws(PaymentMethodCreateParamsException::class)
99
- private fun createCardPaymentConfirmParams(): ConfirmPaymentIntentParams {
100
- val paymentMethodId = getValOr(paymentMethodData, "paymentMethodId", null)
101
- val token = getValOr(paymentMethodData, "token", null)
102
-
103
- val cardParams = cardFieldView?.cardParams ?: cardFormView?.cardParams
104
-
105
- if (cardParams == null && paymentMethodId == null && token == null) {
106
- throw PaymentMethodCreateParamsException("Card details not complete")
107
- }
108
-
109
- val setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
110
-
111
- if (paymentMethodId != null) {
112
- val cvc = getValOr(paymentMethodData, "cvc", null)
113
- val paymentMethodOptionParams =
114
- if (cvc != null) PaymentMethodOptionsParams.Card(cvc) else null
115
-
116
- return ConfirmPaymentIntentParams.createWithPaymentMethodId(
117
- paymentMethodId = paymentMethodId,
118
- paymentMethodOptions = paymentMethodOptionParams,
119
- clientSecret = clientSecret,
120
- setupFutureUsage = setupFutureUsage,
121
- )
122
- } else {
123
- var card = cardParams
124
- if (token != null) {
125
- card = PaymentMethodCreateParams.Card.create(token)
126
- }
127
-
128
- val paymentMethodCreateParams = PaymentMethodCreateParams.create(card!!, billingDetailsParams)
129
- return ConfirmPaymentIntentParams
130
- .createWithPaymentMethodCreateParams(
131
- paymentMethodCreateParams = paymentMethodCreateParams,
132
- clientSecret = clientSecret,
133
- setupFutureUsage = setupFutureUsage,
134
- )
135
- }
54
+ return PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
136
55
  }
137
56
 
138
57
  @Throws(PaymentMethodCreateParamsException::class)
139
- private fun createIDEALPaymentSetupParams(): ConfirmSetupIntentParams {
140
- val bankName = getValOr(paymentMethodData, "bankName", null)
141
-
142
- val idealParams = PaymentMethodCreateParams.Ideal(bankName)
143
- val createParams =
144
- PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
145
-
146
- return ConfirmSetupIntentParams.create(
147
- paymentMethodCreateParams = createParams,
148
- clientSecret = clientSecret,
149
- )
58
+ private fun createAlipayParams(): PaymentMethodCreateParams {
59
+ return PaymentMethodCreateParams.createAlipay()
150
60
  }
151
61
 
152
62
  @Throws(PaymentMethodCreateParamsException::class)
153
- private fun createSepaPaymentSetupParams(): ConfirmSetupIntentParams {
154
- billingDetailsParams?.let {
155
- val iban = getValOr(paymentMethodData, "iban", null) ?: run {
156
- throw PaymentMethodCreateParamsException("You must provide IBAN")
157
- }
158
-
159
- val sepaParams = PaymentMethodCreateParams.SepaDebit(iban)
160
- val createParams =
161
- PaymentMethodCreateParams.create(
162
- sepaDebit = sepaParams,
163
- billingDetails = it
164
- )
165
-
166
- return ConfirmSetupIntentParams.create(
167
- paymentMethodCreateParams = createParams,
168
- clientSecret = clientSecret
169
- )
170
- }
171
-
172
- throw PaymentMethodCreateParamsException("You must provide billing details")
173
- }
174
-
175
- @Throws(PaymentMethodCreateParamsException::class)
176
- private fun createCardPaymentSetupParams(): ConfirmSetupIntentParams {
177
- val paymentMethodId = getValOr(paymentMethodData, "paymentMethodId", null)
178
- val token = getValOr(paymentMethodData, "token", null)
179
- val cardParams = cardFieldView?.cardParams ?: cardFormView?.cardParams
180
-
181
- if (paymentMethodId != null) {
182
- return ConfirmSetupIntentParams.create(
183
- paymentMethodId,
184
- clientSecret
185
- )
186
- }
187
-
188
- val paymentMethodCreateParams =
189
- if (token != null)
190
- PaymentMethodCreateParams.create(PaymentMethodCreateParams.Card.create(token), billingDetailsParams)
191
- else if (cardParams != null)
192
- PaymentMethodCreateParams.create(cardParams, billingDetailsParams)
193
- else
194
- null
195
-
196
- if (paymentMethodCreateParams != null) {
197
- return ConfirmSetupIntentParams
198
- .create(paymentMethodCreateParams, clientSecret)
199
- } else {
200
- throw PaymentMethodCreateParamsException("Card details not complete")
201
- }
202
- }
203
-
204
- @Throws(PaymentMethodCreateParamsException::class)
205
- private fun createAlipayPaymentConfirmParams(): ConfirmPaymentIntentParams {
206
- return ConfirmPaymentIntentParams.createAlipay(clientSecret)
207
- }
208
-
209
- @Throws(PaymentMethodCreateParamsException::class)
210
- private fun createSofortPaymentConfirmParams(): ConfirmPaymentIntentParams {
63
+ private fun createSofortParams(): PaymentMethodCreateParams {
211
64
  val country = getValOr(paymentMethodData, "country", null) ?: run {
212
65
  throw PaymentMethodCreateParamsException("You must provide bank account country")
213
66
  }
214
67
 
215
- val params = PaymentMethodCreateParams.create(
68
+ return PaymentMethodCreateParams.create(
216
69
  PaymentMethodCreateParams.Sofort(country = country),
217
70
  billingDetailsParams
218
71
  )
219
-
220
- return ConfirmPaymentIntentParams
221
- .createWithPaymentMethodCreateParams(
222
- paymentMethodCreateParams = params,
223
- clientSecret = clientSecret,
224
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
225
- )
226
72
  }
227
73
 
228
74
  @Throws(PaymentMethodCreateParamsException::class)
229
- private fun createSofortPaymentSetupParams(): ConfirmSetupIntentParams {
230
- val country = getValOr(paymentMethodData, "country", null)
231
- ?: throw PaymentMethodCreateParamsException("You must provide country")
232
-
233
- val params = PaymentMethodCreateParams.create(
234
- PaymentMethodCreateParams.Sofort(country = country),
235
- billingDetailsParams
236
- )
237
-
238
- return ConfirmSetupIntentParams.create(
239
- paymentMethodCreateParams = params,
240
- clientSecret = clientSecret,
241
- )
242
- }
243
-
244
- @Throws(PaymentMethodCreateParamsException::class)
245
- private fun createGrabPayPaymentConfirmParams(): ConfirmPaymentIntentParams {
246
- val billingDetails = billingDetailsParams ?: PaymentMethod.BillingDetails()
247
- val params = PaymentMethodCreateParams.createGrabPay(billingDetails)
248
-
249
- return ConfirmPaymentIntentParams
250
- .createWithPaymentMethodCreateParams(
251
- paymentMethodCreateParams = params,
252
- clientSecret = clientSecret,
253
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
254
- )
255
- }
256
-
257
- @Throws(PaymentMethodCreateParamsException::class)
258
- private fun createBancontactPaymentConfirmParams(): ConfirmPaymentIntentParams {
75
+ private fun createBancontactParams(): PaymentMethodCreateParams {
259
76
  billingDetailsParams?.let {
260
- val params = PaymentMethodCreateParams.createBancontact(it)
261
-
262
- return ConfirmPaymentIntentParams
263
- .createWithPaymentMethodCreateParams(
264
- paymentMethodCreateParams = params,
265
- clientSecret = clientSecret,
266
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
267
- )
77
+ return PaymentMethodCreateParams.createBancontact(it)
268
78
  }
269
79
 
270
80
  throw PaymentMethodCreateParamsException("You must provide billing details")
271
81
  }
272
82
 
273
- private fun createBancontactPaymentSetupParams(): ConfirmSetupIntentParams {
83
+ @Throws(PaymentMethodCreateParamsException::class)
84
+ private fun createSepaParams(): PaymentMethodCreateParams {
274
85
  billingDetailsParams?.let {
275
- val params = PaymentMethodCreateParams.createBancontact(it)
86
+ val iban = getValOr(paymentMethodData, "iban", null) ?: run {
87
+ throw PaymentMethodCreateParamsException("You must provide IBAN")
88
+ }
276
89
 
277
- return ConfirmSetupIntentParams
278
- .create(
279
- paymentMethodCreateParams = params,
280
- clientSecret = clientSecret,
281
- )
90
+ return PaymentMethodCreateParams.create(
91
+ sepaDebit = PaymentMethodCreateParams.SepaDebit(iban),
92
+ billingDetails = it
93
+ )
282
94
  }
283
95
 
284
96
  throw PaymentMethodCreateParamsException("You must provide billing details")
285
97
  }
286
98
 
287
99
  @Throws(PaymentMethodCreateParamsException::class)
288
- private fun createOXXOPaymentConfirmParams(): ConfirmPaymentIntentParams {
100
+ private fun createOXXOParams(): PaymentMethodCreateParams {
289
101
  billingDetailsParams?.let {
290
- val params = PaymentMethodCreateParams.createOxxo(it)
291
-
292
- return ConfirmPaymentIntentParams
293
- .createWithPaymentMethodCreateParams(
294
- paymentMethodCreateParams = params,
295
- clientSecret = clientSecret,
296
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
297
- )
102
+ return PaymentMethodCreateParams.createOxxo(it)
298
103
  }
299
104
 
300
105
  throw PaymentMethodCreateParamsException("You must provide billing details")
301
106
  }
302
107
 
303
108
  @Throws(PaymentMethodCreateParamsException::class)
304
- private fun createEPSPaymentConfirmParams(): ConfirmPaymentIntentParams {
109
+ private fun createGiropayParams(): PaymentMethodCreateParams {
305
110
  billingDetailsParams?.let {
306
- val params = PaymentMethodCreateParams.createEps(it)
307
-
308
- return ConfirmPaymentIntentParams
309
- .createWithPaymentMethodCreateParams(
310
- paymentMethodCreateParams = params,
311
- clientSecret = clientSecret,
312
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
313
- )
111
+ return PaymentMethodCreateParams.createGiropay(it)
314
112
  }
315
113
 
316
114
  throw PaymentMethodCreateParamsException("You must provide billing details")
317
115
  }
318
116
 
319
117
  @Throws(PaymentMethodCreateParamsException::class)
320
- private fun createGiropayPaymentConfirmParams(): ConfirmPaymentIntentParams {
118
+ private fun createEPSParams(): PaymentMethodCreateParams {
321
119
  billingDetailsParams?.let {
322
- val params = PaymentMethodCreateParams.createGiropay(it)
323
-
324
- return ConfirmPaymentIntentParams
325
- .createWithPaymentMethodCreateParams(
326
- paymentMethodCreateParams = params,
327
- clientSecret = clientSecret,
328
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
329
- )
120
+ return PaymentMethodCreateParams.createEps(it)
330
121
  }
331
122
 
332
123
  throw PaymentMethodCreateParamsException("You must provide billing details")
333
124
  }
334
125
 
335
126
  @Throws(PaymentMethodCreateParamsException::class)
336
- private fun createSepaPaymentConfirmParams(): ConfirmPaymentIntentParams {
337
- billingDetailsParams?.let {
338
- val iban = getValOr(paymentMethodData, "iban", null) ?: run {
339
- throw PaymentMethodCreateParamsException("You must provide IBAN")
340
- }
341
-
342
- val params = PaymentMethodCreateParams.create(
343
- sepaDebit = PaymentMethodCreateParams.SepaDebit(iban),
344
- billingDetails = it
345
- )
127
+ private fun createGrabPayParams(): PaymentMethodCreateParams {
128
+ val billingDetails = billingDetailsParams ?: PaymentMethod.BillingDetails()
129
+ return PaymentMethodCreateParams.createGrabPay(billingDetails)
130
+ }
346
131
 
347
- return ConfirmPaymentIntentParams
348
- .createWithPaymentMethodCreateParams(
349
- paymentMethodCreateParams = params,
350
- clientSecret = clientSecret,
351
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
352
- )
132
+ @Throws(PaymentMethodCreateParamsException::class)
133
+ private fun createP24Params(): PaymentMethodCreateParams {
134
+ billingDetailsParams?.let {
135
+ return PaymentMethodCreateParams.createP24(it)
353
136
  }
354
137
 
355
138
  throw PaymentMethodCreateParamsException("You must provide billing details")
356
139
  }
357
140
 
358
141
  @Throws(PaymentMethodCreateParamsException::class)
359
- private fun createFpxPaymentConfirmParams(): ConfirmPaymentIntentParams {
142
+ private fun createFpxParams(): PaymentMethodCreateParams {
360
143
  val bank = getBooleanOrFalse(paymentMethodData, "testOfflineBank").let { "test_offline_bank" }
361
- val params = PaymentMethodCreateParams.create(
144
+ return PaymentMethodCreateParams.create(
362
145
  PaymentMethodCreateParams.Fpx(bank)
363
146
  )
364
-
365
- return ConfirmPaymentIntentParams
366
- .createWithPaymentMethodCreateParams(
367
- paymentMethodCreateParams = params,
368
- clientSecret = clientSecret,
369
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
370
- )
371
147
  }
372
148
 
373
149
  @Throws(PaymentMethodCreateParamsException::class)
374
- private fun createAfterpayClearpayPaymentConfirmParams(): ConfirmPaymentIntentParams {
150
+ private fun createAfterpayClearpayParams(): PaymentMethodCreateParams {
375
151
  billingDetailsParams?.let {
376
- val params = PaymentMethodCreateParams.createAfterpayClearpay(it)
377
-
378
- return ConfirmPaymentIntentParams
379
- .createWithPaymentMethodCreateParams(
380
- paymentMethodCreateParams = params,
381
- clientSecret = clientSecret,
382
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
383
- )
152
+ return PaymentMethodCreateParams.createAfterpayClearpay(it)
384
153
  }
385
154
 
386
155
  throw PaymentMethodCreateParamsException("You must provide billing details")
387
156
  }
388
157
 
389
158
  @Throws(PaymentMethodCreateParamsException::class)
390
- private fun createAuBecsDebitPaymentConfirmParams(): ConfirmPaymentIntentParams {
159
+ private fun createAuBecsDebitParams(): PaymentMethodCreateParams {
391
160
  val formDetails = getMapOrNull(paymentMethodData, "formDetails") ?: run {
392
161
  throw PaymentMethodCreateParamsException("You must provide form details")
393
162
  }
@@ -402,129 +171,206 @@ class PaymentMethodCreateParamsFactory(
402
171
  .setEmail(email)
403
172
  .build()
404
173
 
405
- val params = PaymentMethodCreateParams.create(
174
+ return PaymentMethodCreateParams.create(
406
175
  auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(
407
176
  bsbNumber = bsbNumber,
408
177
  accountNumber = accountNumber
409
178
  ),
410
179
  billingDetails = billingDetails
411
180
  )
412
-
413
- return ConfirmPaymentIntentParams
414
- .createWithPaymentMethodCreateParams(
415
- paymentMethodCreateParams = params,
416
- clientSecret = clientSecret,
417
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
418
- )
419
181
  }
420
182
 
421
183
  @Throws(PaymentMethodCreateParamsException::class)
422
- private fun createAuBecsDebitPaymentSetupParams(): ConfirmSetupIntentParams {
423
- val formDetails = getMapOrNull(paymentMethodData, "formDetails") ?: run {
424
- throw PaymentMethodCreateParamsException("You must provide form details")
184
+ private fun createKlarnaParams(): PaymentMethodCreateParams {
185
+ if (billingDetailsParams == null ||
186
+ billingDetailsParams.address?.country.isNullOrBlank() ||
187
+ billingDetailsParams.email.isNullOrBlank()
188
+ ) {
189
+ throw PaymentMethodCreateParamsException("Klarna requires that you provide the following billing details: email, country")
425
190
  }
426
191
 
427
- val bsbNumber = getValOr(formDetails, "bsbNumber") as String
428
- val accountNumber = getValOr(formDetails, "accountNumber") as String
429
- val name = getValOr(formDetails, "name") as String
430
- val email = getValOr(formDetails, "email") as String
431
-
432
- val billingDetails = PaymentMethod.BillingDetails.Builder()
433
- .setName(name)
434
- .setEmail(email)
435
- .build()
192
+ return PaymentMethodCreateParams.createKlarna(billingDetailsParams)
193
+ }
436
194
 
437
- val params = PaymentMethodCreateParams.create(
438
- auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(
439
- bsbNumber = bsbNumber,
440
- accountNumber = accountNumber
441
- ),
442
- billingDetails = billingDetails
443
- )
195
+ @Throws(PaymentMethodCreateParamsException::class)
196
+ private fun createPayPalParams(): PaymentMethodCreateParams {
197
+ return PaymentMethodCreateParams.createPayPal(null)
198
+ }
444
199
 
445
- return ConfirmSetupIntentParams
446
- .create(
447
- paymentMethodCreateParams = params,
448
- clientSecret = clientSecret,
449
- )
200
+ @Throws(PaymentMethodCreateParamsException::class)
201
+ private fun createAffirmParams(): PaymentMethodCreateParams {
202
+ return PaymentMethodCreateParams.createAffirm(billingDetailsParams)
450
203
  }
451
204
 
452
205
  @Throws(PaymentMethodCreateParamsException::class)
453
- private fun createUSBankAccountPaymentSetupParams(): ConfirmSetupIntentParams {
454
- // If payment method data is supplied, assume they are passing in the bank details manually
455
- paymentMethodData?.let {
456
- if (billingDetailsParams?.name.isNullOrBlank()) {
457
- throw PaymentMethodCreateParamsException("When creating a US bank account payment method, you must provide the following billing details: name")
206
+ fun createParams(clientSecret: String, paymentMethodType: PaymentMethod.Type, isPaymentIntent: Boolean): ConfirmStripeIntentParams {
207
+ try {
208
+ return when (paymentMethodType) {
209
+ PaymentMethod.Type.Card -> createCardStripeIntentParams(clientSecret, isPaymentIntent)
210
+ PaymentMethod.Type.USBankAccount -> createUSBankAccountStripeIntentParams(clientSecret, isPaymentIntent)
211
+ PaymentMethod.Type.PayPal -> createPayPalStripeIntentParams(clientSecret, isPaymentIntent)
212
+ PaymentMethod.Type.Affirm -> createAffirmStripeIntentParams(clientSecret, isPaymentIntent)
213
+
214
+ PaymentMethod.Type.Ideal,
215
+ PaymentMethod.Type.Alipay,
216
+ PaymentMethod.Type.Sofort,
217
+ PaymentMethod.Type.Bancontact,
218
+ PaymentMethod.Type.SepaDebit,
219
+ PaymentMethod.Type.Oxxo,
220
+ PaymentMethod.Type.Giropay,
221
+ PaymentMethod.Type.Eps,
222
+ PaymentMethod.Type.GrabPay,
223
+ PaymentMethod.Type.P24,
224
+ PaymentMethod.Type.Fpx,
225
+ PaymentMethod.Type.AfterpayClearpay,
226
+ PaymentMethod.Type.AuBecsDebit,
227
+ PaymentMethod.Type.Klarna -> {
228
+ val params = createPaymentMethodParams(paymentMethodType)
229
+
230
+ return if (isPaymentIntent) {
231
+ ConfirmPaymentIntentParams
232
+ .createWithPaymentMethodCreateParams(
233
+ paymentMethodCreateParams = params,
234
+ clientSecret = clientSecret,
235
+ setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
236
+ )
237
+ } else {
238
+ ConfirmSetupIntentParams.create(
239
+ paymentMethodCreateParams = params,
240
+ clientSecret = clientSecret,
241
+ )
242
+ }
243
+ }
244
+ else -> {
245
+ throw Exception("This paymentMethodType is not supported yet")
246
+ }
458
247
  }
459
- return ConfirmSetupIntentParams.create(
460
- paymentMethodCreateParams = createUSBankAccountParams(paymentMethodData),
461
- clientSecret = clientSecret,
462
- )
463
- } ?: run {
464
- // Payment method is assumed to be already attached through via collectBankAccount
465
- return ConfirmSetupIntentParams.create(
466
- clientSecret = clientSecret,
467
- paymentMethodType = PaymentMethod.Type.USBankAccount
468
- )
248
+ } catch (error: PaymentMethodCreateParamsException) {
249
+ throw error
469
250
  }
470
251
  }
471
252
 
472
253
  @Throws(PaymentMethodCreateParamsException::class)
473
- private fun createPayPalPaymentSetupParams(): ConfirmSetupIntentParams {
474
- throw PaymentMethodCreateParamsException("PayPal is not yet supported through SetupIntents.")
254
+ private fun createCardPaymentMethodParams(): PaymentMethodCreateParams {
255
+ val token = getValOr(paymentMethodData, "token", null)
256
+ var cardParams = cardFieldView?.cardParams ?: cardFormView?.cardParams
257
+
258
+ if (token != null) {
259
+ cardParams = PaymentMethodCreateParams.Card.create(token)
260
+ }
261
+
262
+ if (cardParams == null) {
263
+ throw PaymentMethodCreateParamsException("Card details not complete")
264
+ }
265
+
266
+ return PaymentMethodCreateParams.create(cardParams, billingDetailsParams)
475
267
  }
476
268
 
477
269
  @Throws(PaymentMethodCreateParamsException::class)
478
- private fun createKlarnaPaymentConfirmParams(): ConfirmPaymentIntentParams {
479
- if (billingDetailsParams == null ||
480
- billingDetailsParams.address?.country.isNullOrBlank() ||
481
- billingDetailsParams.email.isNullOrBlank()
482
- ) {
483
- throw PaymentMethodCreateParamsException("Klarna requires that you provide the following billing details: email, country")
484
- }
270
+ private fun createCardStripeIntentParams(clientSecret: String, isPaymentIntent: Boolean): ConfirmStripeIntentParams {
271
+ val paymentMethodId = getValOr(paymentMethodData, "paymentMethodId", null)
272
+ val setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
485
273
 
486
- val params = PaymentMethodCreateParams.createKlarna(billingDetailsParams)
274
+ if (paymentMethodId != null) {
275
+ val cvc = getValOr(paymentMethodData, "cvc", null)
276
+ val paymentMethodOptionParams =
277
+ if (cvc != null) PaymentMethodOptionsParams.Card(cvc) else null
487
278
 
488
- return ConfirmPaymentIntentParams
489
- .createWithPaymentMethodCreateParams(
490
- paymentMethodCreateParams = params,
491
- clientSecret = clientSecret,
492
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
493
- )
279
+ return (
280
+ if (isPaymentIntent)
281
+ ConfirmPaymentIntentParams.createWithPaymentMethodId(
282
+ paymentMethodId,
283
+ paymentMethodOptions = paymentMethodOptionParams,
284
+ clientSecret = clientSecret,
285
+ setupFutureUsage = setupFutureUsage)
286
+ else
287
+ ConfirmSetupIntentParams.create(
288
+ paymentMethodId,
289
+ clientSecret)
290
+ )
291
+ } else {
292
+ val paymentMethodCreateParams = createCardPaymentMethodParams()
293
+ return (
294
+ if (isPaymentIntent)
295
+ ConfirmPaymentIntentParams
296
+ .createWithPaymentMethodCreateParams(
297
+ paymentMethodCreateParams,
298
+ clientSecret,
299
+ setupFutureUsage = setupFutureUsage)
300
+ else
301
+ ConfirmSetupIntentParams
302
+ .create(paymentMethodCreateParams, clientSecret)
303
+ )
304
+ }
494
305
  }
495
306
 
496
307
  @Throws(PaymentMethodCreateParamsException::class)
497
- private fun createUSBankAccountPaymentConfirmParams(): ConfirmPaymentIntentParams {
308
+ private fun createUSBankAccountStripeIntentParams(clientSecret: String, isPaymentIntent: Boolean): ConfirmStripeIntentParams {
498
309
  // If payment method data is supplied, assume they are passing in the bank details manually
499
310
  paymentMethodData?.let {
500
311
  if (billingDetailsParams?.name.isNullOrBlank()) {
501
312
  throw PaymentMethodCreateParamsException("When creating a US bank account payment method, you must provide the following billing details: name")
502
313
  }
503
-
504
- return ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
505
- paymentMethodCreateParams = createUSBankAccountParams(paymentMethodData),
506
- clientSecret,
507
- setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
508
- )
314
+ return if (isPaymentIntent) {
315
+ ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
316
+ paymentMethodCreateParams = createUSBankAccountParams(paymentMethodData),
317
+ clientSecret,
318
+ setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage"))
319
+ )
320
+ } else {
321
+ ConfirmSetupIntentParams.create(
322
+ paymentMethodCreateParams = createUSBankAccountParams(paymentMethodData),
323
+ clientSecret = clientSecret,
324
+ )
325
+ }
509
326
  } ?: run {
510
327
  // Payment method is assumed to be already attached through via collectBankAccount
511
- return ConfirmPaymentIntentParams.create(
512
- clientSecret = clientSecret,
513
- paymentMethodType = PaymentMethod.Type.USBankAccount
514
- )
328
+ return if (isPaymentIntent) {
329
+ ConfirmPaymentIntentParams.create(
330
+ clientSecret = clientSecret,
331
+ paymentMethodType = PaymentMethod.Type.USBankAccount
332
+ )
333
+ } else {
334
+ ConfirmSetupIntentParams.create(
335
+ clientSecret = clientSecret,
336
+ paymentMethodType = PaymentMethod.Type.USBankAccount
337
+ )
338
+ }
515
339
  }
516
340
  }
517
341
 
518
342
  @Throws(PaymentMethodCreateParamsException::class)
519
- private fun createPayPalPaymentConfirmParams(): ConfirmPaymentIntentParams {
343
+ private fun createPayPalStripeIntentParams(clientSecret: String, isPaymentIntent: Boolean): ConfirmStripeIntentParams {
344
+ if (!isPaymentIntent) {
345
+ throw PaymentMethodCreateParamsException("PayPal is not yet supported through SetupIntents.")
346
+ }
347
+
348
+ val params = createPayPalParams()
349
+
520
350
  return ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
521
- paymentMethodCreateParams = PaymentMethodCreateParams.createPayPal(null),
351
+ paymentMethodCreateParams = params,
522
352
  clientSecret = clientSecret,
523
353
  )
524
354
  }
525
355
 
526
356
  @Throws(PaymentMethodCreateParamsException::class)
527
- private fun createUSBankAccountParams(params: ReadableMap): PaymentMethodCreateParams {
357
+ private fun createAffirmStripeIntentParams(clientSecret: String, isPaymentIntent: Boolean): ConfirmStripeIntentParams {
358
+ if (!isPaymentIntent) {
359
+ throw PaymentMethodCreateParamsException("Affirm is not yet supported through SetupIntents.")
360
+ }
361
+
362
+ val params = createAffirmParams()
363
+
364
+ return ConfirmPaymentIntentParams
365
+ .createWithPaymentMethodCreateParams(
366
+ paymentMethodCreateParams = params,
367
+ clientSecret = clientSecret,
368
+ setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(options, "setupFutureUsage")),
369
+ )
370
+ }
371
+
372
+ @Throws(PaymentMethodCreateParamsException::class)
373
+ private fun createUSBankAccountParams(params: ReadableMap?): PaymentMethodCreateParams {
528
374
  val accountNumber = getValOr(params, "accountNumber", null)
529
375
  val routingNumber = getValOr(params, "routingNumber", null)
530
376