App crashes when triggering the 3D secure 2 window with the following logcat:
2020-08-12 15:35:24.812 2914-3400/com.example.app.debug E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-4
Process: com.example.app.debug, PID: 2914
com.stripe.android.stripe3ds2.exceptions.SDKRuntimeException: SDK app id is not available
at com.stripe.android.stripe3ds2.init.m.a(Unknown Source:32)
at com.stripe.android.stripe3ds2.transaction.b$b.getSdkAppId(Unknown Source:6)
at com.stripe.android.StripePaymentController.begin3ds2Auth(StripePaymentController.kt:395)
at com.stripe.android.StripePaymentController.handleNextAction(StripePaymentController.kt:299)
at com.stripe.android.StripePaymentController$startAuth$1.onSuccess(StripePaymentController.kt:94)
at com.stripe.android.StripePaymentController$startAuth$1.onSuccess(StripePaymentController.kt:92)
at com.stripe.android.ApiOperation.dispatchResult(ApiOperation.kt:39)
at com.stripe.android.ApiOperation.access$dispatchResult(ApiOperation.kt:13)
at com.stripe.android.ApiOperation$execute$1$1.invokeSuspend(ApiOperation.kt:32)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8019)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Call Stripe#handleNextActionForPayment(activity, clientSecret) with a payment method that requires 3DS2
For my case I used this test card: 4000000000003220
Android 10 (Q)
Gradle dependency
12.6.0
@ahqmrf thanks for filing. Can you reliably reproduce this crash?
Yes. Do you need any more information? @mshafrir-stripe
@ahqmrf yes, can you share repro steps?
I have mentioned in the description. When a payment is introduced, we get a client secret from backend server and use that for handling 3DS 2 flow. The crash occurs when we call this method Stripe#handleNextActionForPayment(activity, clientSecret).
@ahqmrf what I'd like to clarify is if this is always happening, or only on a particular device model/API version/etc?
This is happening for that specific test card regardless of the device model or API version. I have not tested all other cards where 3DS 2 is required. I have checked that with 4000 0025 0000 3155 the crash does not happen. It is currently happening with 4000 0000 0000 3220
@ahqmrf I merged a fix to our 3DS2 SDK. This should be resolved in the next release.
@mshafrir-stripe thank you! Looking forward to using the next release 馃憤