From 384f501d85d3bd044e163832cb3baa126b01fff5 Mon Sep 17 00:00:00 2001 From: "eric.lin" Date: Fri, 7 Jun 2024 15:07:31 +0800 Subject: [PATCH] CreatePaymentIntent improvements --- .../StripeTerminalReactNativeModule.kt | 14 ++++++-------- ios/StripeTerminalReactNative.swift | 5 ++++- src/types/index.ts | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt index 1af1628a..2b51febf 100644 --- a/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt +++ b/android/src/main/java/com/stripeterminalreactnative/StripeTerminalReactNativeModule.kt @@ -372,12 +372,10 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : val captureMethod = params.getString("captureMethod") val offlineBehavior = params.getString("offlineBehavior") - val paymentMethodTypes = paymentMethods?.toArrayList()?.mapNotNull { - if (it is String) { - PaymentMethodType.valueOf(it.uppercase()) - } else { - null - } + val paymentMethodTypes = paymentMethods?.toArrayList()?.mapNotNull { + it as? String + }?.map{ + PaymentMethodType.valueOf(it.uppercase()) } val intentParams = paymentMethodTypes?.let { @@ -451,14 +449,14 @@ class StripeTerminalReactNativeModule(reactContext: ReactApplicationContext) : } } - val offlineBehaviorParam = offlineBehavior.let { + val offlineBehaviorParam = offlineBehavior?.let { when (it) { "prefer_online" -> OfflineBehavior.PREFER_ONLINE "require_online" -> OfflineBehavior.REQUIRE_ONLINE "force_offline" -> OfflineBehavior.FORCE_OFFLINE else -> OfflineBehavior.PREFER_ONLINE } - } + } ?: OfflineBehavior.PREFER_ONLINE val uuid = UUID.randomUUID().toString() diff --git a/ios/StripeTerminalReactNative.swift b/ios/StripeTerminalReactNative.swift index 60589eb3..150ca4df 100644 --- a/ios/StripeTerminalReactNative.swift +++ b/ios/StripeTerminalReactNative.swift @@ -397,7 +397,6 @@ class StripeTerminalReactNative: RCTEventEmitter, DiscoveryDelegate, BluetoothRe let captureMethod = params["captureMethod"] as? String let paymentParamsBuilder = PaymentIntentParametersBuilder(amount: UInt(truncating: amount),currency: currency) - .setPaymentMethodTypes(paymentMethodTypes) .setCaptureMethod(captureMethod == "automatic" ? .automatic : .manual) .setSetupFutureUsage(setupFutureUsage) .setOnBehalfOf(onBehalfOf) @@ -410,6 +409,10 @@ class StripeTerminalReactNative: RCTEventEmitter, DiscoveryDelegate, BluetoothRe .setCustomer(customer) .setTransferGroup(transferGroup) .setMetadata(metadata) + + if !paymentMethodTypes.isEmpty { + paymentParamsBuilder.setPaymentMethodTypes(paymentMethodTypes) + } let cardPresentParamsBuilder = CardPresentParametersBuilder() .setRequestExtendedAuthorization(extendedAuth) diff --git a/src/types/index.ts b/src/types/index.ts index bb4b2dcc..d82bedad 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -174,7 +174,7 @@ export type CreatePaymentIntentParams = CreatePaymentIntentIOSParams & { metadata?: Record; paymentMethodOptions?: PaymentMethodOptions; captureMethod?: 'automatic' | 'manual'; - offlineBehavior: 'prefer_online' | 'require_online' | 'force_offline'; + offlineBehavior?: 'prefer_online' | 'require_online' | 'force_offline'; }; export type CreatePaymentIntentIOSParams = {