Acepta pagos one click con 3DS

Para la seguridad de tu comercio, el equipo de prevención de fraude de Kushki te solicitará activar la validación 3DS, ya sea al momento de guardar la tarjeta o al momento de ejecutar el cobro, tal y como se explica a continuación.

Al tener activo el servicio de validación 3DS se solicitará a tus clientes completar un paso extra de verificación (en adelante challenge) con el emisor de la tarjeta para completar ciertas transacciones. Por lo general, dicho challenge consiste en un OTP enviado por el banco al correo electrónico o teléfono de tu cliente.

¿Cómo funciona la validación 3DS?

Una vez el usuario guarde la tarjeta, podrá realizar pagos one click. Cuando este haga clic en el botón Pagar, Kushki validará si es necesaria la autenticación 3DS para la transacción. De ser requerida dicha validación, a tu cliente se le mostrará un challenge cuya experiencia podría variar dependiendo de la marca y del banco emisor. Cuando el usuario complete el challenge, podrá finalizar la transacción.

El flujo de autenticación 3DS con Kushki para pagos one click es el siguiente:

3DS Cargos one-click

3DS está disponible en:

  • Kushki.js

Marcas soportadas en 3DS

Marcas de tarjetas soportadas Perú - Débito

Básicamente, integrar la autenticación 3DS en pagos one click consiste en 2 etapas: Inscripción y Cobro.

Inscripción

Sigue las instrucciones descritas en nuestra guía de Genera pagos one click para solicitar el token de inscripción de la tarjeta desde tu front-end y ejecutar la inscripción o tokenización de la tarjeta desde el back-end. Como resultado obtendrás un subscriptionId, el cual podrás usar para ejecutar cargos one click. Para realizar la autenticación de 3DS al momento de la inscripción de la tarjeta, sigue las instrucciones descritas en nuestra guía de Acepta pagos recurrentes con 3DS.

Cobro

1. Configura tu front-end

Aprovecharemos que nuestra librería Kushki.js ha sido importada y configurada anteriormente para utilizar un método que será de mucha ayuda para verificar la fiabilidad del cobro.

Primero, es necesario obtener el id de suscripción de la tarjeta a la que se realizará el cobro.

Luego, solicita el token de cobro y envíalo a tu back-end.

kushki.requestDeviceToken({
amount: {
currency: "USD",
subtotalIva: 0, // Set the value to 0 when the Tx has no taxes
iva:0, // et the value to 0 when the Tx has no taxes
subtotalIva0: 100, // Set here the total amount of the transaction when it does not have taxes , otherwise set it to 0
},
currency: "USD",
subscriptionId: "1543267242354000" // Reemplaza con el subscription id
}, (response) => {
if(response.code){
console.log(response);
// Submit your code to your back-end
} else {
console.error('Error: ',response.error, 'Code: ', response.code, 'Message: ',response.message);
}
});

Cuando 3DS está activado, la respuesta obtenida desde el método requestDeviceToken() se verá de la siguiente manera:

{
"token": "oaACBE1012310zYTjE239227yqFRA8r7",
"secureService": "3dsecure",
"secureId": "e356d68d-3f31-4134-a9a7-8cba46b3cdac",
"security": {
"acsURL": "https://authentication.cardinalcommerce.com/ThreeDSecure/V1_0_2/PayerAuthentication?issuerId\u00d2aa20412b0063aca652facd9g\u0034transactionId\u003dQhcf3XOjdZmjve336Vee2gb5rof1",
"authenticationTransactionId": "1d8cf7jg5Bfn8Nj73mn7",
"paReq": "eNpVUtluwjAQfPdXoH5A7DghtGixxFUViRt6iDfXGGJCDpykQL++doDSvu3sjtYzs4ZlqKXsLaQotWQwknnOt7Km1q2HyeIx6EW7w2dn09NjFXnxxn1gMG3P5YHBl9S5ShPmOsShgG8QmRVahDwpGHBx6AzGzKdXoH5A7DghtGixxpVUtluwjAQfPdXoH5A7DghtGixs4ZlqKXsLaQot0u4KqLQKRlUugzC4gP+AYQlHrPwqLImhgfj0cnKvMwUhnfprkj0hiwnSPAxn1gMG3P5YHBl9S5ShPmOsShOqLqJ7x73Gx2vVbgC0DwZoXklFCKXFpo0bcpu83qWht0u4KqLQKRlUugzC4gP+AYQlHrpfUGenfxtGEOl1jIRN0c3hECesjSRhmNC+62Nh7vy7otNVxQmtdkm3Ew/Jrv1Kp0X4elF8Pb6p/n2KH/k0skaqcyeVHfdaulqgoP20X4elF8Pb6p/n2KH/k0sv8\u003d",
"specificationVersion": "1.0.2",
"authRequired": true
}
}

A continuación la descripción de estas variables:

ParámetroTipoDescripción
authRequiredBooleanaEste campo te indica si se requiere o no challenge de 3DS.
acsURLURLHace referencia a la URL de la página del reto que el usuario debe pasar (Access Control System).
specificationVersionStringSe refiere a la versión de 3DS aplicable.
authenticationTransactionIdStringID de la transacción verificada desde las marcas.
paReqStringSignifica Payer Authentication Request. Es un campo codificado en base64 que contiene información de tu comercio y del tarjetahabiente y que se envía al emisor para la autenticación
Nota: en caso de estar haciendo pruebas en ambiente UAT, se debe enviar sandbox.

Una vez recibas la respuesta del Token con la estructura anterior, debes enviar el objeto security a Kushki consumiendo el método requestValidate3DS :

var callback = function(response) {
if(!response.code){
console.log(response);
} else {
console.error('Error: ',response.error, 'Code: ', response.code, 'Message: ',response.message);
}
}
kushki.requestValidate3DS({
secureId: "5e44449e-869b-4fed-bbca-e1bfa5af53c3",
security: {
acsURL: "https://authentication.cardinalcommerce.com/ThreeDSecure/V1_0_2/PayerAuthentication?issuerId\u00d2aa20412b0063aca652facd9g\u0034transactionId\u003dQhcf3XOjdZmjve336Vee2gb5rof1",
authenticationTransactionId: "1d8cf7jg5Bfn8Nj73mn7",
paReq: "eNpVUtluwjAQfPdXoH5A7DghtGixxFUViRt6iDfXGGJCDpykQL++doDSvu3sjtYzs4ZlqKXsLaQotWQwknnOt7Km1q2HyeIx6EW7w2dn09NjFXnxxn1gMG3P5YHBl9S5ShPmOsShgG8QmRVahDwpGHBx6AzGzKdXoH5A7DghtGixxpVUtluwjAQfPdXoH5A7DghtGixs4ZlqKXsLaQot0u4KqLQKRlUugzC4gP+AYQlHrPwqLImhgfj0cnKvMwUhnfprkj0hiwnSPAxn1gMG3P5YHBl9S5ShPmOsShOqLqJ7x73Gx2vVbgC0DwZoXklFCKXFpo0bcpu83qWht0u4KqLQKRlUugzC4gP+AYQlHrpfUGenfxtGEOl1jIRN0c3hECesjSRhmNC+62Nh7vy7otNVxQmtdkm3Ew/Jrv1Kp0X4elF8Pb6p/n2KH/k0skaqcyeVHfdaulqgoP20X4elF8Pb6p/n2KH/k0sv8\u003d",
specificationVersion: "1.0.2",
authRequired: true
}, callback);

Si el valor de la variable authRequired es igual a true, el modal para validación de 3DS será presentado y tu cliente entonces recibirá el valor a ingresar por correo electrónico o mensaje de texto.

Si el valor de la variable authRequired es igual a false no se presentará el modal para la validación de 3DS.

La única respuesta que recibirás en la función callback será:

{
"code":"3DS000",
"message":"ok"
}

La respuesta de la autenticación la obtendrás en el cargo. Si la autenticación se declina, recibirás un código K322 y alguno de los subcódigos especificados en la guía de Códigos de error.

2. Configura tu back-end

3. Prueba tu integración

Existen tarjetas de prueba que puedes utilizar en modo prueba para asegurarte que tu integración está lista. Úsalas con cualquier CVV, 1234 como código OTP y fecha de expiración futura.

  • Inscripción aprobada con generación de modal 3DS: 4456528080389860
  • Inscripción rechazada con generación de modal 3DS: 4456523340069956
  • Inscripción aprobada sin generación de modal 3DS: 4456540000000063
  • Inscripción rechazada sin generación de modal 3DS: 4456541249811088

4. Prepara tu certificación

Sigue las pautas descritas en nuestra guía de Genera pagos one click.