#WachiGO
1 messages · Page 1 of 1 (latest)
From this screenshot, I can only see that Payment Result failed. Can you share the Setup Intent or Payment Intent used in Android SDK and describe what the problem is?
"id": "seti_1MjyC5FownbLmm9qC5Rgxi5g",
Do you have any error message at the frontend?
com.stripe.android.core.exception.APIException
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel.postResult(PaymentLauncherViewModel.kt:242)
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel.access$postResult(PaymentLauncherViewModel.kt:52)
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel$onPaymentFlowResult$1$2$1.invokeSuspend(PaymentLauncherViewModel.kt:208)
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel$onPaymentFlowResult$1$2$1.invoke(Unknown Source:8)
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel$onPaymentFlowResult$1$2$1.invoke(Unknown Source:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:169)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1)
at com.stripe.android.payments.paymentlauncher.PaymentLauncherViewModel$onPaymentFlowResult$1.invokeSuspend(PaymentLauncherViewModel.kt:207)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8741)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
i'm not sure this stack trace can help you or not
the problem is we just publish application to google play/app store last week and we found no any setupintent that require 3ds is success.
my guess is 3DS from Thailand do not work for Stripe
have you tried non-Thai card?
we have no non-Thai card with 3DS
we tested with test card on test env and it works fine
Hi @carmine sage are you using PaymentSheet in your android app?
I used CardFormView
CardFormView is the same thing I used in my flutter app and found this issue
OK. Did you call handleNextActionForSetupIntent() to trigger the 3DS?
No. just confirm. normally if it need 3DS, the SDK will automatic open 3DS webview.
Can you share with me your flutter code?
this is my Android code
And what version of SDK are you using?
for Flutter the SDK version is 8.0.0 and 9.0.0
i already create issue on github page
You mean stripe-android sdk version 9.0.0 ?
it's flutter
implementation 'com.stripe:stripe-android:20.19.5'
the above is android
OK, that's the latest version of Stripe Android SDK
So after you call confirmSetupIntent, did the Android SDK launch the 3DS authentication?
for test card from Stripe is yes. it work as I expected
for Debit card and 3DS on production it throws an error
Does this problem only happen in Android? Since you are using flutter I'm assuming you have an iOS app as well?
I found the problem on Flutter first and then Stripe staff in discord told me Flutter SDK is not official one and He cannot help.
And then I report this issue to Flutter Stripe github page and they told me to report Stripe.
just to prove this issue come from which side. Stripe official SDK or Flutter Stripe (3rd party)
That's why I tried to reproduce on Android SDK
actually I found this issue on both Android and iOS
It's hard to tell, even though the log shows the error is raised from Stripe Android SDK, the detailMessage and requestId are not set. It could be a bug in the Stripe Android SDK, it's possible that the Flutter SDK didn't pass correct data to Stripe Android SDK and therefore the error.
You can try the same card with Checkout Session and if you are getting the same result?
this is my android project i used to reproduce
can I create Checkout Session from Stripe dashboard
You need to write some code to create a checkout session
Or you can create a payment link from Dashboard https://dashboard.stripe.com/payment-links
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
OK. I can't read Thai. Is this a setup mode checkout session or payment mode checkout session?
Did you try using the same card in mobile app to confirm a PaymentIntent before?
Never. Use to confirm setup intent only
If possible, let's do two more testing
- Use this card to confirm a PaymentIntent in mobile
- Use this card to complete a setup mode Checkout session in web
Also about this for Debit card and 3DS on production it throws an error -> did you see the 3ds authentication page pops up in your app?
No 3ds authentication page popup
It throws an error immediately
And nothing happen
You mean the paymentResult returns Failed ?
Yes
OK, it returns Failed and it didn't crash the app right?
Can we keep this thread open. Your request might take time
Yes just return fail no app crash
Sure. I'll leave this thread open
checkout session is not a same thing as payment link right?
Checkout Session and Payment Links are two different Stripe products, but Payment Link use Checkout Session under the hood
This thread has been archived. If you need help with anything else please ask in #dev-help or contact Stripe Support: https://support.stripe.com/contact
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Hi
i'm able to comment now
I just finish reproduce this issue on Payment Intent and Checkout session
For Payment Intent, I got this error when confirm payment intent with credit card form and the payment intent id is pi_3Ml5jUFownbLmm9q0bacTT5h
For checkout session, it show 3DS as I expected
what I can do next to fix this issue on mobile end
Okie so to summarize:
- Checkout on web works fine with the same card
- PaymentIntent and SetupIntent doesn't work with cardFormView, via Flutter
Correct?
Do you have any other card to test other than this specific Thai debit card?
via Flutter and Android
- Flutter SDK on iOS and Android didn't work
- Android Native SDK didn't work
- iOS didn't test yet
It is very likely because of the card. I would suggest try another 3DS card then. Btw did our provided 3DS cards work with your test mode?
ie. the cards here
yup. 3DS cards work fine on my test mode on both android and ios
i have no idea why on real card it works on payment link and checkout session but didn't work on mobile
it's the card issuer bank's 3DS website
as I know for 3DS it has no any specific configure for 3DS
Each bank has their own website, and some bank could have issues with their implementation
There is another thing I would test
testing the same card against PaymentSheet on mobile
PaymentSheet is our newer and recommended mobile components and it works more similar to Checkout in Web (more than cardFormView)
ok. might take some time. i will update the result on this thread
pi_3Ml6WDFownbLmm9q0VJihhFl_secret_zXFCjiGuTp9dUDQCnmuSp05H5
i think it's the same issue on payment sheet
Hi! I'm taking over this thread.
Are you doing tests in live mode?
Do not use real card details. Testing in live mode using real payment method details is prohibited by the Stripe Services Agreement. Use your test API keys and the card numbers below.
https://stripe.com/docs/testing#use-test-cards
Can you try in test mode with one test card on the link above?
I already tested in test mode
and it works fine for all scenario
this issue happens only on real card that require 3ds action
my guess is happen only on 3DS from Thailand
If it works in test mode then it should be good. But I don't know about this specific issue, maybe you could ask Stripe support directly: https://support.stripe.com/contact
Does it has any require 3DS card be in succeed state from Android or iOS SDK?
Sorry I'm not sure I understand your question. Can you rephrase?
I just want to know is there any 3DS card from Thailand that do authentication on mobile pass to success state
We have two test cards from Thailand
And many tests cards specifically for 3DS: https://stripe.com/docs/testing#regulatory-cards