Integration Types
Otras características
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
Esta guía describe todos los pasos necesarios para agregar 3DS a la integración del motor de pagos utilizando la API S JavaScript (JS) de 3D, incluido cómo usar el resultado de la autenticación para procesar un pago.
3DS JS utiliza la autenticación basada en sesión. Como primer paso, debe crear una sesión, que luego puede actualizar con los campos de solicitud y los valores que desea almacenar en la sesión.
Puede crear una sesión utilizando la llamada Create Session. Es una llamada de API del lado del servidor y es un prerrequisito para la integración con la API de JS. Devuelve los siguientes campos:
session.id
: un identificador de sesión único que debe proporcionar en solicitudes posteriores para hacer referencia a los contenidos de una sesión.session.authenticationLimit
: el límite en la cantidad de solicitudes de transacciones que puede enviar el navegador del pagador. Puede proporcionar un valor en la solicitud o utilizar el valor predeterminado del motor de pagos. De forma predeterminada, el motor de pagos lo establece en 5, pero puede proporcionar un valor de hasta 25. Este límite evita que usuarios malintencionados utilicen la solicitud de autenticación como un posible ataque de tarjetas y que realicen ataques de denegación de servicio (DoS) en su sitio mediante el envío de un gran número de transacciones (potencialmente facturables). session.aes256Key
: la clave que puede usar para descifrar los datos confidenciales que se transmiten al sitio web a través del explorador o dispositivo móvil del pagador.session.version
: puede usar este campo para implementar el bloqueo optimista del contenido de la sesión.session.updateStatus
: un resumen del resultado del último intento para modificar la sesión.Puede agregar o actualizar campos en una sesión utilizando la llamada Update Session. Le permite agregar datos del pago y del pagador en una sesión que posteriormente se puede convertir en la entrada para determinar el riesgo asociado con un pagador en una operación de autenticación. Los siguientes campos son obligatorios en una sesión:
Parámetro | Existencia | Descripción |
---|---|---|
session.id o sourceOfFunds.provided.card.* o sourceOfFunds.token |
Obligatorio | Detalles de la tarjeta que se va a utilizar para el pago. Tenga en cuenta que también puede utilizar tokens de red y tokens de pago mediante dispositivo como fuente de fondos en la autenticación del pagador. Para obtener más información, consulte las Preguntas frecuentes. |
order.amount |
Obligatorio | El monto total del pedido. |
order.currency |
Obligatorio | La moneda del pedido. |
transaction.id |
Obligatorio | Identificador único para esta autenticación de pago. |
order.id |
Obligatorio | Identificador único para este pedido. |
authentication.channel |
Obligatorio | El canal en el que se inicia la solicitud de autenticación. Puede especificar una de las siguientes opciones:
|
authentication.redirectResponseUrl |
Opcional | La URL a la que desea redirigir al pagador después de completar el proceso de autenticación del pagador. Debe proporcionar esta dirección URL, a menos que esté seguro de que no habrá interacción con el pagador. |
authentication.purpose |
Opcional | De forma predeterminada, este campo está configurado en "PAYMENT_TRANSACTION" para indicar que se debe realizar la autenticación al procesar un pago con tarjeta. No obstante, puede especificar una finalidad diferente para indicar la autenticación sin pago. Consulte Enviar una solicitud de autenticación sin pago. |
authentication.acceptVersions |
Opcional | Las versiones de 3DS que usted aceptará para este pago. Si no especifica una versión, se aceptarán 3DS1 y 3DS2. El motor de pagos usa 3DS2 (si el emisor y la tarjeta lo admiten) y recurre como alternativa a 3DS1 solo cuando 3DS2 no está disponible. Si ninguno de los dos está disponible, la autenticación no continuará. Tenga en cuenta que los escenarios alternativos solo se aplicarán a los mercados con una extensión 3DS1. |
order.merchantCategoryCode |
Opcional | Proporcione el código de categoría del negocio si desea anular el valor predeterminado configurado en su vínculo de adquirente. |
Consulte la API de JS 3DS (threeDS.js
) en los servidores del motor de pagos. Esto colocará un objeto ThreeDS
en la ventana/el espacio de nombres global.
Cuando haya creado una sesión, inicialice la API utilizando el método configure( )
. Se debe llamar a este método durante la carga de la página o cuando DOM se encuentra en estado listo. Debe llamarse solo una vez para la carga de la página. Después de llamar a este método, 3DS JS proporcionará valores de configuración como variables miembro.
Puede inicializar la API de 3DS JS invocando el método configure(), con los siguientes campos obligatorios como argumentos en un objeto de mapa:
merchantId
: su identificador de negocio en el motor de pagos.sessionId
: el ID de sesión que creó utilizando la llamada Create Session.containerId
: el ID <div> en su html donde la API inyectará un iframe oculto.callback
: una función que se invocará cuando se haya inicializado la API.configuration
: valor JSON que admite elementos de datos como userLanguage(Optional), versión de la API REST (wsVersion).<html> <head> <script src="https://evopaymentsmexico.gateway.mastercard.com/static/threeDS/1.3.0/three-ds.min.js" data-error="errorCallback" data-cancel="cancelCallback"> </script> <script type="text/javascript"> //The output of this call will return 'false', since the API is not configured yet console.log(ThreeDS.isConfigured()); /** Configure method with the configuration{} parameter set and demonstrates the state change of the ThreeDS object before and after the configure method is invoked. */ ThreeDS.configure({ merchantId: {merchantId}, sessionId: {sessionId}, containerId: "3DSUI", callback: function () { if (ThreeDS.isConfigured()) console.log("Done with configure"); }, configuration: { userLanguage: "en-AU", //Optional parameter wsVersion: 72 } }); //The output of this call will return 'true', since the API is configured console.log(ThreeDS.isConfigured()); //The output of the following code might look like "ThreeDS JS API Version : 1.2.0" console.log("ThreeDS JS API Version : " + ThreeDS.version); </script> </head> <body> <div id="3DSUI"></div> </body> </html>
Cuando se hayan obtenido todos los datos del pagador y del pago en una sesión, puede iniciar la autenticación invocando el método initiateAuthentication()
. Determina las versiones de autenticación de pagador disponibles para una tarjeta determinada, lo que se basará en lo siguiente:
La operación también permite realizar cualquier actividad en segundo plano (como una llamada a 3DS2 ACS) con fines como los de recopilación de datos adicionales del pagador para respaldar un posterior método authenticatePayer()
.
authenticatePayer()
, se recomienda invocar el método initiateAuthentication() lo antes posible en su proceso de pago y actuar sobre la respuesta de inmediato. Esto suele ocurrir cuando el pagador termina de ingresar su número de tarjeta en la página de pago, por ejemplo, evento "onBlur" del campo de entrada Número de tarjeta, o cuando selecciona una tarjeta de las registradas en su cuenta, si su sitio cuenta con capacidades de tarjeta en archivo. Espere al menos diez segundos para que se complete la llamada al método ACS.Para iniciar la autenticación, complete los siguientes campos obligatorios en el método initiateAuthentication()
:
Si la autenticación 3DS del pagador está disponible, se devuelven los siguientes campos en el argumento data
de la función de devolución de llamada. De lo contrario, la respuesta incluirá un error.
data.restApiResponse
: contiene la respuesta sin procesar de la llamada de API REST Initiate Authentication.data.correlationId
: el último ID de correlación que se usó para realizar la llamada de API REST Initiate Authentication. Permite relacionar la respuesta con la solicitud.data.gatewayRecommendation
data.authenticationVersion
: devuelve 3DS1 o 3DS2 si la autenticación está disponible. Tenga en cuenta que los escenarios alternativos solo se aplicarán a los mercados con una extensión 3DS1.Para determinar el siguiente paso, verifique las recomendaciones del motor de pagos que se proporcionan en el campo gatewayRecommendation. Tenga en cuenta que esta recomendación se basa solamente en las reglas de filtrado de transacciones 3DS que usted o su proveedor de servicios de pago configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder a autenticar al pagador utilizando la llamada al método authenticatePayer( ) . |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
var optionalParams = { sourceOfFunds: { type: "CARD" }, order: { walletProvider: "MASTERPASS_ONLINE" } }; ThreeDS.initiateAuthentication({orderId}, {transactionId}, function (data) { if (data && data.error) { var error = data.error; //Something bad happened, the error value will match what is returned by the Authentication API console.error("error.code : ", error.code); console.error("error.msg : ", error.msg); console.error("error.result : ", error.result); console.error("error.status : ", error.status); } else { console.log("After Initiate 3DS ", data); //data.response will contain information like gatewayRecommendation, authentication version, etc. console.log("REST API raw response ", data.restApiResponse); console.log("Correlation Id", data.correlationId); console.log("Gateway Recommendation", data.gatewayRecommendation); console.log("HTML Redirect Code", data.htmlRedirectCode); console.log("Authentication Version", data.authenticationVersion); switch (data.gatewayRecommendation) { case "PROCEED": authenticatePayer();//merchant's method break; case "RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS": tryOtherPayment();//Card does not support 3DS and transaction filtering rules require 3DS on this transaction: Ask the payer to select a different payment method. break; } } }, optionalParams);
{ "authentication":{ "3ds2":{ "methodCompleted":false, "methodSupported":"SUPPORTED" }, "redirect":{ "customized":{ "3DS":{ "methodPostData":"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==", "methodUrl":"<method_url>" } } }, "redirectHtml":"<div id=\"initiate3dsSimpleRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"methodFrame\" name=\"methodFrame\" height=\"100\" width=\"200\" > </iframe> <form id =\"initiate3dsSimpleRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/method\" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==\" /> </form> <script>document.getElementById(\"initiate3dsSimpleRedirectForm\").submit();</script> </div>", "version":"3DS2" }, "order":{ "currency":"AUD", "status":"AUTHENTICATION_INITIATED" }, "response":{ "gatewayCode":"AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation":"PROCEED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
Cuando la respuesta de Initiate Authentication ha indicado que la autenticación debe estar disponible (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) y puede invocar el método authenticatePayer()
. Debe invocar esta operación cuando el pagador haga clic en el botón "Pagar ahora" en la página de pago.
Debe invocar el método authenticatePayer()
proporcionando los siguientes campos obligatorios:
orderId
: el mismo orderId que el método initiateAuthentication()
que lo precedió.transactionId
: el mismo transactionId que el método initiateAuthentication()
que lo precedió.callback
: la función de devolución de llamada.optionalParams
: (opcional) argumento con cualquier campo adicional de solicitud de API REST de Authenticate Payer, como facturación y envío.Los siguientes campos se devuelven en el argumento data
de la función de devolución de llamada:
data.restApiResponse
: contiene la respuesta sin procesar de la llamada de API REST Authenticate Payer.data.correlationId
: el último ID de correlación que se usó para realizar la llamada de API REST Authenticate Payer. Permite relacionar la respuesta con la solicitud.data.gatewayRecommendation
data.htmlRedirectCode
: el motor de pagos siempre devuelve este campo para su inserción en la página que se muestra al pagador.Para determinar el siguiente paso, verifique las recomendaciones del motor de pagos que se proporcionan en el campo gatewayRecommendation
devuelto en la devolución de llamada. Tenga en cuenta que esta recomendación se basa solamente en las reglas de filtrado de transacciones 3DS que usted o su proveedor de servicios de pago configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder a completar el proceso de autenticación (flujo de desafío) o proceder a completar el pago (flujo fluido). Si la autorización para el pago fue correcta, continúe con la captura de los fondos y, si procede, envíe la mercancía. |
DO_NOT_PROCEED_ABANDON_ORDER | No vuelva a enviar la misma solicitud. El proveedor de servicios de pago, el esquema o el emisor le solicitan que abandone el pedido. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
Si el motor de pagos le recomienda continuar (PROCEED
), pegue el contenido del campo de respuesta htmlRedirectCode
en la página que se muestra al pagador.
Esto redirigirá el explorador del pagador directamente a su sitio web. Puede proceder a enviar un pago posterior al motor de pagos. El motor de pagos obtendrá los datos de autenticación relacionados con el pago y se asegurará de que los pagos solo se procesen cuando hayan pasado todas las reglas de filtrado de transacciones 3DS (configuradas por usted o su proveedor de servicios de pago).
Esto redirigirá el explorador del pagador al ACS donde se presentará la IU de desafío del emisor, después de lo cual el pagador será redirigido al sitio web que usted posee. Los siguientes campos se devuelven en la devolución de llamada cuando el explorador del pagador se ha devuelto a su sitio web.
Puede determinar el resultado de la autenticación utilizando el valor devuelto en el campo gatewayRecommendation
. Tenga en cuenta que esta recomendación se basa solamente en las reglas de filtrado de transacciones 3DS que usted o su proveedor de servicios de pago configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder al pago porque la autenticación fue correcta. Si la autorización para el pago fue correcta, continúe con la captura de los fondos y, si procede, envíe la mercancía. |
DO_NOT_PROCEED_ABANDON_ORDER | No vuelva a enviar la misma solicitud. El proveedor de servicios de pago, el esquema o el emisor le solicitan que abandone el pedido. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
Los campos devueltos en restApiResponse
dependerán del flujo vigente (fluido frente a desafío) y de cómo se inició la solicitud de autenticación (authentication.channel).
Para una solicitud autenticada por sesión, la respuesta se filtra para eliminar datos que no están relacionados con el pagador y solo se devuelven los campos de la lista blanca. Para obtener más información, consulte Operaciones autenticadas mediante sesión.
La solicitud enviada por el explorador del pagador a su sitio web al completar el método authenticatePayer()
se parametrizará, permitiéndole determinar el resultado de la autenticación. Los parámetros de autenticación individuales, por ejemplo, authentication.3ds2.transactionStatus.data
, pueden resultar útiles en una integración avanzada o si tiene la necesidad de proporcionar los datos de autenticación en un pago procesado a través de otro motor de pagos. Consulte Integraciones de sesiones de pago avanzadas.
var optionalParams = { fullScreenRedirect: true, billing: { address: { city: "London", country: "GBR" } } }; ThreeDS.authenticatePayer({orderId}, {transactionId}, function (data) { if (!data.error) { //data.response will contain all the response payload from the AUTHENTICATE_PAYER call. console.log("REST API response ", data.restApiResponse); console.log("HTML redirect code", data.htmlRedirectCode); displayReceipt(data); } }, optionalParams); function displayReceipt(apiResponse) { var responseBody = { "apiResponse": apiResponse }; var xhr = new XMLHttpRequest(); xhr.open('PUT', '3dsreceipt', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function () { if (xhr.readyState == XMLHttpRequest.DONE) { document.documentElement.innerHTML = this.response; } } xhr.send(JSON.stringify(responseBody)); }
{ "authentication":{ "3ds":{ "transactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91" }, "3ds2":{ "3dsServerTransactionId":"8c4a911c-289a-46c2-a615-887e1cc01a6a", "acsTransactionId":"2a8234c9-e8ac-449d-a693-97a113b491fc", "directoryServerId":"A000000004", "dsTransactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91", "methodCompleted":false, "methodSupported":"SUPPORTED", "protocolVersion":"2.1.0", "requestorId":"test2ID", "requestorName":"test2Name", "transactionStatus":"C" }, "method":"OUT_OF_BAND", "payerInteraction":"REQUIRED", "redirect":{ "customized":{ "3DS":{ "acsUrl":"https://<host_name>/acs/v2/prompt", "cReq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9" } }, "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/prompt\" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9\" /> </form> <iframe id=\"challengeFrame\" name=\"challengeFrame\" width=\"100%\" height=\"100%\" ></iframe> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"threedsChallengeRedirectForm\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS2" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:22:59.113Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:44:07.161Z", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0, "valueTransfer":{ "accountType":"NOT_A_TRANSFER" } }, "response":{ "gatewayCode":"PENDING", "gatewayRecommendation":"PROCEED" }, "result":"PENDING", "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"1", "year":"39" }, "number":"512345xxxxxx0008", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:44:07.161Z", "timeOfRecord":"2021-04-13T02:22:59.113Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"42090084", "type":"AUTHENTICATION" }, "version":"60" }
Cuando el resultado del método authenticatePayer()
indica que se puede proceder con el pago (gatewayRecommendation=PROCEED), puede iniciar una operación Authorize o Pay. Además de los campos estándar, debe proporcionar los siguientes campos:
orderId
que facilitó en los métodos initiateAuthentication()
y authenticatePayer()
.transactionId
que facilitó en los métodos initiateAuthentication()
y authenticatePayer()
. No es necesario incluir ninguno de los campos en el grupo de parámetros de autenticación, dado que el motor de pagos utilizará el authentication.transactionId para buscar los resultados de autenticación que almacenó cuando se le pidió que realizara la autenticación. El motor de pagos pasará la información requerida al adquirente.URL | https://evopaymentsmexico.gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<unique_transaction_ID> |
Método HTTP | PUT |
{ "apiOperation":"PAY", "authentication":{ "transactionId":"<your_transaction_ID>" }, "order":{ "amount":"100", "currency":"AUD", "reference":"<your_order_ID>" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"1", "year":"39" } } }, "type":"CARD" }, "transaction":{ "reference":"<your_order_ID>" } }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"kHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"39c25b96-7bc3-4586-bee8-056479fed3af" }, "3ds2":{ "dsTransactionId":"39c25b96-7bc3-4586-bee8-056479fed3af", "protocolVersion":"2.1.0", "transactionStatus":"Y" }, "transactionId":"249213216", "version":"3DS2" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T02:11:06.102Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:11:57.049Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"1", "year":"39" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx0008", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:11:57.049Z", "timeOfRecord":"2021-04-13T02:11:56.973Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"028941", "currency":"AUD", "id":"1", "receipt":"1908266016", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "source":"INTERNET", "stan":"496", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Para ver preguntas frecuentes generales sobre 3-D Secure, consulte Preguntas frecuentes sobre la autenticación.
Para probar la integración, puede usar su perfil de pruebas del negocio en el entorno de Producción, consulte Pruebe su integración.