3ds problems timeout error

in my test system, everything works fine. i can simulate a SCA test using the test credit card numbers in the documentation. the new modal window pops up, i enter the 123456 and i’m good.

on the live system, the developer console lists the following error:

Uncaught (in promise) ThreeDSMethodTimeoutError: Three ds method timed out

the SCA modal comes up blank for a moment and then processing continues.

my sdk version is 20241120, and for any number of reasons i am not able to use a later version of the sdk.

what could be the cause of this problem and is there a solution?

thanks in advance.

:waving_hand: I’m Square Dev AI, here to help answer your question!
Based on the information you’ve provided, the following documentation will help answer your question:

Additional Documentation

Sandbox Payments
Verify the Payment
Square Sandbox

If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.
Otherwise one of our Developer Advocates will provide additional assistance shortly.

The error you’re encountering, “ThreeDSMethodTimeoutError,” typically indicates that the 3-D Secure (3DS) method timed out during the Strong Customer Authentication (SCA) process. This can happen for several reasons:

  1. Network Issues: The timeout might be due to network latency or connectivity issues between your application and the 3DS server. Ensure that your network connection is stable and that there are no firewalls or proxies interfering with the communication.

  2. SDK Version: You’re using an older version of the SDK (20241120). While you mentioned that you cannot upgrade, it’s important to note that newer versions might have bug fixes or improvements related to 3DS handling. If possible, consider testing with a newer version in a controlled environment to see if the issue persists.

  3. Configuration Issues: Double-check your configuration settings to ensure that everything is set up correctly for live transactions. This includes verifying that your API keys and other credentials are correctly configured for the production environment.

  4. 3DS Server Response: The issue might also be on the 3DS server side, where the server is not responding in a timely manner. This could be due to high load or other server-side issues.

  5. Browser Compatibility: Ensure that the browser being used in the live environment is compatible with the 3DS process. Some older browsers might not handle the 3DS challenge correctly.

To address the issue, you might want to:

  • Check your network and server logs for any connectivity issues.
  • Ensure that your production environment is configured correctly.
  • If possible, test with a different network or browser to rule out local issues.
  • Contact your payment processor or Square support to see if there are any known issues with the 3DS service.

If these steps do not resolve the issue, you may need to explore alternative solutions or workarounds that do not require upgrading the SDK, such as optimizing network conditions or adjusting timeout settings if possible.

This answer was reviewed by @Bryan-Square.

bryan,

allow me to address these issues one by one.

Network issues - I am not sure what would be interferring with the communication. This is a stable site with a reputable host, what potential ports need to be open in order for this to work? Is there a way to test this aspect of it out?

SDK version – I understand this part of it. But here is what I do not get, you would like me to update it and test in a controlled environment to see if the issue persists. I am not really sure what you are asking here. I have a controlled environment with my application using the existing SDK, and 3ds works fine in my controlled environment using my sandbox credentials. So lets say I update and test in my controlled environment with my sandbox credentials and again it works fine; but once I go to live credentials it fails again. Where are we then? And I’m not even saying I can get there due to other issues unrelated to square.

I have a japanese client who is utilizing a much more current SDK and who is now also having problems with 3ds. The error messages are different and I have not done as deep a dive into that one. But it is hard to imagine that this problem will now go away with the Sdk update. I just do not understand what the point of the sandbox environment if it does not mimic what the live environment is doing with regards to 3ds.

Credentials – they are correct. Live transactions go through fine when there is no 3ds challenge; and I’m not really sure if it is all 3ds transactions, or just this particular card number. It does seem like other people are reporting some problems with their 3ds challenge on this particular website.

3ds server response – I have tested this problem on multiple days at multiple times and the issue exists at all times.

Browser compatibility – again; test 3ds transactions run fine. Same browser, live transaction fails. So not a browser issue.

With regards to the rest of the recommendations, I have looked into changing some of the config values in:

square/square/src/ConfigurationDefaults.php

again without success.

I am open to other ideas.

So this happened to just one customers card? :slight_smile:

i have 1 card with whom i can replicate; i can not say how many others.

if i were to guess i would think it is happening to every customer with whom there is a 3ds challenge.

i know there have been successful transactions using square; i just do not know if any of those had a 3ds challenege.

i do know that as soon as my client heard about these problems from his customers, he turned square off and re-enabled a competing payment gateway.

bryan, in the API logs, is there any way to tell if there was a 3ds challenge? ie it was not frictionless? is it possible to put something into the request?

when i look at my api logs, i see i have added the verification token:

"verification_token": "verf:CA4SELx4Ncrn0_qUzPs0cpWXXXXXX",

but there is no way to tell (that i can currently see) if it was frictionless or not.

thanks in advance.