Skip to content

Crash on 3D Secure #2221

@GioPan04

Description

@GioPan04

Describe the bug
When I try to add a with 3d secure enabled and I complete the setup, once the webview is closed and the user is taken back to the app, the app crashes with the following error:

E/AndroidRuntime(23745): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/stripe/android/payments/PaymentFlowResult$Unvalidated$Companion;
E/AndroidRuntime(23745): 	at com.stripe.android.payments.PaymentFlowResult$Unvalidated.<clinit>(Unknown Source:0)
E/AndroidRuntime(23745): 	at com.stripe.android.view.PaymentAuthWebViewActivityViewModel.getPaymentResult$payments_core_release(SourceFile:1)
E/AndroidRuntime(23745): 	at com.stripe.android.view.PaymentAuthWebViewActivity.onCreate(SourceFile:102)
E/AndroidRuntime(23745): 	at android.app.Activity.performCreate(Activity.java:9002)
E/AndroidRuntime(23745): 	at android.app.Activity.performCreate(Activity.java:8980)
E/AndroidRuntime(23745): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1526)
E/AndroidRuntime(23745): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4030)
E/AndroidRuntime(23745): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4235)
E/AndroidRuntime(23745): 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:112)
E/AndroidRuntime(23745): 	at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:174)
E/AndroidRuntime(23745): 	at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:109)
E/AndroidRuntime(23745): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:81)
E/AndroidRuntime(23745): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2636)
E/AndroidRuntime(23745): 	at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(23745): 	at android.os.Looper.loopOnce(Looper.java:232)
E/AndroidRuntime(23745): 	at android.os.Looper.loop(Looper.java:317)
E/AndroidRuntime(23745): 	at android.app.ActivityThread.main(ActivityThread.java:8705)
E/AndroidRuntime(23745): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(23745): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
E/AndroidRuntime(23745): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
E/AndroidRuntime(23745): Caused by: java.lang.ClassNotFoundException: com.stripe.android.payments.PaymentFlowResult$Unvalidated$Companion

I have correctly setup the proguard rules as stated in the README.

-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivity$g
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Args
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter$Error
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningActivityStarter
-dontwarn com.stripe.android.pushProvisioning.PushProvisioningEphemeralKeyProvider
-dontwarn kotlinx.parcelize.Parceler$DefaultImpls
-dontwarn kotlinx.parcelize.Parceler
-dontwarn kotlinx.parcelize.Parcelize
# Keep Stripe classes
-keep class com.stripe.** { *; }

To Reproduce
Steps to reproduce the behavior:

  1. Open a payment sheet in setup mode as the intent mode
  2. Use a card with 3d secure enabled (like 4000 0027 6000 3184)
  3. Complete the 3d secure auth if required

Expected behavior
Don't crash

Smartphone / tablet

  • Device: any
  • OS: Android 14-15
  • Package version: 12.0.2
  • Flutter version 3.35.1

Video example:

Screen.Recording.2025-09-17.at.23.12.45.mov

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions