From 54ec4985e31b8c71809a7751baf84d5a8634feeb Mon Sep 17 00:00:00 2001 From: Michael Shafrir <45020849+mshafrir-stripe@users.noreply.github.com> Date: Tue, 22 Oct 2019 12:24:46 -0400 Subject: [PATCH] Enable specifying Payment Method type to use in UI components (#1738) - Make `PaymentSessionConfig#setPaymentMethodTypes()` public - Make `PaymentMethodsActivityStarter.Args.Builder#setPaymentMethodTypes()` public - Make `AddPaymentMethodActivityStarter.Args.Builder#setPaymentMethodType()` public --- .../com/stripe/android/PaymentSessionConfig.kt | 11 ++++++++--- .../view/AddPaymentMethodActivityStarter.kt | 18 ++++++++++++------ .../view/PaymentMethodsActivityStarter.kt | 13 ++++++++++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/stripe/src/main/java/com/stripe/android/PaymentSessionConfig.kt b/stripe/src/main/java/com/stripe/android/PaymentSessionConfig.kt index a7d9df094d3..9da671de248 100644 --- a/stripe/src/main/java/com/stripe/android/PaymentSessionConfig.kt +++ b/stripe/src/main/java/com/stripe/android/PaymentSessionConfig.kt @@ -88,13 +88,18 @@ data class PaymentSessionConfig internal constructor( return this } - // TODO(mshafrir-stripe): make public /** * @param paymentMethodTypes a list of [PaymentMethod.Type] that indicates the types of - * Payment Methods that the customer can select or add via the Stripe UI components. + * Payment Methods that the customer can select or add via Stripe UI components. + * + * The order of the [PaymentMethod.Type] values in the list will be used to + * arrange the add buttons in the Stripe UI components. They will be arranged vertically + * from first to last. + * + * Currently only [PaymentMethod.Type.Card] and [PaymentMethod.Type.Fpx] are supported. * If not specified or empty, [PaymentMethod.Type.Card] will be used. */ - internal fun setPaymentMethodTypes(paymentMethodTypes: List<PaymentMethod.Type>): Builder { + fun setPaymentMethodTypes(paymentMethodTypes: List<PaymentMethod.Type>): Builder { this.paymentMethodTypes = paymentMethodTypes return this } diff --git a/stripe/src/main/java/com/stripe/android/view/AddPaymentMethodActivityStarter.kt b/stripe/src/main/java/com/stripe/android/view/AddPaymentMethodActivityStarter.kt index 6ee98d96c5c..f21de1b57b9 100644 --- a/stripe/src/main/java/com/stripe/android/view/AddPaymentMethodActivityStarter.kt +++ b/stripe/src/main/java/com/stripe/android/view/AddPaymentMethodActivityStarter.kt @@ -42,7 +42,7 @@ class AddPaymentMethodActivityStarter internal constructor( private var shouldRequirePostalCode: Boolean = false private var isPaymentSessionActive = false private var shouldInitCustomerSessionTokens = true - private var paymentMethodType: PaymentMethod.Type? = null + private var paymentMethodType: PaymentMethod.Type? = PaymentMethod.Type.Card private var paymentConfiguration: PaymentConfiguration? = null @LayoutRes private var addPaymentMethodFooter: Int = 0 @@ -65,6 +65,17 @@ class AddPaymentMethodActivityStarter internal constructor( return this } + /** + * Optional: specify the [PaymentMethod.Type] of the payment method to create based on + * the customer's input (i.e. the form that will be presented to the customer). + * If unspecified, defaults to [PaymentMethod.Type.Card]. + * Currently only [PaymentMethod.Type.Card] and [PaymentMethod.Type.Fpx] are supported. + */ + fun setPaymentMethodType(paymentMethodType: PaymentMethod.Type): Builder { + this.paymentMethodType = paymentMethodType + return this + } + internal fun setIsPaymentSessionActive(isPaymentSessionActive: Boolean): Builder { this.isPaymentSessionActive = isPaymentSessionActive return this @@ -77,11 +88,6 @@ class AddPaymentMethodActivityStarter internal constructor( return this } - internal fun setPaymentMethodType(paymentMethodType: PaymentMethod.Type): Builder { - this.paymentMethodType = paymentMethodType - return this - } - internal fun setPaymentConfiguration( paymentConfiguration: PaymentConfiguration? ): Builder { diff --git a/stripe/src/main/java/com/stripe/android/view/PaymentMethodsActivityStarter.kt b/stripe/src/main/java/com/stripe/android/view/PaymentMethodsActivityStarter.kt index f70721330ec..7759590d164 100644 --- a/stripe/src/main/java/com/stripe/android/view/PaymentMethodsActivityStarter.kt +++ b/stripe/src/main/java/com/stripe/android/view/PaymentMethodsActivityStarter.kt @@ -77,7 +77,18 @@ class PaymentMethodsActivityStarter : ActivityStarter<PaymentMethodsActivity, Ar return this } - internal fun setPaymentMethodTypes( + /** + * @param paymentMethodTypes a list of [PaymentMethod.Type] that indicates the types of + * Payment Methods that the customer can select or add via Stripe UI components. + * + * The order of the [PaymentMethod.Type] values in the list will be used to + * arrange the add buttons in the Stripe UI components. They will be arranged vertically + * from first to last. + * + * Currently only [PaymentMethod.Type.Card] and [PaymentMethod.Type.Fpx] are supported. + * If not specified or empty, [PaymentMethod.Type.Card] will be used. + */ + fun setPaymentMethodTypes( paymentMethodTypes: List<PaymentMethod.Type> ): Builder { this.paymentMethodTypes = paymentMethodTypes