Autenticación 3ds
Descripción del proceso de autenticación 3ds
La autenticación 3D Secure (3DS) en nuestra pasarela de pagos es un componente esencial diseñado para fortalecer la seguridad de las transacciones en línea. Este proceso se centra en la verificación de la identidad del titular de la tarjeta durante la realización de transacciones, añadiendo una capa adicional de protección contra el fraude. A continuación, se proporciona una descripción detallada de cómo se lleva a cabo la autenticación 3DS en nuestra plataforma.
Existen dos flujos posibles para evaluar el resultado de una autenticación
: flujo “frictionless” y el de ”paso adicional”:
Frictionless: El titular de la tarjeta puede completar la transacción sin experimentar interrupciones notables o pasos adicionales que puedan causar fricción o inconvenientes.
Paso adicional: Es necesario que el titular de la tarjeta proporcione información adicional o que realice pasos de autenticación más avanzados.
Proceso de inicio de autenticación 3DS
- Solicitud
- El comercio envía una solicitud al Endpoint de Inicio de Autenticación 3DS, proporcionando los parámetros listados en el json más abajo.
- Generación de datos de autenticación
- Pasarela de pagos utiliza la información proporcionada para generar los datos necesarios para la autenticación 3D Secure.
- Resultado de la autenticación
- Si, durante el proceso de autenticación, el resultado indica "isFrictionless: true", lo que significa que el flujo es "frictionless", se proporcionarán los parámetros necesarios para llevar a cabo el paso 4.
- En caso de que el resultado del proceso de autenticación muestre "isFrictionless: false", indicando un "paso adicional" que requiere autenticación por parte del titular de la tarjeta, se devolverá una URL. Esta URL permitirá al usuario completar el paso adicional. Posteriormente, se notificará el resultado al endpoint especificado en el parámetro "urlNotification".
- Procesamiento del pago
- Una vez completada la autenticación, se genera una respuesta que indica el resultado del proceso.
- En caso que la autenticación tenga un ECI que asegure el respaldo de dicha transacción, el comercio envía los datos recibidos junto con datos adicionales de la transacción al endpoint “MakePayment“
Notas importantes
- Es crucial que las implementaciones de pago “server-to-server” cumplan con los estándares de seguridad PCI DSS para garantizar la protección adecuada de la información sensible de la tarjeta de crédito y para evitar posibles violaciones de seguridad.
- Las autenticación de transacciones a traves de 3DS puede generar costos adicionales.
El endpoint de Inicio de Autenticación 3DS es responsable de recibir los datos necesarios para iniciar el proceso de autenticación 3D Secure para una transacción específica. Este proceso se desencadena en situaciones que requieren una autenticación adicional, como transacciones de alto riesgo o aquellas que cumplen con ciertos criterios predefinidos.
Method: post
URL: http://{environment-domain}/api/v1/begin-threeds
Encabezados HTTP:Content-Type: application/json
Agregar encabezados de autenticación
Ejemplo:
{
"transactionType": "sale",
"merchantId": "3ae25846-d5fe-40cc-a311-eb2de5174c29",
"terminalId": "3ae25846-d5fe-40cc-a311-eb2de5174c29",
"urlNotification": "https://comercio.shop/api/notificationResultd3ds",
"order": {
"merchantOrderId": "9a6ecf36-8265-11ee-b962-0242ac120002",
"amount": "100.00",
"currency": "484"
},
"card": {
"cardNumber": "4111111111111111",
"expiryMonth": "01",
"expiryYear": "2025",
"cvv2": "123",
"holderName": "Clark Parker",
"email": "[email protected]"
},
"aditionalDataToThreeds": {
"ip": "192.168.0.1",
"browserAcceptHeader": "text/html",
"browserScreenColorDepth": "36",
"browserJavaEnabled": false,
"browserLanguage": "es/mx",
"browserScreenHeight": "1920",
"browserScreenWith": "1080",
"browserTimezone": "60",
"browserChallengeWindows": "4",
"browserUserAgent": "Mozilla/4.0 (MSIE 6.0; Windows NT 5.0)"
}
}
Descripción de campos
Campo | Descripción |
---|---|
transactionType | Identificador único de la terminal, es asignado al momento de crear la cuenta. |
merchantId | Identificador único del comerciante en la pasarela de pago, es asignado al momento de crear la cuenta. |
terminalId | Identificador único de la terminal, es asignado al momento de crear la cuenta. |
urlNotification | URL donde se notificará el resultado en caso de que el flujo sea ”paso adicional”. |
order | Contiene detalles sobre la orden de compra. |
merchantOrderId | Identificador único de la orden asignado por el comercio. |
amount | Monto total de la orden. |
currency | Código de moneda según el estándar ISO 4217. |
card | Información relacionada con la tarjeta del cliente. |
cardNumber | Número de la tarjeta. |
expiryMonth | Mes de vencimiento de la tarjeta. |
expiryYear | Año de vencimiento de la tarjeta. |
cvv2 | Código de seguridad de la tarjeta. |
holderName | Nombre del titular de la tarjeta. |
email | Dirección de correo electrónico asociada a la tarjeta. |
aditionalDataToThreeds | Datos adicionales requeridos para las transacciones de threeds. |
ip | Indica si se debe guardar la tarjeta en el archivo para futuras transacciones. |
browserAcceptHeader | Este dato deber ser extraído del navegador. |
browserScreenColorDepth | Este dato deber ser extraído del navegador. |
browserJavaEnabled | Este dato deber ser extraído del navegador. |
browserLanguage | Este dato deber ser extraído del navegador. |
browserScreenHeight | Este dato deber ser extraído del navegador. |
browserScreenWith | Este dato deber ser extraído del navegador. |
browserTimezone | Este dato deber ser extraído del navegador. |
browserChallengeWindows | Este dato deber ser extraído del navegador. |
browserUserAgent | Este dato deber ser extraído del navegador. |
Ejemplo de respuesta exitosa flujo “frictionless“ y de notificación del resultado en el flujo ”paso adicional”:
Http code 200
{
"id": "5c51bebd-5b21-4ef3-b980-d41eb0b83568",
"order": {
"merchantOrderId": "9a6ecf36-8265-11ee-b962-0242ac120002",
"amount": "100.00",
"currency": "484"
},
"isFrictionless": true,
"consumerAuthenticationInformation": {
"acsTransactionId": "72f84fb0-9800-4961-b3b6-f9ced353deb5",
"authenticationResult": "0",
"authenticationStatusMsg": "Success",
"cavv": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"indicator": "vbv",
"eci": "05",
"eciRaw": "05",
"paresStatus": "Y",
"specificationVersion": "2.2.0",
"threeDSServerTransactionId": "60408358-4aec-4e67-bd53-3bacf7bfd8d4",
"xid": "AAIBBYl3AgAAAMNQSEMgdQAAAAA=",
"directoryServerTransactionId": "4890d3d3-b584-4a4d-84f0-1e820b924e7a"
"submitTimeUtc": "2023-11-16T18:26:46Z",
"status": "AUTHENTICATION_SUCCESSFUL",
"clientReferenceInformation": {
"code": "9205066"
}
}
}
Descripción de campos
Campo | Descripción |
---|---|
id | Id único de la transacción asignado por la pasarela de pagos. |
order | Contiene detalles sobre la orden de compra. |
merchantOrderId | Identificador único de la orden asignado por el comercio. |
amount | Monto total de la orden. |
currency | Código de moneda según el estándar ISO 4217. |
isFrictionLess | Respuesta del flujo de la transacción. |
consumerAuthenticationInformation | Información del resultado de la autenticación. |
acsTransactionId | Identificador único de la transacción en el servidor de autenticación de emisor (ACS). |
authenticationResult | Resultado de la autenticación, donde "0" indica éxito. |
authenticationStatusMsg | Mensaje que indica el estado de la autenticación, en este caso, "Success" (éxito). |
cavv | Valor criptográfico de la autenticación del titular de la tarjeta. |
indicator | Indicador utilizado en la autenticación, en este caso, "vbv" Verified by Visa. |
eci | Indicador de la información de la autenticación. |
eciRaw | Indicador de la información de la autenticación en formato sin procesar. |
paresStatus | Estado de la autenticación de la tarjeta. |
specificationVersion | Versión de la especificación 3DS utilizada en la transacción. |
threeDSServerTransactionId | Identificador único de la transacción en el servidor 3DS. |
xid | Identificador de transacción del comerciante. |
directoryServerTransactionId | Identificador único de la transacción en el servidor de directorio. |
submitTimeUtc | Fecha y hora en formato UTC de cuando se envió la transacción para su validación. |
status | Estado de la autenticación de la transacción. En este caso, "AUTHENTICATION_SUCCESSFUL" indica que la autenticación 3DS fue exitosa. |
clientReferenceInformation | Información de referencia del cliente |
code | Código de referencia del cliente asociado a la transacción. |
Ejemplo respuesta exitosa en el flujo ”paso adicional”:
Http code 200
{
"id": "5c51bebd-5b21-4ef3-b980-d41eb0b83568",
"order": {
"merchantOrderId": "9a6ecf36-8265-11ee-b962-0242ac120002",
"amount": "100.00",
"currency": "484"
},
"isFrictionless": false,
"urlRedirect": "https://{TODO domain}/threeds/1c128bb3-f8ca-4732-a91b-13a0db5a3272"
}
Descripción de Campos
Campo | Descripción |
---|---|
id | Id único de la transacción asignado por la pasarela de pagos. |
order | Contiene detalles sobre la orden de compra. |
merchantOrderId | Identificador único de la orden asignado por el comercio. |
amount | Monto total de la orden. |
currency | Código de moneda según el estándar ISO 4217. |
isFrictionLess | Respuesta del flujo de la transacción. |
urlRedirect | URL a la que se debe redirigir el cliente o cargarla sobre un iframe. |
Updated 3 months ago