#pupilcp_api

1 messages · Page 1 of 1 (latest)

vale domeBOT
#

👋 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.

wet grove
stone pumice
#

How long does it usually take to get the final result in the processing state?

wet grove
#

This depends on how fast the customer completes the 3DS

stone pumice
#

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

wet grove
#

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

stone pumice
#

The return_url provided when creating the payment intent

wet grove
#

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

stone pumice
#

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
}

wet grove
#

Could you share the timestamp or request ID (req_xxx) when you made the request to check the Payment Intent status?

stone pumice
#

Please wait a moment

#

timestamp: 1727538721

wet grove
#

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)?

stone pumice
#

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

wet grove
#

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

#

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

stone pumice
#

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?

wet grove
#

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 in requires_capture (manual capture) or succeeded (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

stone pumice
#

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?

wet grove
#

Yes, that's right!

stone pumice
#

I get it, thanks