Docs
Docs

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

  1. 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.
  2. 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.
  3. 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".
  4. 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

CampoDescripción
transactionTypeIdentificador único de la terminal, es asignado al momento de crear la cuenta.
merchantIdIdentificador único del comerciante en la pasarela de pago, es asignado al momento de crear la cuenta.
terminalIdIdentificador único de la terminal, es asignado al momento de crear la cuenta.
urlNotificationURL donde se notificará el resultado en caso de que el flujo sea ”paso adicional”.
orderContiene detalles sobre la orden de compra.
merchantOrderIdIdentificador único de la orden asignado por el comercio.
amountMonto total de la orden.
currencyCódigo de moneda según el estándar ISO 4217.
cardInformación relacionada con la tarjeta del cliente.
cardNumberNúmero de la tarjeta.
expiryMonthMes de vencimiento de la tarjeta.
expiryYearAño de vencimiento de la tarjeta.
cvv2Código de seguridad de la tarjeta.
holderNameNombre del titular de la tarjeta.
emailDirección de correo electrónico asociada a la tarjeta.
aditionalDataToThreedsDatos adicionales requeridos para las transacciones de threeds.
ipIndica si se debe guardar la tarjeta en el archivo para futuras transacciones.
browserAcceptHeaderEste dato deber ser extraído del navegador.
browserScreenColorDepthEste dato deber ser extraído del navegador.
browserJavaEnabledEste dato deber ser extraído del navegador.
browserLanguageEste dato deber ser extraído del navegador.
browserScreenHeightEste dato deber ser extraído del navegador.
browserScreenWithEste dato deber ser extraído del navegador.
browserTimezoneEste dato deber ser extraído del navegador.
browserChallengeWindowsEste dato deber ser extraído del navegador.
browserUserAgentEste 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


CampoDescripción
idId único de la transacción asignado por la pasarela de pagos.
orderContiene detalles sobre la orden de compra.
merchantOrderIdIdentificador único de la orden asignado por el comercio.
amountMonto total de la orden.
currencyCódigo de moneda según el estándar ISO 4217.
isFrictionLessRespuesta del flujo de la transacción.
consumerAuthenticationInformationInformación del resultado de la autenticación.
acsTransactionIdIdentificador único de la transacción en el servidor de autenticación de emisor (ACS).
authenticationResultResultado de la autenticación, donde "0" indica éxito.
authenticationStatusMsgMensaje que indica el estado de la autenticación, en este caso, "Success" (éxito).
cavvValor criptográfico de la autenticación del titular de la tarjeta.
indicatorIndicador utilizado en la autenticación, en este caso, "vbv" Verified by Visa.
eciIndicador de la información de la autenticación.
eciRawIndicador de la información de la autenticación en formato sin procesar.
paresStatusEstado de la autenticación de la tarjeta.
specificationVersionVersión de la especificación 3DS utilizada en la transacción.
threeDSServerTransactionIdIdentificador único de la transacción en el servidor 3DS.
xidIdentificador de transacción del comerciante.
directoryServerTransactionIdIdentificador único de la transacción en el servidor de directorio.
submitTimeUtcFecha y hora en formato UTC de cuando se envió la transacción para su validación.
statusEstado de la autenticación de la transacción. En este caso, "AUTHENTICATION_SUCCESSFUL" indica que la autenticación 3DS fue exitosa.
clientReferenceInformationInformación de referencia del cliente
codeCó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


CampoDescripción
idId único de la transacción asignado por la pasarela de pagos.
orderContiene detalles sobre la orden de compra.
merchantOrderIdIdentificador único de la orden asignado por el comercio.
amountMonto total de la orden.
currencyCódigo de moneda según el estándar ISO 4217.
isFrictionLessRespuesta del flujo de la transacción.
urlRedirectURL a la que se debe redirigir el cliente o cargarla sobre un iframe.