#pupilcp_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/1293021936997240892
📝 Have more to share? Add more details, code, screenshots, videos, etc. below.
If the customer didn't complete the 3DS, Stripe will send payment_intent.payment_failed event to notify your system: https://dashboard.stripe.com/events/evt_3Q42lWEmZ3YgtBNv1ibVlivx
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
Stripe will also redirect the customer to the return_url specified in https://dashboard.stripe.com/logs/req_KzNBw23oOTJWjp after customer attempts to perform 3DS. Your system should then check the status of Payment Intent after redirecting to this endpoint
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
How long does it usually take to get the final result in the processing state?
This depends on how fast the customer completes the 3DS
However, in our scenario, we query the 3ds verification result for processing only after the user clicks the complete button.
Stripe redirects to the return_url we provided, and then we query the 3ds verification result
What’s the 3DS verification result for this Payment Intent after redirecting to return_url? It should tell you that 3DS failed at this point
The return_url provided when creating the payment intent
What is the issue here? If the return_url was provided, Stripe would have the redirect_url for you to check the Payment Intent status
We query the result of 3ds verification after stripe redirects to returl_url. At that time, we get the processing status, not the succeed or failed status we should get.
The following is the result of querying 3ds verification at that time
{
"id": "pi_3Q42lWEmZ3YgtBNv1R8K5Z0Q",
"object": "payment_intent",
"amount": 258534,
"amount_capturable": 0,
"amount_details": {
"tip": []
},
"amount_received": 0,
"application": null,
"application_fee_amount": null,
"automatic_payment_methods": null,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "manual",
"charges": {
"object": "list",
"data": [],
"has_more": false,
"total_count": 0,
"url": "/v1/charges?payment_intent=pi_3Q42lWEmZ3YgtBNv1R8K5Z0Q"
},
"client_secret": "pi_3Q42lWEmZ3YgtBNv1R8K5Z0Q_secret_8fbpacOkzCsEDA3SuzgqWhr9P",
"confirmation_method": "automatic",
"created": 1727538062,
"currency": "usd",
"customer": "cus_QvuabXqMT3mOdZ",
"description": "USP2409280941020524207",
"invoice": null,
"last_payment_error": null,
"latest_charge": null,
"livemode": true,
"metadata": {
"payment_method": "stripe_credit_card",
"payment_no": "USP2409280941020524207"
},
"next_action": null,
"on_behalf_of": null,
"payment_method": "pm_1Q42vGEmZ3YgtBNvE4r1Jk4H",
"payment_method_configuration_details": null,
"payment_method_options": {
"card": {
"installments": null,
"mandate_options": null,
"network": null,
"request_three_d_secure": "automatic"
}
},
"payment_method_types": [
"card"
],
"processing": null,
"receipt_email": "leopriyamd@gmail.com",
"review": null,
"setup_future_usage": null,
"shipping": {
"address": {
"city": "Ambler",
"country": "US",
"line1": "218 Hooper Drive",
"line2": "",
"postal_code": "19002",
"state": "PA"
},
"carrier": null,
"name": "Priya punjabi",
"phone": "(267) 250-8229",
"tracking_number": null
},
"source": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "processing",
"transfer_data": null,
"transfer_group": null
}
Could you share the timestamp or request ID (req_xxx) when you made the request to check the Payment Intent status?
Based on the timestamp, the status has changed to requires_payment_method with the latest error of authentication failure.
How did you retrieve the Payment Intent status? I don't see any Payment Intent retrieval request on pi_3Q42lWEmZ3YgtBNv1R8K5Z0Q? I might have missed it. Could you share the request ID (req_xxx)?
I'll try to see if I can find it.
Sorry, I can't find it, there are too many logs and it's hard to find it accurately
I managed to find the retrieval request at this timestamp: https://dashboard.stripe.com/logs/req_phDWCNexnvquFV, but Stripe doesn't store the response of GET request, so I'm unable to tell what the status is at this point of time. Even if the status is in processing, you shouldn't capture the Payment Intent
Sign in to the Stripe Dashboard to manage business payments and operations in your account. Manage payments and refunds, respond to disputes and more.
It would turn the status into requires_payment_method some time later, which the new payment method should be collected
Your server should only capture a Payment Intent when its status is in requires_capture
We believe that the processing status means that the payment has been successful, and this has never happened before. So, 3ds verification may also fail in the processing status, right?
We believe that the processing status means that the payment has been successful
This is incorrect. The payment will only be authorised successfully when the status is inrequires_capture(manual capture) orsucceeded(automatic capture)
When the status is in processing, this means that the authorisation result is not out yet
Your system should only capture the Payment Intent when the status is in requires_capture, not requires_payment_method
But the processing status may also become required_capture or succeed status. In this case, we can handle it through the Payment Failed callback, right?
Yes, that's right!
I get it, thanks