#rasgo.cc-3ds-setup
1 messages · Page 1 of 1 (latest)
To set p cards with 3ds authentication without payment, you should follow this guide for using setup intents: https://stripe.com/docs/payments/save-and-reuse
however, be aware that any future payment might still require authentication, so you'll need to be prepared with a recovery flow
should I use the SetupIntents and not the PaymentIntents then?
Currently my "recovery" flow is quite simple but not ideal: whenever a payment fails (invoice gets "incomplete") I'm sending the customer a Stripe-hosted link so he can complete the payment. When using this Stripe-hosted link (Checkout), is it possible that the customer might have to authenticate his card later on as well?
Ok hold on, lets take a step back, what is your main payment flow here?
credit cards only. so the flow goes like this: user adds credit card (ie card gets attached to customer), subscription is created, invoice created and payment is attempted
recurring payments (SaaS)
You mentioned checkout. are you using Stripe Checkout to create these subscriptions?
No, the subscription is created through the API. I only use Stripe Checkout as a failover, because my website is not handling the 3D secure, I just send the user the Stripe Checkout / Stripe-hosted link of the invoice so he can complete the payment
On the frontend Im using Stripe Elements Card too
My understanding is that you need to use SetupIntents to collect card details and do 3DS upfront, if you do, we'll be able to skip 3DS on most invoices (though some banks will still require it). When you get an invoice that requires action, you get the customer back on session and they can pay the invoice on the hosted invoice page (totally unrelated to Checkout really). That is the right integration path @still sage and seems like what you are doing already
@hoary jasper thank you! Instead of using the Stripe-hosted invoice page, I'd wish at some point to integrate the same flow on my website though (open popup with bank confirmation or something like that) and proceed with the rest of the things (create subscription etc). Im still confused about using SetupIntents vs PaymentIntents though. Both seem to be appropriate to deal with 3DS. Any reason why I should opt or SetupIntents other than PaymentIntents?
@still sage I worry you're mixing up a bit of every words and products together so it's hard to help
You said you are currently attaching the PaymentMethod via paymentMethods.attach() and later having an invoice. Is that what you do? Are you using Subscriptions instead?
Can I ask you to summarize your exact payment flow?
Yes, I'm using subscriptions. But before, if the user doesnt have any payment method I'm asking details for a credit card, so that payment method is created first, attached to the user and set as default payment method. Then I create the subscription which generates an invoice which payment is attempted with default payment method
yeah okay that's your issue :p
^ that's the old guide, that likely maps what you were doing
Why aren't you using Checkout to start the subscription for you? Is there a reason or you just haven't looked at that product yet?
I believe I haven't looked at it yet, the implementation I have at the moment was initially developed in 2018 I believe
I thought the hosted Stripe invoice was part of the Checkout, isn't it?
it is not, they are entirely separate/unrelated products
so yeah, my advice is: rip out most of your integration and use Checkout! It's sooooo much easier
there's no extra fee asssociated to Checkout?
no
ok great! thanks for suggesting it. I was already planning to re-write the code to accept payments but this might be indeed the best option