#sanderfish_unexpected
1 messages · Page 1 of 1 (latest)
đź‘‹ Welcome to your new thread!
⏲️ We'll be here soon! Typically we respond in a few minutes, but sometimes we might take a bit longer if the server is busy or if you have a particularly tricky question.
⏱️ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can always start a new thread if you have another question.
đź”— This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1471662083484684289
📝 Have more to share? Add more details, code, screenshots, videos, etc. below.
Here's a screenshot of the 3DS screen when making a payment on https://buy.sander.fish/plain-subscription
It shows EUR 0.00, even though the charge will be 10 USD
When paying with Apple Pay or Google Pay, we're able to pass an amount to the payment sheet
FYI, we do render the Stripe Elements provider <Elements /> with the amount and currency. I tested this with both Card Element and Payment Element, and the issue is the same (https://buy.sander.fish/plain-subscription-with-payment-element)
Hey! Apologies, am getting caught up with on thread, will take a look at this soon!
Hey! Thanks for the wait!
SetupIntents shows a $0 authorization when triggering 3D Secure (3DS) authentication. This occurs because SetupIntents are used to set up payment methods without initially charging the user, which involves placing a $0 authorization on the card.
So there is no way to specify an amount? Like we can do on the Apple Pay / Google Pay sheets?
Hmmm, how are you passing the amount to the Apple Pay and Google Pay Sheet?
We migrated our subscription logic to use setup intents so that we can first validate card details before starting the subscription.
This allowed us to prevent creating "incomplete" subscriptions in the Stripe Dashboard.
Hmmm, taking a look at your initial ask, we actually have a field on the Subscription object that might achieve this
Through the Element provider options amount, I believe
https://docs.stripe.com/api/subscriptions/create#create_subscription-payment_behavior
Use error_if_incomplete if you want Stripe to return an HTTP 402 status code if a subscription’s first invoice can’t be paid.
Have you considered this before?
It has to be used with collection_method: 'charge_automatically'
I remember trying that, but it caused other issues, I believe broke 3DS/SCA?
Use error_if_incomplete if you want Stripe to return an HTTP 402 status code if a subscription’s first invoice can’t be paid. For example, if a payment method requires 3DS authentication due to SCA regulation and further customer action is needed,
Ah I see, do you mean this? That if 3DS happens, it would not allow the Subscription to be started?
Yes
I've been going round and round on this the past few months. Thought we finally found the solution by using setup intents for everything. But the only breaking issue is the $0.00 amount on the 3DS flow.
Also, very annoying that Stripe's 3DS test modal doesn't display this.
considering that all banks I've tried this with in production, show an amount on the 3DS screen
Do you know if this would be any different if we'd use Checkout Sessions?
Yup, I was thinking just that:
Checkout Session on mode:’Subscription’
- Creates the Subscription on the Spot
- Tests if the Card is valid or not, and will return an error if it is not, not allowing a Subscription object to be created
- 3DS would have the payment amount shown
Okay, we will consider that in the future. But will be quite a rewrite.
I'll route between payment intents and setup intents now depending on subscription requirements.
Thanks for your help Teddy
No prob!
@frosty dawn sorry one more thing — would you know a way for me to see the amount in the 3DS flow in test mode?
unfortunately thats not possible in test mode
Its just mainly a test page to authenticate the 3DS request, and we don't tailor it to include additional things like amount or bank names
gotcha — would be helpful to see that added. I found a couple threads online of other people unexpectedly finding out the 3DS flow they built showed $0.00
Yup, I can put that in as a feature request
I can see how that might be helpful
I found a couple threads online of other people unexpectedly finding out the 3DS flow they built showed $0.00
Actually, just out of curiosity, are theses discord threads?
https://subbly.canny.io/feature-requests/p/no-longer-see-the-amount-at-0-during-3d-secure-authentication-but-the-real-amoun
https://laracasts.com/discuss/channels/code-review/stripe-wrongfully-showing-000-amount-to-be-charged
https://laracasts.com/discuss/channels/laravel/problem-with-stripe-3d-secure-prompting-ps000
actually we migrated to setup intents after Stripe support told us it would be appropriate to do so; we had a long ongoing email thread
but nobody mentioned this drawback :/
What Stripe Support said is actually a valid flow. Using SetupIntents to validate the card before creating a Subscription is a common flow, but they could have missed out the point that the 3DS authorisation page would show the $0
By default, Setup Intents are $0 authorization charges sent to the bank to validate card details. It wouldn’t be best practice to display an amount on the 3DS page that does not reflect the actual amount being authorized.
The amount to be paid (e.g., $10) rightfully belongs to the Subscription itself, along with its underlying Invoice (upon finalization) and it's own Payment Intent.