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?
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:
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:
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.
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.
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.
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.
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.
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:
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: