diff --git a/app/src/main/graphql/checkout.graphql b/app/src/main/graphql/checkout.graphql index cd0f3152de..31a64b3839 100644 --- a/app/src/main/graphql/checkout.graphql +++ b/app/src/main/graphql/checkout.graphql @@ -64,8 +64,8 @@ query ValidateCheckout($checkoutId:ID!, $paymentSourceId:String!, $paymentIntent } } -mutation CompleteOnSessionCheckout($checkoutId: ID!, $paymentIntentClientSecret: String!, $paymentSourceId: String) { - completeOnSessionCheckout(input:{ checkoutId: $checkoutId, paymentIntentClientSecret: $paymentIntentClientSecret, paymentSourceId: $paymentSourceId } ) { +mutation CompleteOnSessionCheckout($checkoutId: ID!, $paymentIntentClientSecret: String!, $paymentSourceId: String, $paymentSourceReusable: Boolean) { + completeOnSessionCheckout(input:{ checkoutId: $checkoutId, paymentIntentClientSecret: $paymentIntentClientSecret, paymentSourceId: $paymentSourceId, paymentSourceReusable: $paymentSourceReusable } ) { checkout { id backing { diff --git a/app/src/main/java/com/kickstarter/mock/services/MockApolloClient.kt b/app/src/main/java/com/kickstarter/mock/services/MockApolloClient.kt index edfddfacb6..def4656b11 100644 --- a/app/src/main/java/com/kickstarter/mock/services/MockApolloClient.kt +++ b/app/src/main/java/com/kickstarter/mock/services/MockApolloClient.kt @@ -289,7 +289,8 @@ open class MockApolloClientV2 : ApolloClientTypeV2 { override fun completeOnSessionCheckout( checkoutId: String, paymentIntentClientSecret: String, - paymentSourceId: String? + paymentSourceId: String?, + paymentSourceReusable: Boolean ): io.reactivex.Observable> { return io.reactivex.Observable.empty() } diff --git a/app/src/main/java/com/kickstarter/services/KSApolloClientV2.kt b/app/src/main/java/com/kickstarter/services/KSApolloClientV2.kt index e29c295923..95cd12a5ca 100644 --- a/app/src/main/java/com/kickstarter/services/KSApolloClientV2.kt +++ b/app/src/main/java/com/kickstarter/services/KSApolloClientV2.kt @@ -187,7 +187,8 @@ interface ApolloClientTypeV2 { fun completeOnSessionCheckout( checkoutId: String, paymentIntentClientSecret: String, - paymentSourceId: String? + paymentSourceId: String?, + paymentSourceReusable: Boolean ): Observable> fun createAttributionEvent(eventInput: CreateAttributionEventData): Observable @@ -1565,7 +1566,8 @@ class KSApolloClientV2(val service: ApolloClient, val gson: Gson) : ApolloClient override fun completeOnSessionCheckout( checkoutId: String, paymentIntentClientSecret: String, - paymentSourceId: String? + paymentSourceId: String?, + paymentSourceReusable: Boolean ): Observable> { return Observable.defer { val ps = PublishSubject.create>() @@ -1575,6 +1577,7 @@ class KSApolloClientV2(val service: ApolloClient, val gson: Gson) : ApolloClient .checkoutId(Base64Utils.encodeUrlSafe(("Checkout-$checkoutId").toByteArray(Charset.defaultCharset()))) .paymentIntentClientSecret(paymentIntentClientSecret) .paymentSourceId(paymentSourceId) + .paymentSourceReusable(paymentSourceReusable) .build() ).enqueue(object : ApolloCall.Callback() { override fun onFailure(e: ApolloException) { diff --git a/app/src/main/java/com/kickstarter/viewmodels/projectpage/LatePledgeCheckoutViewModel.kt b/app/src/main/java/com/kickstarter/viewmodels/projectpage/LatePledgeCheckoutViewModel.kt index 29d5f99ab2..61dcdb1096 100644 --- a/app/src/main/java/com/kickstarter/viewmodels/projectpage/LatePledgeCheckoutViewModel.kt +++ b/app/src/main/java/com/kickstarter/viewmodels/projectpage/LatePledgeCheckoutViewModel.kt @@ -248,7 +248,8 @@ class LatePledgeCheckoutViewModel(val environment: Environment) : ViewModel() { apolloClient.completeOnSessionCheckout( checkoutId = checkoutId ?: "", paymentIntentClientSecret = clientSecret, - paymentSourceId = if (selectedCard == newStoredCard) null else selectedCard.id() ?: "" + paymentSourceId = if (selectedCard == newStoredCard) null else selectedCard.id() ?: "", + paymentSourceReusable = true ).asFlow().map { iDRequiresActionPair -> if (iDRequiresActionPair.second) { mutablePaymentRequiresAction.emit(clientSecret)