#valerii-setupintent-3ds
1 messages ยท Page 1 of 1 (latest)
๐ Please bear with me, the server is extremely busy and I'm helping 15 other people already, I'll come back to you as soon as I can
Hi ๐
- Stripe does support collecting 3DS authentication when using Setup Intents. You can use custom Radar rules to trigger 3DS authentication.
- I cannot speak to that, however your integration should be prepared to bring the customer back on-session to authenticate a payment if required.
valerii-setupintent-3ds
Hello @gritty niche ! Thanks for your response. I would like to clarify few things:
-
My problem is not with triggering the 3DS explicitly. I mean, if I use SetupIntent approach (as I described) and even after customer successfully passed 3DS authentication on the front-end side and saved card as a payment method - I cannot capture PaymentIntent on the back-end side (using saved payment method) because Stripe returns requires_action status code. In case Stripe actually supports SetupIntent in combination with 3DS cards - what is recommended approach to implement it (assuming our current approach is not correct)?
-
What is recommended approach to handle such situations (assuming that I am trying to charge customer's card in a background)? Should I require customer to pass 3DS authentication per each transaction? I think, in that case usage of the SetupIntent does not bring any benefits, but maybe I am missing something
Can you give an example PaymentIntent id pi_123 for #1?
Overall though, it's just how banks/3DS work really. You can collect card details and do 3DS upfront with a SetupIntent, there's no guarantee that the bank won't require 3DS again for a future payment or just decline. In that case you get your customer back "on session" on your app
sure, pi_3LuEhqHrxLAaYjng0kYZmjK6
but what is recommended approach to get my customer back "on session"? I am just trying to follow the best Stripe recommendations
there's no specific recommendation, that part is completely up to you. Maybe you email them or text them, we don't really know the relationship you have with your own customers
And yeah looking at that PaymentIntent, it looks like it's really just the bank requiring 3DS again in that case.
But you're missing 2 things here
1/ You never passed off_session: true when you created/confirmed the PaymentIntent.
2/ There's no reason for an integration to collect card details via a SetupIntent, and a few minutes later immediately charge the card
Why are you using SetupIntent if you are going to charge their card right after anyways? Why don't you use PaymentIntent upfront?
- I use the following code to create PaymentIntent (Java)
PaymentIntentCreateParams.builder()
.setSetupFutureUsage(PaymentIntentCreateParams.SetupFutureUsage.OFF_SESSION) ```
Is it not the same as setting off_session to true explicitly?
2) basically, we need to charge customer immediately and we need to save the customer's payment details for future payments. I thought that usage of the SetupIntent makes sense in that case. Which approach is better for my use case?
1/ no that's totally different and unrelated. This is only useful when collecting new payment method details and irrelevant here
2/ yeah no, this is sadly quite wrong
If you charge someone immediately you should never use SetupIntents at all
So really I think what you want is to remove the SetupIntent step entirely here and always use PaymentIntent
in that case having setup_future_usage is the right approach
ok, I will try that approach, thanks a lot for your help!