- Pautas de integración
- Características soportadas (seguridad)
- 3-Domain Secure
Autenticación 3-D Secure (3DS1 y 3DS2)
La autenticación 3-Domain Secure™ (3-D Secure o 3DS) está diseñada para proteger las compras en línea contra fraudes de tarjeta de crédito, al permitirle autenticar al pagador antes de enviar una transacción Authorization o Pay. Mastercard Gateway admite ambas versiones de 3DS: 3DS1 y EMV 3DS.
3DS1 es la versión heredada que permite a los pagadores autenticarse en el servidor de control de acceso (ACS) de su emisor ingresando una contraseña previamente registrada en el emisor de su tarjeta. 3DS2 también acepta el ingreso de una contraseña o un flujo fluido. Los esquemas admitidos para la autenticación son Mastercard, Visa, American Express, JCB, Discover y Diners Club.
Aunque su proveedor de servicios de pago puede configurar 3DS1 y 3DS2 en su perfil de negocio con el motor de pagos, usted puede restringir las versiones que desea aceptar, al especificar su elección en la solicitud de autenticación. Si se aceptan los dos, el motor de pagos usa 3DS2 (si el emisor y la tarjeta lo admiten) e intentará recurrir a 3DS1 solo en mercados regulados. Si ninguno de los dos está disponible, la autenticación no continuará. Sin embargo, puede continuar igualmente con el pago si el motor de pagos le recomienda que lo haga.
El diagrama siguiente ilustra el flujo de autenticación para un pago en el que el motor de pagos recurre a la autenticación 3DS1 porque 3DS2 no está disponible para la tarjeta. El motor de pagos también intentará 3DS1 en otros casos; por ejemplo, cuando usted solo está habilitado para 3DS1 o ha restringido la versión de autenticación a solo 3DS1 en la solicitud de autenticación.
El flujo de autenticación para una autenticación con éxito es el siguiente:
- Un pagador explora el sitio de la tienda, selecciona uno o más productos, se dirige a la página de pagos y selecciona pagar con una tarjeta que admite 3DS1, pero no 3DS2.
- Iniciar autenticación: usted le pide al motor de pagos que consulte con el esquema de tarjeta si la tarjeta está inscrita para 3DS.
- Si la autenticación 3DS1 del pagador está disponible, el motor de pagos devuelve los datos de inscripción de tarjeta en la respuesta.
Si la tarjeta admite 3DS1 y 3DS2, el motor de pagos intenta primero con 3DS2. Consulte Flujo 3DS2.
- Autenticar al pagador: usted solicita al motor de pagos que realice la autenticación iniciada.
- El motor de pagos le proporciona detalles de la autenticación para un flujo de desafío (donde el pagador debe responder a un desafío presentado por el emisor).
- Usted redirige el explorador web del pagador al ACS, que presenta su IU de autenticación. El emisor devuelve el resultado de la autenticación al motor de pagos. El motor de pagos redirige al pagador directamente a su sitio web.
- Usar la ID de transacción de autenticación de 3DS en una operación de pago: usted envía el pago para procesamiento.
- La página de confirmación del pedido se le muestra al pagador.
Estos son algunos términos clave a los que se hará referencia en toda la documentación de integración de 3DS1
Término | Descripción |
---|---|
Servidor de control de acceso (ACS) | Componente que opera en el dominio del emisor, que verifica si la autenticación está disponible para un número de tarjeta y el tipo de dispositivo y autentica transacciones específicas. |
Llamada de método ACS | Se aplica a la autenticación 3DS2. Es una llamada que le permite al ACS recopilar datos adicionales para determinar la calificación de riesgo para el pagador. Cuando 3DS2 está disponible y cuando los detalles de la llamada de ACS se devuelven en la respuesta después de iniciar la autenticación, estos detalles se pasan al explorador del pagador, y se envían como un formulario publicado en un iframe oculto, para que el ACS pueda recopilar datos adicionales. |
Flujo fluido | Flujo de autenticación en el que no se requiere que el pagador responda a un desafío porque el ACS considera que el pagador es de bajo riesgo. |
Flujo de desafío | Flujo de autenticación en el que se redirige al pagador al ACS y se le pide que responda a un desafío para identificarse, porque el ACS no tiene suficiente información del pagador para considerarlo de bajo riesgo. |
Sesión de pago | Una sesión de pago, o simplemente sesión, es un contenedor temporal para cualquier campo de solicitud y valor de operaciones que hagan referencia a una sesión. Puede utilizarlo en una operación para hacer referencia a los campos de solicitud y valores, en lugar de proporcionarlos directamente en la solicitud de operación. Cuando el motor de pagos recibe una operación que hace referencia a una sesión, la solicitud final se forma al combinar los campos de solicitud de la sesión y aquellos proporcionados directamente en la solicitud. Para obtener más información, consulte sesión de pago. |
Autenticación con sesión | Autenticación mediante una sesión de pago. Esta autenticación permite a los pagadores proporcionar sus detalles de pago directamente al motor de pagos a través de una interacción del cliente con el motor de pagos, ya sea a través del explorador de un pagador o de una aplicación en el dispositivo móvil del pagador. Utiliza un mecanismo básico de autenticación HTTP (similar a la autenticación con contraseña), en el que debe proporcionar 'merchant.<your gateway merchant ID>' en la parte de ID de usuario y el ID de sesión en la parte de contraseña. Para usar este tipo de autenticación, primero debe crear una sesión enviando una solicitud de sesión (consulte Create Session [REST][NVP]) desde su servidor al servidor de motor de pagos. |
Autenticación de negocio | Mecanismo que permite al negocio autenticar las solicitudes de API al motor de pagos, por ejemplo, contraseña/certificado/autenticación de sesión. |
API de autenticación | API del lado del servidor que consta de dos operaciones, Initiate Authentication y Authenticate Payer, que deben enviarse desde su servidor al servidor del motor de pagos. También se puede usar como API del lado del cliente mediante la autenticación basada en sesión. |
API de JavaScript de 3DS | API de JavaScript del lado del cliente que le permite iniciar la autenticación 3DS desde el explorador del pagador utilizando la autenticación basada en sesión. |
Canal de autenticación | Indica dónde se realiza la autenticación 3DS, en el explorador del pagador, en una aplicación en el dispositivo móvil del pagador o en su sistema sin pagador presente para interactuar. Esto tiene consecuencias en cuanto a qué tipos de autenticación y flujos están disponibles, por ejemplo, 3DS1 solo se puede admitir en el explorador con un pagador disponible para la interacción con el ACS. |
Propósito de la autenticación |
|
Vuelta a 3DS1 para países con compatibilidad ampliada con 3DS1
Iniciar autenticación: respaldo de 3DS1
La operación Initiate Authentication se utiliza para determinar qué versiones de 3DS están disponibles para una tarjeta específica. La versión de autenticación existente de 3-D Secure volverá a 3DS1 si se cumple alguna de las condiciones siguientes.
- Ha especificado en su solicitud que solo acepta 3DS1, que incluye autenticación.acceptVersions=3DS1 o una combinación de métodos de autenticación 3DS1 y EMV 3DS, como autenticación.acceptVersions=3DS1, 3DS2, o no proporcionado.
- Su proveedor de servicios de pago ha configurado la autenticación 3DS1 en su perfil de negocio
- El esquema de tarjeta es compatible con la autenticación del pagador 3DS1
- authentication.channel=PAYER_BROWSER
- authentication.purpose=PAYMENT_TRANSACTION y
- A continuación se indican los resultados de la solicitud que el motor de pagos envía a los proveedores de autenticación correspondientes.
- EMV 3DS no está disponible para esta tarjeta o
- La autenticación EMV 3DS no está disponible en el servidor de control de acceso (ACS) del emisor y usted se encuentra en un país donde se amplía la compatibilidad con 3DS1 y se prefiere volver a 3DS1 más que la autenticación de sustitución del esquema EMV 3DS.
Países y esquemas admitidos
En esta tabla se enumeran los países y los esquemas de autenticación donde se intenta la vuelta a 3DS1 cuando la autenticación EMV 3DS no está disponible en el ACS del emisor.
Esquema de autenticación | País del negocio |
---|---|
Mastercard Identity Check | India y Bangladesh |
Visa Secure | India, Bangladesh, Sri Lanka, Bután, Maldivas y Nepal |
American Express SafeKey | India |
order.subMerchant.address.country
. Para obtener más información, consulte Soporte del agregador.Ejemplos
{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
Por ejemplo, negocio en un país donde se ha ampliado la compatibilidad con 3DS1 y la autenticación EMV 3DS no está disponible en el ACS de los emisores.
{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
Por ejemplo, transacción transfronteriza para un negocio en un país donde se ha ampliado la compatibilidad con 3DS1 y los ACS de emisores internacionales admiten EMV 3DS; o negocio en un país donde 3DS1 se ha retirado y el ACS de los emisores locales es compatible con EMV 3DS.
{ "authentication": { "3ds2": { "directoryServerId": "A999999999", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-11-03T08:22:17.087Z", "currency": "USD", "id": "Test1", "lastUpdatedTime": "2022-11-03T08:23:17.905Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "DEBIT", "number": "555555xxxxxx0018", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-11-03T08:23:17.905Z", "timeOfRecord": "2022-11-03T08:22:17.087Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "70" }
Métodos de integración
Haga clic aquí para ver cómo migrar de la operación Legacy 3DS1 a la API de autenticación: Guía de integración de autenticación 3-D Secure: Página de integración de Hosted Checkout.
Paso 1: Crear y actualizar una sesión
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 explorador 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 fraude 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).
Tenga en cuenta que cualquier reintento de autenticación que inicie se comparará con el límite de autenticación.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 regulados. Para obtener más información sobre los escenarios alternativos, consulte Initiate Authentication - vuelta a 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. |
Paso 2: Inicializar la API
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://gateway-emea.americanexpress.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>
Paso 3: Iniciar autenticación
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:
- las versiones de 3DS configuradas en el perfil de negocio, por ejemplo, 3DS1 o 3DS2;
- el tipo de tarjeta;
- las preferencias que haya indicado en la solicitud;
- la versión de 3DS en la que se inscribió la tarjeta;
- las reglas de filtrado de transacciones 3DS configuradas por usted o por your payment service provider.
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 método posterior de 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()
:
- transactionId: identificador único para esta autenticación de pago.
- orderId: identificador único para este pedido.
- callback: la función de devolución de llamada.
- optionalParams: (opcional) argumento con cualquier campo adicional de solicitud de API REST de Initiate Authentication, como correlationId.
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 regulados. Para obtener más información sobre los escenarios alternativos, consulte Initiate Authentication - vuelta a 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 your payment service provider configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
DO_NOT_PROCEED | No continúe con la autenticación 3DS para esta tarjeta, aunque es posible que desee continuar con el pago sin los datos de 3DS. También, puede ofrecer al pagador la opción de probar otro método de pago. |
PROCEED | Puede proceder a autenticar al pagador utilizando la llamada al método authenticatePayer( ) . |
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 "DO_NOT_PROCEED": displayReceipt(data);//merchant's method, you can offer the payer the option to try another 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_WITH_AUTHENTICATION" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
{ "authentication":{ "redirect":{ "customized":{ "3DS":{ "methodPostData":"e30=", "methodUrl":"<method_url>" } } }, "redirectHtml": "<script id=\"initiate-authentication-script\"></script>", "version": "3DS1" }, "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "EUR", "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" }
Paso 4: Autenticar al pagador
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étodoinitiateAuthentication()
que lo precedió.transactionId
: el mismo transactionId que el métodoinitiateAuthentication()
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 your payment service provider configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
DO_NOT_PROCEED | No continúe con esta tarjeta, ya que la autenticación se rechazó o no está disponible, aunque es posible que desee continuar con el pago sin los datos de 3DS. También, puede ofrecer al pagador la opción de probar otro método de pago. |
PROCEED | Puede proceder a completar el proceso de autenticación (flujo de desafío) o proceder a completar el pago (flujo fluido). |
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.
Flujo fluido
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 your payment service provider).
Flujo de desafío
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.
- orderId
- transactionId
- gatewayRecommendation
- restApiResponse
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 your payment service provider configuraron.
gatewayRecommendation |
Siguiente paso |
---|---|
DO_NOT_PROCEED | No continúe con esta tarjeta porque la autenticación se rechazó o no está disponible. Puede ofrecer al pagador la opción de probar otro método de pago. |
PROCEED | Puede proceder al pago porque la autenticación fue correcta. |
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.
Integraciones avanzadas
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" }
{ "authentication":{ "3ds1":{ "veResEnrolled":"Y" }, "payerInteraction":"REQUIRED", "redirect":{ "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"redirectTo3ds1AcsSimple\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"redirectTo3ds1Frame\" name=\"redirectTo3ds1Frame\" height=\"100%\" width=\"100%\" > </iframe> <form id =\"redirectTo3ds1Form\" method=\"POST\" action=\"https://<host_name>/acs/b6594e88-608f-4897-a8b5-dd491dc1e54d\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUd9vgjAQfjfxfyBkr6OlgENz1uDUaBadmZr9eFlYaYRFwNEi7r9fizC3e7rvu97Xu+9gdE4PxokXIsmzoWlb2DR4xvIoyfZDc7ed3frmiHY7sI0LzicbzsqCU1hyIcI9N5JI9XiuT8hdz6SwDp74F4VGjio1iwBqoeoqWBxmkkLIvsaLFbWbANQQkPJiMaGSCwnokkMWppxulo8P03dnslF6NQEsLzNZfFPs9AC1AMriQGMpjwOEqqqyRJrIWFgsTwHpEqDrDOtSTyPUNuckovPpYo484o53n1XwHK9Orx9sFvRexFs+BKRfQBRKTgm2+9gnvoGdgY0H2AVU8xCmeiAa7CbGjY2xhbHa6sLBUX8VXICq6dJfCpSphXK9XaZFwM/HPONKVW39mwO6Tn4/114yqTzzbOK4Xr8On7jKlKagVRJlFLGxV8toAEi3ouZgypX6nor5d+du5wf/BK8K\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"https://<host_name>/callbackInterface/gateway/e91c0cc18c143f205a081cde25a3a8cec28b04bb90169115295beb29d0c1dc28\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS1" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:52:24.532Z", "currency":"AUD", "id":"3bdbe65b-d0db-4a7d-a8a1-59ae3723da77", "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":"512345xxxxxx8246", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:54:19.182Z", "timeOfRecord":"2021-04-13T02:52:24.532Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"three", "type":"AUTHENTICATION" }, "version":"60" }
Paso 5: Usar el resultado de la autenticación en una operación de pago
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:
- order.id: proporcione el
orderId
que facilitó en los métodosinitiateAuthentication()
yauthenticatePayer()
. - authentication.transactionId: proporcione el
transactionId
que facilitó en los métodosinitiateAuthentication()
yauthenticatePayer()
. 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://gateway-emea.americanexpress.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_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" }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"jHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"3nzQOuTJDVOsRLuDT9V671B8QkU=" }, "3ds1":{ "paResStatus":"Y", "veResEnrolled":"Y" }, "transactionId":"5791", "version":"3DS1" }, "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-13T03:17:44.895Z", "currency":"AUD", "id":"f808076a-0bc6-4f1b-8100-cfe46e43676e", "lastUpdatedTime":"2021-04-13T03:19:45.964Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "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":"512345xxxxxx8246", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T03:19:45.964Z", "timeOfRecord":"2021-04-13T03:19:45.703Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"003879", "currency":"AUD", "id":"1", "receipt":"1908286018", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "source":"INTERNET", "stan":"499", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Paso 1: Iniciar autenticación
La operación Initiate Authentication se utiliza para determinar las versiones de 3DS disponibles para una tarjeta determinada, lo que se basará en lo siguiente:
- las versiones de 3DS configuradas en el perfil de negocio, por ejemplo, 3DS1 o 3DS2;
- el tipo de tarjeta;
- las preferencias que haya indicado en la solicitud;
- el resultado de las solicitudes que el motor de pagos haya enviado a los proveedores de autenticación pertinentes para verificar la disponibilidad o compatibilidad para la tarjeta en cuestión; y
- las reglas de filtrado de transacciones 3DS del motor de pagos configuradas por usted o su proveedor de servicios de pago.
La operación también permite realizar cualquier actividad en segundo plano (como una llamada al método ACS) con fines como los de recopilación de datos adicionales del pagador para respaldar una operación posterior de Authenticate Payer.
Para iniciar la autenticación, complete los siguientes campos en la solicitud Initiate Authentication:
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.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.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á. |
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. |
El motor de pagos devuelve los siguientes campos clave en la respuesta de Initiate Authentication:
authentication.version
: si la autenticación 3DS del pagador está disponible, este campo muestra el tipo 3DS1 o 3DS2. Si ambos están disponibles, se devuelve 3DS2.authentication.3ds2.methodSupported
: si 3DS2 está disponible y si el ACS del emisor admite una llamada a método, este campo muestra SUPPORTED. El ACS puede utilizar la llamada al método para recopilar datos adicionales antes de la solicitud de autenticación para aumentar la probabilidad de disponer de una autenticación fluida. La llamada al método se activa en un iframe oculto, por lo que es invisible para el pagador. Tampoco proporciona ninguna devolución de llamada al finalizar.transaction.authenticationStatus
: consulte este campo si desea obtener más detalles sobre el estado de autenticación.response.gatewayRecommendation
: este campo le permite determinar el siguiente paso. 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.
response.gatewayRecommendation
Siguiente paso DO_NOT_PROCEED No continúe con la autenticación 3DS para esta tarjeta, aunque es posible que desee continuar con el pago sin los datos de 3DS. También, puede ofrecer al pagador la opción de probar otro método de pago. PROCEED Puede proceder a autenticar al pagador utilizando la operación Authenticate Payer. authentication.redirect.html
: inserte el contenido de este campo en la página que se muestra al pagador. Para hacerlo, agregue el contenido de texto a un elemento DIV oculto y especifique el identificador de script en HTML DOM. De esta manera se creará y publicará el formulario automáticamente. Por ejemplo:div.innerHtml= response.authentication.redirect.html; eval(document.getElementById('initiate-authentication-script').text)
Si el motor de pagos le recomienda que no continúe, si se inserta el contenido de este campo en la página web no se ejecutará ninguna funcionalidad.
URL | https://gateway-emea.americanexpress.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Método HTTP | PUT |
{ "authentication":{ "acceptVersions":"3DS1,3DS2", "channel":"PAYER_BROWSER", "purpose":"PAYMENT_TRANSACTION" }, "correlationId":"test", "order":{ "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>" } } }, "apiOperation":"INITIATE_AUTHENTICATION" }
{ "authentication": { "3ds2": { "directoryServerId": "A999999999", "methodCompleted": false, "methodSupported": "SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "customizedHtml": { "3ds2": { "methodPostData": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==", "methodUrl": "<method_url>" } }, "html": "<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=\"<method_url>" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==\" /> </form> <script id=\"initiate-authentication-script\"> var e=document.getElementById(\"initiate3dsSimpleRedirectForm\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T06:57:32.714Z", "currency": "USD", "id": "TEST4", "lastUpdatedTime": "2022-06-24T06:57:32.661Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx0008", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T06:57:32.661Z", "timeOfRecord": "2022-06-24T06:57:32.714Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS1" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T07:00:51.195Z", "currency": "USD", "id": "TEST5", "lastUpdatedTime": "2022-06-24T07:00:51.126Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:00:51.126Z", "timeOfRecord": "2022-06-24T07:00:51.195Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
Paso 2: Autenticar al pagador
Cuando la respuesta de Initiate Authentication ha indicado que la autenticación está disponible (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) y una vez que se hayan reunido todos los datos del pagador y del pago, puede enviar la solicitud Authenticate Payer. Debe invocar esta operación cuando el pagador haga clic en el botón "Pagar ahora" en la página de pago.
Envíe esta operación proporcionando los siguientes campos. Si solo se admite 3DS1, el motor de pagos pasa por alto los campos específicos de 3DS2.
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. |
order.amount |
Obligatorio | El monto total del pedido. |
transaction.id |
Obligatorio | El mismo transaction.id que la operación Initiate Authentication que lo precedió. |
order.id |
Obligatorio | El mismo order.id que la operación Initiate Authentication que lo precedió. |
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. |
order.merchantCategoryCode |
Opcional | Si no proporciona un valor, se utilizará el valor predeterminado configurado en su perfil del negocio. |
device.browser |
Opcional | Obligatorio si se admite 3DS2 y si authentication.channel=PAYER_BROWSER. |
device.ipAddress |
Opcional | Obligatorio si se admite 3DS2 y si authentication.channel=PAYER_BROWSER, pero con la disposición de excluir cuando sea necesario para cumplir con la legislación local. |
Grupo de parámetros de device.browserDetails |
Opcional | Obligatorio si se admite 3DS2 y si authentication.channel=PAYER_BROWSER. |
Grupo de parámetros de billing.address |
Opcional | Se aplica solo a 3DS2. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
Grupo de parámetros de shipping.address |
Opcional | Solo se aplica a 3DS2. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
Grupo de parámetros de customer |
Opcional | Solo se aplica a 3DS2. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
El motor de pagos devuelve los siguientes campos clave en la respuesta de Authenticate Payer:
transaction.authenticationStatus
: consulte este campo si desea obtener más detalles sobre el estado de autenticación.response.gatewayRecommendation
: este campo le permite determinar si debe proceder a una transacción financiera o no. Esta recomendación se basa únicamente en las reglas de filtrado de transacciones 3DS configuradas por usted o por su proveedor de servicios de pago.
response.gatewayRecommendation
Siguiente paso DO_NOT_PROCEED No continúe con esta tarjeta, ya que la autenticación se rechazó o no está disponible, aunque es posible que desee continuar con el pago sin los datos de 3DS. También, puede ofrecer al pagador la opción de probar otro método de pago. PROCEED Puede proceder a completar el proceso de autenticación (flujo de desafío) o proceder a completar el pago (flujo fluido). authentication.redirect.html
: inserte el contenido de este campo en la página que se muestra al pagador. Para hacerlo, agregue el contenido de texto a un elemento DIV y especifique el identificador de script en HTML DOM. De esta manera se creará y publicará el formulario automáticamente. Por ejemplo:div.innerHtml= response.authentication.redirect.html; eval(document.getElementById('authenticate-payer-script').text)
Si el motor de pagos le recomienda que no continúe, si se inserta el contenido de este campo en la página web no se ejecutará ninguna funcionalidad.
Flujo fluido
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).
Flujo de desafío
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.
- order.id
- transaction.id
- response.gatewayRecommendation
- result
Puede determinar el resultado de la autenticación utilizando el valor devuelto en el campo response.gatewayRecommendation
. Esta recomendación se basa únicamente en las reglas de filtrado de transacciones 3DS configuradas por usted o por su proveedor de servicios de pago.
Si desea datos de respuesta adicionales, puede utilizar la operación Retrieve Transaction.
response.gatewayRecommendation |
Siguiente paso |
---|---|
DO_NOT_PROCEED | No continúe con esta tarjeta, ya que la autenticación se rechazó o no está disponible, aunque es posible que desee continuar con el pago sin los datos de 3DS. También, puede ofrecer al pagador la opción de probar otro método de pago. |
PROCEED | Puede proceder al pago porque la autenticación fue correcta. |
Los campos devueltos en la respuesta de Authenticate Payer dependen del flujo vigente (fluido frente a desafío), cómo se inició la solicitud de autenticación (authentication.channel) y el mecanismo de autenticación para la solicitud (sesión, certificado o contraseña).
Los siguientes campos se devuelven para una solicitud autenticada de certificado/contraseña. Para una operación 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 autenticación de sesión.
Response Field |
Autenticado por el negocio |
---|---|
authentication.method | Sí |
authentication.3ds.authenticationToken | * |
authentication.3ds.acsEci | Sí |
authentication.3ds.transactionId | Sí |
authentication.3ds2.transactionStatus | * |
authentication.3ds2.acsTransactionId | * |
authentication.3ds2.dsTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.protocolVersion | * |
authentication.3ds1.veResEnrolled | * |
authentication.amount | Sí |
authentication.redirect.html | Sí |
authentication.time | Sí |
response.gatewayRecommendation | Sí |
transaction.type | Sí |
version | Sí |
timeOfRecord | Sí |
result | Sí |
response.debugInformation | * |
URL | https://gateway-emea.americanexpress.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Método HTTP | PUT |
{ "authentication":{ "redirectResponseUrl":"<host>/merchantSimulator/jsp/simple/output.jsp" }, "correlationId":"test", "device": { "browser": "MOZILLA", "browserDetails": { "3DSecureChallengeWindowSize": "FULL_SCREEN", "acceptHeaders": "application/json", "colorDepth": 24, "javaEnabled": true, "language": "en-US", "screenHeight": 640, "screenWidth": 480, "timeZone": 273 }, "ipAddress": "127.0.0.1" }, "order":{ "amount":"100", "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"1", "year":"39" } } } }, "apiOperation": "AUTHENTICATE_PAYER" }
{ "authentication": { "3ds": { "transactionId": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8" }, "3ds2": { "3dsServerTransactionId": "cf976f0d-cb19-454f-a5b3-3cf09ae07e38", "acsTransactionId": "c8027c6a-94da-480d-9270-85098bc680d5", "directoryServerId": "A999999999", "dsTransactionId": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name", "sdk": { "timeout": 400, "uiType": "TEXT" }, "transactionStatus": "C" }, "amount": 100.00, "method": "OUT_OF_BAND", "payerInteraction": "REQUIRED", "redirect": { "customizedHtml": { "3ds2": { "acsUrl": "<acs_url>", "cReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9" } }, "domainName": "<acs_domain>", "html": "<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"style=\" height: 100vh\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"<acs_url>" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9\" /> </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(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:04:34.836Z", "version": "3DS2" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:03:43.780Z", "currency": "USD", "id": "TEST6", "lastUpdatedTime": "2022-06-24T07:04:34.795Z", "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": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8212", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:04:34.795Z", "timeOfRecord": "2022-06-24T07:03:43.780Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "amount": 100.00, "payerInteraction": "REQUIRED", "redirect": { "domainName": "<acs_domain>", "html": "<div id=\"redirectTo3ds1AcsSimple\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"redirectTo3ds1Frame\" name=\"redirectTo3ds1Frame\" height=\"100%\" width=\"100%\" > </iframe> <form id =\"redirectTo3ds1Form\" method=\"POST\" action=\"<acs_url>\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUctuwjAQvCPxD1HUG2rsmPDUYkSLaJH6UoEeuKXJNklFEnAcHn/fdQi09cHyzHrH41kYH9ONtUdVJHk2sl2H2xZmQR4mWTSyV8vZbd8ey2YDlrFCnC4wKBVKeMai8CO0kpB6uHD7XNgS3ibvuJNQq0kScwSwC6QmFcR+piX4we5u/iLdegGrCUhRzadSY6GBnc+Q+SlKs71+XQSAVSQEeZlpdZK83QV2AVCqjYy13hZDxg6Hg+MHKR6SMEJdOEGeAjMXgF3EyHZpfBX0rWMSytan6j6VD9/d/bpdfqx0PCha+7WaLXrRCJi5AaGvUQouBO8Kz+K9oesOPRdYxYOfGltytZhaNy7nDuf0vzMHW/PU5AyoZkp/KaB0FcV/kn2PSlcEeNzmGZIq5Xk9A/t1fv9oUg00pddxRdvrDKrVFx5FUxeMSkJxtQeczNYAmGll9egolWqwxPwbeLPxA6NgtIg=\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"<callback_url>\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:12:00.966Z", "version": "3DS1" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:11:40.804Z", "currency": "USD", "id": "TEST7", "lastUpdatedTime": "2022-06-24T07:12:00.949Z", "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": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:12:00.949Z", "timeOfRecord": "2022-06-24T07:11:40.804Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
Paso 3: Usar el resultado de la autenticación en una operación de pago
Cuando el resultado de la operación Authenticate Payer indica que se puede proceder con el pago (response.gatewayRecommendation=PROCEED), puede iniciar una operación Authorize o Pay. Además de los campos estándar, debe proporcionar los siguientes campos:
- order.id: proporcione el order.id que facilitó en las operaciones Initiate Authentication y Authenticate Payer.
- authentication.transactionId: proporcione el transaction.id que facilitó en las operaciones Initiate Authentication y Authenticate Payer. 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://gateway-emea.americanexpress.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_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" }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"jHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"3nzQOuTJDVOsRLuDT9V671B8QkU=" }, "3ds1":{ "paResStatus":"Y", "veResEnrolled":"Y" }, "transactionId":"5791", "version":"3DS1" }, "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-13T03:17:44.895Z", "currency":"AUD", "id":"f808076a-0bc6-4f1b-8100-cfe46e43676e", "lastUpdatedTime":"2021-04-13T03:19:45.964Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "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":"512345xxxxxx8246", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T03:19:45.964Z", "timeOfRecord":"2021-04-13T03:19:45.703Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"003879", "currency":"AUD", "id":"1", "receipt":"1908286018", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "source":"INTERNET", "stan":"499", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Preguntas frecuentes
Si ha usado un MPI 3DS externo para autenticar al pagador, entonces debe transmitir la información sobre la autenticación en el grupo de parámetros de autenticación de la operación Authorize o Pay.
Todos los campos son opcionales, si le fueron proporcionados o no por el MPI 3DS externo depende de la versión de autenticación (3DS1 o 3DS2) y el estado de la transacción. Sin embargo, si tiene los datos, se recomienda que los proporcione.
authentication.3ds.acsEci
: el indicador de comercio electrónico que se le puede devolver en el mensaje de respuesta de autenticación.authentication.3ds.authenticationToken
: el valor codificado base64 generado por el emisor de la tarjeta que se le puede devolver en el mensaje de respuesta de autenticación.authentication.3ds.transactionId
: un identificador de transacción único generado por el motor de pagos para la autenticación 3DS.
Para 3DS1, este campo corresponde a XID, que es un identificador de transacción único generado por el motor de pagos en nombre del negocio. Un XID enviado en este campo debe estar en formato base64.
Para 3DS2, este campo corresponde al identificador asignado por el servidor de directorio del esquema.authentication.3ds1.paResStatus:
indica el resultado de la autenticación del pagador con el emisor.authentication.3ds1.veResEnrolled:
indica si la autenticación del pagador está disponible o no para el número de tarjeta que facilitó.authentication.amount
: este es un campo opcional. Indica el monto de la autenticación. Debe proporcionar valores en este campo cuando el monto de autenticación difiera deorder.amount
. Antes de proporcionar valores en este campo, consulte a su proveedor de servicios de pago.authentication.time
: este es un campo opcional. Indica la fecha y hora de autenticación del pagador. Antes de proporcionar valores en este campo, consulte a su proveedor de servicios de pago.
Para ver las preguntas frecuentes generales y otras opciones de 3DS, consulte la página de Preguntas frecuentes sobre la autenticación.
Prueba de su integración
Antes de iniciar transacciones en producción, debe Probar su integración para garantizar una funcionalidad correcta.