#joe-sataapon_api
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/1382199705252921436
📝 Have more to share? Add more details, code, screenshots, videos, etc. below.
I’m working on integrating credit card payments with Stripe. Our current flow is:
-
The backend creates the payment method.
-
The backend creates the Payment Intent (we control 3DS/non-3DS behavior and we skip confirm ourselves).
-
For 3DS transactions:
3.1 The backend calls capture or cancel immediately.
-
For non-3DS transactions:
4.1 The frontend handles 3DS (if applicable).
4.2 The backend listens to the payment_intent.amount_capturable_updated event and then calls capture or cancel.
-
For both 3DS and non-3DS flows, we listen to the payment_intent.succeeded and payment_intent.failed events to update the final status of the capture.
I have a few questions:
-
When creating the Payment Intent, is that the point at which the bank places a hold on the amount?
-
When we call capture, does Stripe return a response immediately and then continue processing asynchronously (e.g., notifying us via webhook)? I want to confirm whether the response from Stripe is immediate.
-
Similarly, when we call cancel, does Stripe return a response immediately and then process the cancellation in the background, notifying us via webhook?
-
For non-3DS transactions, should we call capture immediately after receiving the response from the Payment Intent, or is it recommended to rely on the webhook (payment_intent.amount_capturable_updated) before capturing?
-
Does the payment_intent.amount_capturable_updated event indicate that we should now initiate capture?
-
Does the payment_intent.succeeded event confirm that the capture was successful?
-
Does the payment_intent.failed event indicate that the capture failed (even though this is a rare case)?
I want to confirm that the capture flow is happen in asynchronous, this is important to our integration.
Hi will get to your question soon, but are you creating payment method on backend? Are you PCI compliant?
Yes, we are.
- Because you are confirming the same time of creating Payment Intent (I suppose you use confirm=true), yes that's when the bank received the transaction and place a hold
- Depends on the parameter here: https://docs.stripe.com/payments/payment-intents/asynchronous-capture#opt-in-async-capture
- Should be immediate
- Recommend to listen to the webhook
- Yes
- Yes
- Yes
Thank Orakaro.
May I know what is the difference between automatic_async and manual?
Hi! Stepping in for my colleague. manual is related to auth and capture where you place a hold on an eligible payment method to reserve funds that you can capture later. More details here: https://docs.stripe.com/payments/place-a-hold-on-a-payment-method
automatic_async is similar to automatic but it reduces the latency of PaymentIntent confirmations by making the capture operation take place in the background. More details here: https://docs.stripe.com/payments/payment-intents/asynchronous-capture
For manual does the capture call happen in asycronouse?
Sort of because you need to manually do the capture.
Could you help close this thread?
Sure I can do that. Any questions before I close it?
Hello @autumn leaf ,
I forgot to mention that before calling capture, we need to perform a fraud check on our side, so we need to set capture_method=manual.
My question is: when I later call the capture endpoint, does Stripe respond immediately?
What do you mean by immediately?