globalpayments / globalpayments-3ds-js

Helper library for leveraging 3DSecure 2 for Strong Customer Authentication (SCA)
https://www.npmjs.com/package/globalpayments-3ds
GNU General Public License v2.0
5 stars 10 forks source link

CheckVersion iFrame timeout (seemingly only on Mastercards) #19

Closed philipbelcher closed 3 years ago

philipbelcher commented 3 years ago

Hi guys

I have the entire 3D Secure V2 payment process end-to-end working fine on our live payment gateway for VISA cards.

But for some reason when I am trying 2 separate cards (with the only similarity being Mastercards) they are failing on the checkVersion step ie:

import { checkVersion } from 'globalpayments-3ds';

const versionCheckData = await checkVersion('/MyCheckVersionEndpoint', { card });

In my backend I can see the serverTransactionId, methodUrl and methodData being successfully returned back to the client as a JSON response.

On the frontend I can see the globalpayments-3ds-js create the hidden iframe to submit the method data (using these values from the backend)

Then, on the frontend, in the browser network tab I can see it attempt to call the methodUrl (in this case, https://www.securesuite.co.uk/lloyds/threeDSMethod/3ds2) but that returns a 719 Status Code and the body states General error occurred..

Screen Shot 2020-12-23 at 15 24 05

The globalpayments-3ds-js then hits the default timeout and thus versionCheckData returns null and my Method Notification endpoint never gets hit.

Not sure if it helps, but my personal VISA cards methodUrl is https://www.securesuite.co.uk/barclays/threeDSMethod/3ds2 and that returns a 200 response and everything continues on like normal (including my Method Notification endpoint getting hit).

Any advice would be greatly appreciated.

Thanks