Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ConfirmPaymentIntentParams.savePaymentMethod nullable #2274

Merged
merged 2 commits into from
Mar 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ data class ConfirmPaymentIntentParams internal constructor(
val returnUrl: String? = null,

/**
* If the PaymentIntent has a payment_method and a customer or if you’re attaching a payment
* If the PaymentIntent has a `payment_method` and a `customer` or if you’re attaching a payment
* method to the PaymentIntent in this request, you can pass `save_payment_method=true` to save
* the payment method to the customer. Defaults to `false`.
*
Expand All @@ -61,7 +61,7 @@ data class ConfirmPaymentIntentParams internal constructor(
*
* [save_payment_method](https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-save_payment_method)
*/
private val savePaymentMethod: Boolean = false,
private val savePaymentMethod: Boolean? = null,

/**
* Set to `true` only when using manual confirmation and the iOS or Android SDKs to handle
Expand Down Expand Up @@ -108,7 +108,7 @@ data class ConfirmPaymentIntentParams internal constructor(
) : ConfirmStripeIntentParams {

fun shouldSavePaymentMethod(): Boolean {
return savePaymentMethod
return savePaymentMethod == true
}

override fun shouldUseStripeSdk(): Boolean {
Expand All @@ -125,8 +125,11 @@ data class ConfirmPaymentIntentParams internal constructor(
override fun toParamMap(): Map<String, Any> {
return mapOf(
PARAM_CLIENT_SECRET to clientSecret,
PARAM_SAVE_PAYMENT_METHOD to savePaymentMethod,
PARAM_USE_STRIPE_SDK to useStripeSdk
).plus(
savePaymentMethod?.let {
mapOf(PARAM_SAVE_PAYMENT_METHOD to it)
}.orEmpty()
).plus(
mandateId?.let { mapOf(PARAM_MANDATE_ID to it) }.orEmpty()
).plus(
Expand Down Expand Up @@ -342,7 +345,7 @@ data class ConfirmPaymentIntentParams internal constructor(
paymentMethodId: String,
clientSecret: String,
returnUrl: String? = null,
savePaymentMethod: Boolean = false,
savePaymentMethod: Boolean? = null,
extraParams: Map<String, Any>? = null,
paymentMethodOptions: PaymentMethodOptionsParams? = null,
mandateId: String? = null,
Expand Down Expand Up @@ -390,7 +393,7 @@ data class ConfirmPaymentIntentParams internal constructor(
paymentMethodCreateParams: PaymentMethodCreateParams,
clientSecret: String,
returnUrl: String? = null,
savePaymentMethod: Boolean = false,
savePaymentMethod: Boolean? = null,
extraParams: Map<String, Any>? = null,
mandateId: String? = null,
mandateData: MandateDataParams? = null,
Expand Down Expand Up @@ -432,7 +435,7 @@ data class ConfirmPaymentIntentParams internal constructor(
sourceId: String,
clientSecret: String,
returnUrl: String,
savePaymentMethod: Boolean = false,
savePaymentMethod: Boolean? = null,
extraParams: Map<String, Any>? = null,
shipping: Shipping? = null
): ConfirmPaymentIntentParams {
Expand Down Expand Up @@ -466,7 +469,7 @@ data class ConfirmPaymentIntentParams internal constructor(
sourceParams: SourceParams,
clientSecret: String,
returnUrl: String,
savePaymentMethod: Boolean = false,
savePaymentMethod: Boolean? = null,
extraParams: Map<String, Any>? = null,
shipping: Shipping? = null
): ConfirmPaymentIntentParams {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.stripe.android.model.ConfirmStripeIntentParams.Companion.PARAM_USE_ST
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertNull
import kotlin.test.assertTrue

class ConfirmPaymentIntentParamsTest {
Expand Down Expand Up @@ -104,7 +105,12 @@ class ConfirmPaymentIntentParamsTest {
@Test
fun createWithSourceId_toParamMap_createsExpectedMap() {
val confirmPaymentIntentParams = ConfirmPaymentIntentParams
.createWithSourceId(SOURCE_ID, CLIENT_SECRET, RETURN_URL)
.createWithSourceId(
SOURCE_ID,
CLIENT_SECRET,
RETURN_URL,
savePaymentMethod = false
)

val paramMap = confirmPaymentIntentParams.toParamMap()
assertEquals(paramMap[PARAM_SOURCE_ID], SOURCE_ID)
Expand All @@ -123,7 +129,7 @@ class ConfirmPaymentIntentParamsTest {
assertEquals(paramMap[PARAM_PAYMENT_METHOD_ID], PM_ID)
assertEquals(paramMap[PARAM_CLIENT_SECRET], CLIENT_SECRET)
assertFalse(paramMap.containsKey(PARAM_RETURN_URL))
assertEquals(false, paramMap[PARAM_SAVE_PAYMENT_METHOD])
assertNull(paramMap[PARAM_SAVE_PAYMENT_METHOD])
}

@Test
Expand All @@ -136,7 +142,7 @@ class ConfirmPaymentIntentParamsTest {
assertEquals(paramMap[PARAM_PAYMENT_METHOD_ID], PM_ID)
assertEquals(paramMap[PARAM_CLIENT_SECRET], CLIENT_SECRET)
assertEquals(paramMap[PARAM_RETURN_URL], RETURN_URL)
assertEquals(false, paramMap[PARAM_SAVE_PAYMENT_METHOD])
assertNull(paramMap[PARAM_SAVE_PAYMENT_METHOD])
}

@Test
Expand Down Expand Up @@ -204,7 +210,8 @@ class ConfirmPaymentIntentParamsTest {
val actualParams =
ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
clientSecret = CLIENT_SECRET,
paymentMethodCreateParams = PaymentMethodCreateParamsFixtures.DEFAULT_SEPA_DEBIT
paymentMethodCreateParams = PaymentMethodCreateParamsFixtures.DEFAULT_SEPA_DEBIT,
savePaymentMethod = false
).toParamMap()
assertEquals(expectedParams, actualParams)
}
Expand Down Expand Up @@ -235,7 +242,8 @@ class ConfirmPaymentIntentParamsTest {
ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
clientSecret = CLIENT_SECRET,
paymentMethodCreateParams = PaymentMethodCreateParamsFixtures.DEFAULT_SEPA_DEBIT,
mandateData = MandateDataParamsFixtures.DEFAULT
mandateData = MandateDataParamsFixtures.DEFAULT,
savePaymentMethod = false
).toParamMap()
assertEquals(expectedParams, actualParams)
}
Expand All @@ -258,7 +266,8 @@ class ConfirmPaymentIntentParamsTest {
ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams(
clientSecret = CLIENT_SECRET,
paymentMethodCreateParams = PaymentMethodCreateParamsFixtures.DEFAULT_SEPA_DEBIT,
mandateId = "mandate_123456789"
mandateId = "mandate_123456789",
savePaymentMethod = false
).toParamMap()
assertEquals(expectedParams, actualParams)
}
Expand All @@ -267,7 +276,6 @@ class ConfirmPaymentIntentParamsTest {
fun create_withSepaDebitPaymentMethodId_shouldUseMandateDataIfSpecified() {
val expectedParams = mapOf(
"client_secret" to CLIENT_SECRET,
"save_payment_method" to false,
"use_stripe_sdk" to false,
"mandate_data" to mapOf(
"customer_acceptance" to mapOf(
Expand Down Expand Up @@ -304,7 +312,6 @@ class ConfirmPaymentIntentParamsTest {
PARAM_PAYMENT_METHOD_ID to "pm_123",
PARAM_PAYMENT_METHOD_OPTIONS to mapOf("card" to mapOf("cvc" to "123")),
PARAM_CLIENT_SECRET to CLIENT_SECRET,
PARAM_SAVE_PAYMENT_METHOD to false,
PARAM_USE_STRIPE_SDK to false
),
params
Expand Down