#deondk-3DS
1 messages · Page 1 of 1 (latest)
Unfortunately you cannot tell if 3DS is required at that point.
Going to put your reply here
Then how would I know to let the transaction continue or not?
is there any variable in the paymentintent I can look for?
At what point?
after creating the paymentintent
Unfortunately it looks like you can't tell until you attempt to confirm the PaymentIntent
I am unfamiliar with your module but it sounds like you still have access to the PaymentIntent. Can you see the next_action and next_action.redirect_to_url properties?
this is what I see:
{<Stripe.PaymentIntent@62932632 id=pi_3JmGLW2Z7qPIBjK41XtXNq7G> JSON: {
"id": "pi_3JmGLW2Z7qPIBjK41XtXNq7G",
"object": "payment_intent",
"amount": 500,
"amount_capturable": 0,
"amount_received": 0,
"application": "ca_JFiug6dTrAjd06KVTsqxf3UEKA80oI9z",
"application_fee_amount": 0,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "automatic",
"charges": {
"object": "list",
"data": [],
"has_more": false,
"url": "/v1/charges?payment_intent=pi_3JmGLW2Z7qPIBjK41XtXNq7G"
},
"client_secret": "pi_3JmGLW2Z7qPIBjK41XtXNq7G_secret_1dZhLdajNiw4MnZbbAklka4kQ",
"confirmation_method": "automatic",
"created": 1634642346,
"currency": "gbp",
"customer": null,
"description": "LMS PAY Payment BY 271554",
"invoice": null,
"last_payment_error": null,
"livemode": false,
"metadata": {},
"next_action": {
"redirect_to_url": null,
"type": "use_stripe_sdk"
},
"on_behalf_of": null,
"payment_method": "pm_1JmGLL2Z7qPIBjK4eOSJ7NG8",
"payment_method_options": {
"card": {
"request_three_d_secure": "automatic"
}
},
"payment_method_types": [
"card"
],
"receipt_email": null,
"review": null,
"setup_future_usage": null,
"shipping": null,
"source": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "requires_action",
"transfer_data": null,
"transfer_group": null,
"allowed_source_types": null
}}
I can see status = "requires_action"
Thank you. Let me check in to if there is anything else you can do here
Unfortunately I am not finding much that could be helpful for a workaround and I am unsure what your capabilities on this are.
I would reach out to the developers of this library. They will likely have a better idea of what if anything you can do here. Apologies, should have pushed for that upfront.
Ah gotcha. Sorry to hear.
so we have found now that there were some 3DS payments that went through as success on our systems
is there any way to filter these payments on stripe dashboards to only view incomplete payments?
I believe so, let me check how
Was about to say filter on status of Incomplete
What are you trying to do with that?
I want to export only incomplete payments
regarding the 3Ds can I not look for the requires_action variable
Not look at it how?
And yes it looks like you would have to export all and manually filter after
I get that back from stripe service so I can query that variable for the status field and then based on that continue or stop
Interesting. My incomplete payment from testing today is in my sheet.
Checking that field would be a good way to tell if 3DS is required after trying to confirm it.
so If I want to implement 3DS on my outdated sdk is there a way I send the user to a webview for 3DS and getting a success url back?
for some reason it keeps on exporting all my transactions irrespective of my filter
Hi, please bear with me a moment while I get caught up on this thread.
I believe the return_url that you pass could be the success url that you're looking for:
https://stripe.com/docs/payments/3d-secure#when-to-use-3d-secure
yeah but Im using an outdated sdk in Xamarin so need some kind of way to know whether the card needs 3DS from paymentIntent then after that send him to a url
how would I know where to send user based on paymentIntent
The only way I can think of is what Pompey already mentioned. You'll need to try confirming the paymentInent and see if it moves into a requires_action status.
yes but how do I know where to send user for 3Ds in webview?
I believe it's the url nested inside of the next_action attribute as mentioned in the above linked document.
https://stripe.com/docs/payments/3d-secure#manual-redirect
ok will it be populated after being confirmed?
actually I dont see a next_action in my paymentIntent
actually sorry I see it but it is null
And what is the status of that paymentIntent?
{<Stripe.PaymentIntent@62932632 id=pi_3JmGLW2Z7qPIBjK41XtXNq7G> JSON: {
"id": "pi_3JmGLW2Z7qPIBjK41XtXNq7G",
"object": "payment_intent",
"amount": 500,
"amount_capturable": 0,
"amount_received": 0,
"application": "ca_JFiug6dTrAjd06KVTsqxf3UEKA80oI9z",
"application_fee_amount": 0,
"canceled_at": null,
"cancellation_reason": null,
"capture_method": "automatic",
"charges": {
"object": "list",
"data": [],
"has_more": false,
"url": "/v1/charges?payment_intent=pi_3JmGLW2Z7qPIBjK41XtXNq7G"
},
"client_secret": "pi_3JmGLW2Z7qPIBjK41XtXNq7G_secret_1dZhLdajNiw4MnZbbAklka4kQ",
"confirmation_method": "automatic",
"created": 1634642346,
"currency": "gbp",
"customer": null,
"description": "LMS PAY Payment BY 271554",
"invoice": null,
"last_payment_error": null,
"livemode": false,
"metadata": {},
"next_action": {
"redirect_to_url": null,
"type": "use_stripe_sdk"
},
"on_behalf_of": null,
"payment_method": "pm_1JmGLL2Z7qPIBjK4eOSJ7NG8",
"payment_method_options": {
"card": {
"request_three_d_secure": "automatic"
}
},
"payment_method_types": [
"card"
],
"receipt_email": null,
"review": null,
"setup_future_usage": null,
"shipping": null,
"source": null,
"statement_descriptor": null,
"statement_descriptor_suffix": null,
"status": "requires_action",
"transfer_data": null,
"transfer_group": null,
"allowed_source_types": null
}}
status = "requires_action"
so as in interim solution I can check status field...if not = "succeeded" then cancel transaction
but still need some help to create a long term solution to handle 3Ds
Ah, I'm not seeing a return_url being specified when you're creating/confirming the paymentIntent. You'll need to pass a value for this to indicate to the API that you intend to handle the redirect.
https://stripe.com/docs/api/payment_intents/create#create_payment_intent-return_url
ok so hypothetically if I get a return URL I then Send the app user to a webview to input 3ds how do I then send him back to app with a success message?
if Im inside the app what would my return_url be? should I create a web page for that that handles is?
To clarify:
- You will provide a
return_urlwhen creating the paymentIntent - When the paymentIntent confirms (happens automatically based on the values you're providing) you will check the
statusfield to see if it isrequires_action - If so, you'll check the
next_actionhash on the paymentIntent, particularly you're looking forurlinside of theredirect_to_urlfield. - You'll redirect your customer to the url found in Step 3
- Once your customer completes the 3DS flow they'll be sent back to the
return_urlthat you provided.
You'll likely want to it to be some sort of confirmation screen/page that confirms the payment was successful and displays a message accordingly.
ok will have to think about this
because I am in an app...
not sure how I will handel comms between the webview and app
I'm not certain if it's supported by the platform you're using to build your app, but you might be able to pass an app style uri as your return_url so it attempts to redirect to a screen in your app.
https://www.w3.org/TR/app-uri/
hey there just catching up with this so @vague kite can step away 👋
does this look like a valid 3DS url
i deleted you message becasue others can access those, you should not share them
but yes that is the sort of URL one would expect
@wraith willow Not sure what you mean by comms here, but the idea would be setting the return_url when you confirm as @vague kite mentioned, then redirect your customer to the URL provided. When they complete the action flow via the webview, they will be sent to the return_url you provide. which can be eg an app deeplink
I suggest you work through trying to build this and let us know when you encounter issues
ok I will do thanks
@wraith willow just for our info, can you share the exact package you're using for this?
Hello! I'm taking over for @nimble cape, let me get caught up...