Skip to content

Commit 6d329ae

Browse files
Add support for cash app afterpay. (#10480)
1 parent c5979c9 commit 6d329ae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+234
-77
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## XX.XX.XX - 20XX-XX-XX
44

5+
### PaymentSheet
6+
* [CHANGED][10480](https://github.com/stripe/stripe-android/pull/10480) Updated Afterpay branding in the US to be Cash App Afterpay.
7+
58
## 21.7.1 - 2025-03-24
69

710
### PaymentSheet

financial-connections/detekt-baseline.xml

-3
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@
2929
<ID>MatchingDeclarationName:ServerDrivenUi.kt$BulletUI</ID>
3030
<ID>MatchingDeclarationName:Type.kt$FinancialConnectionsTypography</ID>
3131
<ID>NestedBlockDepth:InstitutionPickerScreen.kt$private fun LazyListScope.searchResults( isInputEmpty: Boolean, payload: Payload, selectedInstitutionId: String?, onInstitutionSelected: (FinancialConnectionsInstitution, Boolean) -> Unit, institutions: Async&lt;InstitutionResponse>, onManualEntryClick: () -> Unit, onSearchMoreClick: () -> Unit )</ID>
32-
<ID>SwallowedException:PollAttachPaymentAccount.kt$PollAttachPaymentAccount$e: StripeException</ID>
33-
<ID>SwallowedException:PollAuthorizationSessionAccounts.kt$PollAuthorizationSessionAccounts$e: StripeException</ID>
34-
<ID>SwallowedException:PostAuthorizationSession.kt$PostAuthorizationSession$e: StripeException</ID>
3532
<ID>TooManyFunctions:FinancialConnectionsConsumerSessionRepository.kt$FinancialConnectionsConsumerSessionRepository</ID>
3633
<ID>TooManyFunctions:FinancialConnectionsConsumerSessionRepository.kt$FinancialConnectionsConsumerSessionRepositoryImpl : FinancialConnectionsConsumerSessionRepository</ID>
3734
<ID>TooManyFunctions:FinancialConnectionsManifestRepository.kt$FinancialConnectionsManifestRepository</ID>

payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/AfterpayClearpayElementUI.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ fun AfterpayClearpayElementUI(
3434
enabled = enabled,
3535
imageLoader = mapOf(
3636
"afterpay" to EmbeddableImage.Drawable(
37-
if (isClearpay()) {
37+
if (isClearpay(element.currency)) {
3838
R.drawable.stripe_ic_clearpay_logo
3939
} else {
4040
R.drawable.stripe_ic_afterpay_logo
4141
},
42-
if (isClearpay()) {
42+
if (isClearpay(element.currency)) {
4343
R.string.stripe_paymentsheet_payment_method_clearpay
4444
} else {
4545
R.string.stripe_paymentsheet_payment_method_afterpay

payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/AfterpayClearpayHeaderElement.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import kotlinx.coroutines.flow.StateFlow
1515
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
1616
data class AfterpayClearpayHeaderElement(
1717
override val identifier: IdentifierSpec,
18-
override val controller: Controller? = null
18+
override val controller: Controller? = null,
19+
val currency: String?
1920
) : FormElement {
2021
override val allowsUserInteraction: Boolean = false
2122
override val mandateText: ResolvableString? = null
@@ -45,6 +46,9 @@ data class AfterpayClearpayHeaderElement(
4546
const val NO_BREAK_SPACE = "\u00A0"
4647

4748
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
48-
fun isClearpay() = setOf("GB", "ES", "FR", "IT").contains(Locale.current.region)
49+
fun isClearpay(currency: String?) = "GBP".equals(currency, ignoreCase = true)
50+
51+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
52+
fun isCashappAfterpay(currency: String?) = "USD".equals(currency, ignoreCase = true)
4953
}
5054
}

payments-ui-core/src/main/java/com/stripe/android/ui/core/elements/AfterpayClearpayTextSpec.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ data class AfterpayClearpayTextSpec(
1717
@SerialName("api_path")
1818
override val apiPath: IdentifierSpec = IdentifierSpec.Generic("afterpay_text")
1919
) : FormItemSpec() {
20-
fun transform(): FormElement = AfterpayClearpayHeaderElement(apiPath)
20+
fun transform(currency: String?): FormElement = AfterpayClearpayHeaderElement(apiPath, currency = currency)
2121
}

payments-ui-core/src/test/java/com/stripe/android/ui/core/elements/AfterpayClearpayHeaderElementTest.kt

+23-17
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ package com.stripe.android.ui.core.elements
33
import android.app.Application
44
import androidx.test.core.app.ApplicationProvider
55
import com.google.common.truth.Truth.assertThat
6+
import com.stripe.android.testing.LocaleTestRule
7+
import com.stripe.android.ui.core.elements.AfterpayClearpayHeaderElement.Companion.isCashappAfterpay
68
import com.stripe.android.ui.core.elements.AfterpayClearpayHeaderElement.Companion.isClearpay
79
import com.stripe.android.uicore.elements.IdentifierSpec
10+
import org.junit.Rule
811
import org.junit.Test
912
import org.junit.runner.RunWith
1013
import org.robolectric.RobolectricTestRunner
@@ -13,10 +16,14 @@ import java.util.Locale
1316
@RunWith(RobolectricTestRunner::class)
1417
class AfterpayClearpayHeaderElementTest {
1518

19+
@get:Rule
20+
val localeRule = LocaleTestRule()
21+
1622
@Test
1723
fun `Verify label is correct`() {
1824
val element = AfterpayClearpayHeaderElement(
1925
IdentifierSpec.Generic("test"),
26+
currency = "EUR",
2027
)
2128

2229
assertThat(
@@ -28,6 +35,7 @@ class AfterpayClearpayHeaderElementTest {
2835
fun `Verify infoUrl is correct`() {
2936
val element = AfterpayClearpayHeaderElement(
3037
IdentifierSpec.Generic("test"),
38+
currency = "EUR",
3139
)
3240

3341
assertThat(element.infoUrl)
@@ -36,24 +44,26 @@ class AfterpayClearpayHeaderElementTest {
3644

3745
@Test
3846
fun `Verify infoUrl is updated as locale changes`() {
39-
Locale.setDefault(Locale.UK)
47+
localeRule.setTemporarily(Locale.UK)
4048
val element = AfterpayClearpayHeaderElement(
4149
IdentifierSpec.Generic("test"),
50+
currency = "GBP",
4251
)
4352

4453
assertThat(element.infoUrl)
4554
.isEqualTo("https://static.afterpay.com/modal/en_GB.html")
4655

47-
Locale.setDefault(Locale.FRANCE)
56+
localeRule.setTemporarily(Locale.FRANCE)
4857
assertThat(element.infoUrl)
4958
.isEqualTo("https://static.afterpay.com/modal/fr_FR.html")
5059
}
5160

5261
@Test
5362
fun `Verify infoUrl is localized for GB`() {
54-
Locale.setDefault(Locale.UK)
63+
localeRule.setTemporarily(Locale.UK)
5564
val element = AfterpayClearpayHeaderElement(
5665
IdentifierSpec.Generic("test"),
66+
currency = "GBP",
5767
)
5868

5969
assertThat(element.infoUrl)
@@ -62,9 +72,10 @@ class AfterpayClearpayHeaderElementTest {
6272

6373
@Test
6474
fun `Verify infoUrl is localized for France`() {
65-
Locale.setDefault(Locale.FRANCE)
75+
localeRule.setTemporarily(Locale.FRANCE)
6676
val element = AfterpayClearpayHeaderElement(
6777
IdentifierSpec.Generic("test"),
78+
currency = "EUR",
6879
)
6980

7081
assertThat(element.infoUrl)
@@ -73,19 +84,14 @@ class AfterpayClearpayHeaderElementTest {
7384

7485
@Test
7586
fun `Verify check if clearpay or afterpay`() {
76-
Locale.setDefault(Locale.UK)
77-
assertThat(isClearpay()).isTrue()
78-
79-
Locale.setDefault(Locale.FRANCE)
80-
assertThat(isClearpay()).isTrue()
81-
82-
Locale.setDefault(Locale.Builder().setRegion("ES").build())
83-
assertThat(isClearpay()).isTrue()
84-
85-
Locale.setDefault(Locale.Builder().setRegion("IT").build())
86-
assertThat(isClearpay()).isTrue()
87+
assertThat(isClearpay("GBP")).isTrue()
88+
assertThat(isClearpay("EUR")).isFalse()
89+
}
8790

88-
Locale.setDefault(Locale.US)
89-
assertThat(isClearpay()).isFalse()
91+
@Test
92+
fun `Verify check if cash app afterpay`() {
93+
assertThat(isCashappAfterpay("GBP")).isFalse()
94+
assertThat(isCashappAfterpay("EUR")).isFalse()
95+
assertThat(isCashappAfterpay("USD")).isTrue()
9096
}
9197
}

paymentsheet/detekt-baseline.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<ID>ConstructorParameterNaming:BankFormScreenState.kt$BankFormScreenState$private val _isProcessing: Boolean = false</ID>
66
<ID>CyclomaticComplexMethod:CustomerSheetViewModel.kt$CustomerSheetViewModel$fun handleViewAction(viewAction: CustomerSheetViewAction)</ID>
77
<ID>CyclomaticComplexMethod:PlaceholderHelper.kt$PlaceholderHelper$@VisibleForTesting internal fun specForPlaceholderField( field: PlaceholderField, placeholderOverrideList: List&lt;IdentifierSpec>, requiresMandate: Boolean, configuration: PaymentSheet.BillingDetailsCollectionConfiguration, )</ID>
8-
<ID>CyclomaticComplexMethod:TransformSpecToElements.kt$TransformSpecToElements$fun transform( specs: List&lt;FormItemSpec>, placeholderOverrideList: List&lt;IdentifierSpec> = emptyList(), ): List&lt;FormElement></ID>
8+
<ID>CyclomaticComplexMethod:TransformSpecToElements.kt$TransformSpecToElements$fun transform( metadata: PaymentMethodMetadata?, specs: List&lt;FormItemSpec>, placeholderOverrideList: List&lt;IdentifierSpec> = emptyList(), ): List&lt;FormElement></ID>
99
<ID>EmptyFunctionBlock:PrimaryButtonAnimator.kt$PrimaryButtonAnimator.&lt;no name provided>${ }</ID>
1010
<ID>EmptyFunctionBlock:VerticalModeFormUITest.kt$VerticalModeFormUITest.&lt;no name provided>${}</ID>
1111
<ID>FunctionNaming:PaymentSheetTopBar.kt$@Preview @Composable internal fun PaymentSheetTopBar_Preview()</ID>

paymentsheet/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
<string name="stripe_bank_account_with_last_4">Bank account ····%s</string>
1717
<!-- Text for alert message when user needs to confirm payment in their banking app -->
1818
<string name="stripe_blik_confirm_payment">Confirm the payment in your bank\'s app within %s to complete the purchase.</string>
19+
<!-- This shows the message on Buy Now Pay Later LPM, afterpay. -->
20+
<string name="stripe_cashapp_afterpay_subtitle">Buy now or pay later with Cash App Afterpay</string>
1921
<!-- This shows the message on Buy Now Pay Later LPM, clearpay. -->
2022
<string name="stripe_clearpay_subtitle">Buy now or pay later with Clearpay</string>
2123
<!-- Used as the title for prompting the user if they want to close the sheet -->

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/luxe/TransformSpecToElements.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.stripe.android.lpmfoundations.luxe
22

3+
import com.stripe.android.lpmfoundations.paymentmethod.PaymentMethodMetadata
34
import com.stripe.android.lpmfoundations.paymentmethod.UiDefinitionFactory
45
import com.stripe.android.paymentsheet.forms.PlaceholderHelper.specsForConfiguration
6+
import com.stripe.android.paymentsheet.model.currency
57
import com.stripe.android.ui.core.elements.AddressSpec
68
import com.stripe.android.ui.core.elements.AffirmTextSpec
79
import com.stripe.android.ui.core.elements.AfterpayClearpayTextSpec
@@ -42,6 +44,7 @@ internal class TransformSpecToElements(
4244
private val arguments: UiDefinitionFactory.Arguments,
4345
) {
4446
fun transform(
47+
metadata: PaymentMethodMetadata?,
4548
specs: List<FormItemSpec>,
4649
placeholderOverrideList: List<IdentifierSpec> = emptyList(),
4750
): List<FormElement> {
@@ -53,7 +56,7 @@ internal class TransformSpecToElements(
5356
).flatMap { spec ->
5457
when (spec) {
5558
is StaticTextSpec -> listOf(spec.transform())
56-
is AfterpayClearpayTextSpec -> listOf(spec.transform())
59+
is AfterpayClearpayTextSpec -> listOf(spec.transform(metadata?.stripeIntent?.currency))
5760
is AffirmTextSpec -> listOf(spec.transform())
5861
is EmptyFormSpec -> listOf(EmptyFormElement())
5962
is MandateTextSpec -> listOf(spec.transform(arguments.merchantName))

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/PaymentMethodMetadata.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ internal data class PaymentMethodMetadata(
105105
getUiDefinitionFactoryForExternalPaymentMethod(code)?.createSupportedPaymentMethod()
106106
} else {
107107
val definition = supportedPaymentMethodDefinitions().firstOrNull { it.type.code == code } ?: return null
108-
definition.uiDefinitionFactory().supportedPaymentMethod(definition, sharedDataSpecs)
108+
definition.uiDefinitionFactory().supportedPaymentMethod(this, definition, sharedDataSpecs)
109109
}
110110
}
111111

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/UiDefinitionFactory.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,16 @@ internal sealed interface UiDefinitionFactory {
8282

8383
interface RequiresSharedDataSpec : UiDefinitionFactory {
8484
fun createSupportedPaymentMethod(
85+
metadata: PaymentMethodMetadata,
8586
sharedDataSpec: SharedDataSpec,
8687
): SupportedPaymentMethod
8788

8889
fun createFormHeaderInformation(
90+
metadata: PaymentMethodMetadata,
8991
sharedDataSpec: SharedDataSpec,
9092
incentive: PaymentMethodIncentive?,
9193
): FormHeaderInformation {
92-
return createSupportedPaymentMethod(sharedDataSpec).asFormHeaderInformation(incentive)
94+
return createSupportedPaymentMethod(metadata, sharedDataSpec).asFormHeaderInformation(incentive)
9395
}
9496

9597
fun createFormElements(
@@ -98,6 +100,7 @@ internal sealed interface UiDefinitionFactory {
98100
transformSpecToElements: TransformSpecToElements,
99101
): List<FormElement> {
100102
return transformSpecToElements.transform(
103+
metadata = metadata,
101104
specs = sharedDataSpec.fields,
102105
)
103106
}
@@ -130,6 +133,7 @@ internal sealed interface UiDefinitionFactory {
130133
}
131134

132135
fun supportedPaymentMethod(
136+
metadata: PaymentMethodMetadata,
133137
definition: PaymentMethodDefinition,
134138
sharedDataSpecs: List<SharedDataSpec>,
135139
): SupportedPaymentMethod? = when (this) {
@@ -140,7 +144,7 @@ internal sealed interface UiDefinitionFactory {
140144
is RequiresSharedDataSpec -> {
141145
val sharedDataSpec = sharedDataSpecs.firstOrNull { it.type == definition.type.code }
142146
if (sharedDataSpec != null) {
143-
createSupportedPaymentMethod(sharedDataSpec)
147+
createSupportedPaymentMethod(metadata, sharedDataSpec)
144148
} else {
145149
null
146150
}
@@ -164,6 +168,7 @@ internal sealed interface UiDefinitionFactory {
164168
val sharedDataSpec = sharedDataSpecs.firstOrNull { it.type == definition.type.code }
165169
if (sharedDataSpec != null) {
166170
createFormHeaderInformation(
171+
metadata = metadata,
167172
sharedDataSpec = sharedDataSpec,
168173
incentive = metadata.paymentMethodIncentive,
169174
)

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AffirmDefinition.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ internal object AffirmDefinition : PaymentMethodDefinition {
2929
}
3030

3131
private object AffirmUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
32-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
32+
override fun createSupportedPaymentMethod(
33+
metadata: PaymentMethodMetadata,
34+
sharedDataSpec: SharedDataSpec,
35+
) = SupportedPaymentMethod(
3336
paymentMethodDefinition = AffirmDefinition,
3437
sharedDataSpec = sharedDataSpec,
3538
displayNameResource = UiCoreR.string.stripe_paymentsheet_payment_method_affirm,

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AfterpayClearpayDefinition.kt

+14-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.stripe.android.lpmfoundations.paymentmethod.PaymentMethodMetadata
88
import com.stripe.android.lpmfoundations.paymentmethod.UiDefinitionFactory
99
import com.stripe.android.model.PaymentMethod
1010
import com.stripe.android.paymentsheet.R
11+
import com.stripe.android.paymentsheet.model.currency
1112
import com.stripe.android.ui.core.elements.AfterpayClearpayHeaderElement
1213
import com.stripe.android.ui.core.elements.SharedDataSpec
1314
import com.stripe.android.ui.core.R as UiCoreR
@@ -29,17 +30,26 @@ internal object AfterpayClearpayDefinition : PaymentMethodDefinition {
2930
}
3031

3132
private object AfterpayClearpayUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
32-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
33+
override fun createSupportedPaymentMethod(
34+
metadata: PaymentMethodMetadata,
35+
sharedDataSpec: SharedDataSpec,
36+
) = SupportedPaymentMethod(
3337
paymentMethodDefinition = AfterpayClearpayDefinition,
3438
sharedDataSpec = sharedDataSpec,
35-
displayNameResource = if (AfterpayClearpayHeaderElement.isClearpay()) {
39+
displayNameResource = if (AfterpayClearpayHeaderElement.isClearpay(metadata.stripeIntent.currency)) {
3640
UiCoreR.string.stripe_paymentsheet_payment_method_clearpay
3741
} else {
3842
UiCoreR.string.stripe_paymentsheet_payment_method_afterpay
3943
},
40-
iconResource = UiCoreR.drawable.stripe_ic_paymentsheet_pm_afterpay_clearpay,
41-
subtitle = if (AfterpayClearpayHeaderElement.isClearpay()) {
44+
iconResource = if (AfterpayClearpayHeaderElement.isCashappAfterpay(metadata.stripeIntent.currency)) {
45+
UiCoreR.drawable.stripe_ic_paymentsheet_pm_cash_app_pay
46+
} else {
47+
UiCoreR.drawable.stripe_ic_paymentsheet_pm_afterpay_clearpay
48+
},
49+
subtitle = if (AfterpayClearpayHeaderElement.isClearpay(metadata.stripeIntent.currency)) {
4250
R.string.stripe_clearpay_subtitle.resolvableString
51+
} else if (AfterpayClearpayHeaderElement.isCashappAfterpay(metadata.stripeIntent.currency)) {
52+
R.string.stripe_cashapp_afterpay_subtitle.resolvableString
4353
} else {
4454
R.string.stripe_afterpay_subtitle.resolvableString
4555
},

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AlipayDefinition.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ internal object AlipayDefinition : PaymentMethodDefinition {
2626
}
2727

2828
private object AlipayUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
29-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
29+
override fun createSupportedPaymentMethod(
30+
metadata: PaymentMethodMetadata,
31+
sharedDataSpec: SharedDataSpec,
32+
) = SupportedPaymentMethod(
3033
paymentMethodDefinition = AlipayDefinition,
3134
sharedDataSpec = sharedDataSpec,
3235
displayNameResource = R.string.stripe_paymentsheet_payment_method_alipay,

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AlmaDefinition.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ internal object AlmaDefinition : PaymentMethodDefinition {
2626
}
2727

2828
private object AlmaUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
29-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
29+
override fun createSupportedPaymentMethod(
30+
metadata: PaymentMethodMetadata,
31+
sharedDataSpec: SharedDataSpec,
32+
) = SupportedPaymentMethod(
3033
paymentMethodDefinition = AlmaDefinition,
3134
sharedDataSpec = sharedDataSpec,
3235
displayNameResource = R.string.stripe_paymentsheet_payment_method_alma,

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AmazonPayDefinition.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ internal object AmazonPayDefinition : PaymentMethodDefinition {
2828
}
2929

3030
private object AmazonPayUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
31-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
31+
override fun createSupportedPaymentMethod(
32+
metadata: PaymentMethodMetadata,
33+
sharedDataSpec: SharedDataSpec,
34+
) = SupportedPaymentMethod(
3235
paymentMethodDefinition = AmazonPayDefinition,
3336
sharedDataSpec = sharedDataSpec,
3437
displayNameResource = R.string.stripe_paymentsheet_payment_method_amazon_pay,
@@ -46,6 +49,7 @@ private object AmazonPayUiDefinitionFactory : UiDefinitionFactory.RequiresShared
4649
emptyList()
4750
}
4851
return transformSpecToElements.transform(
52+
metadata = metadata,
4953
specs = sharedDataSpec.fields + localLayoutSpecs,
5054
)
5155
}

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/AuBecsDebitDefinition.kt

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ internal object AuBecsDebitDefinition : PaymentMethodDefinition {
2626
}
2727

2828
private object AuBecsDebitUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
29-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
29+
override fun createSupportedPaymentMethod(
30+
metadata: PaymentMethodMetadata,
31+
sharedDataSpec: SharedDataSpec,
32+
) = SupportedPaymentMethod(
3033
paymentMethodDefinition = AuBecsDebitDefinition,
3134
sharedDataSpec = sharedDataSpec,
3235
displayNameResource = R.string.stripe_paymentsheet_payment_method_au_becs_debit,

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/BacsDebitDefinition.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ internal object BacsDebitDefinition : PaymentMethodDefinition {
3333
}
3434

3535
private object BacsDebitUiDefinitionFactory : UiDefinitionFactory.RequiresSharedDataSpec {
36-
override fun createSupportedPaymentMethod(sharedDataSpec: SharedDataSpec) = SupportedPaymentMethod(
36+
override fun createSupportedPaymentMethod(
37+
metadata: PaymentMethodMetadata,
38+
sharedDataSpec: SharedDataSpec,
39+
) = SupportedPaymentMethod(
3740
paymentMethodDefinition = BacsDebitDefinition,
3841
sharedDataSpec = sharedDataSpec,
3942
displayNameResource = R.string.stripe_paymentsheet_payment_method_bacs_debit,
@@ -68,6 +71,7 @@ private object BacsDebitUiDefinitionFactory : UiDefinitionFactory.RequiresShared
6871
)
6972

7073
return transformSpecToElements.transform(
74+
metadata = metadata,
7175
specs = sharedDataSpec.fields + localFields,
7276
placeholderOverrideList = listOf(
7377
IdentifierSpec.Name,

0 commit comments

Comments
 (0)