Desafío

Para iniciar un desafío, no basta con redirigir al comprador para la URL obtenida en el campo acs.url, es necesario hacer un POST desde CReq. Al final de los desafíos, el solicitante 3DS recibirá información (en la URL apuntada en el campo notification_url) sobre la transacción 3DS dentro del objeto CRes.

Envio del CReq#

El CReq POST debe hacerse con el encabezado Content-Type = application/x-www-form-urlencoded cuando device_channel = 02 o application/jose cuando device_channel = 01. En esta forma, debe enviar el parámetro creq, cuyo contenido es CReq codificado en Base64 URL-safe encoding.

Ejemplos#

CReq JSON:

{
"threeDSServerTransID": "12341234-1234-1234-1234-123412341234",
"acsTransID": "43214321-4321-4321-4321-432143214321",
"challengeWindowSize": "05",
"messageType": "CReq",
"messageVersion": "2.2.0"
}

CReq Base64:

ewogICAgInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiMTIzNDEyMzQtMTIzNC0xMjM0LTEyMzQtMTIzNDEyMzQxMjM0IiwKICAgICJhY3NUcmFuc0lEIjoiNDMyMTQzMjEtNDMyMS00MzIxLTQzMjEtNDMyMTQzMjE0MzIxIiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDUiLAogICAgIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsCiAgICAibWVzc2FnZVZlcnNpb24iOiIyLjIuMCIKfQ

HTML de redirección al desafío:

<!DOCTYPE html>
<html>
<body onload="javascript:iniciar();">
<script type="text/javascript">
function iniciar() {
document.forms.form.submit();
}
</script>
<form action="https://www.acs.com/challenge" method="POST">
<input type="hidden" name="creq" value="ewogICAgInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiMTIzNDEyMzQtMTIzNC0xMjM0LTEyMzQtMTIzNDEyMzQxMjM0IiwKICAgICJhY3NUcmFuc0lEIjoiNDMyMTQzMjEtNDMyMS00MzIxLTQzMjEtNDMyMTQzMjE0MzIxIiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDUiLAogICAgIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsCiAgICAibWVzc2FnZVZlcnNpb24iOiIyLjIuMCIKfQ"/>
</form>
</body>
</html>

Parámetros de CReq#

ParámetroDescripciónFormatoObligatorio
threeDSRequestorAppURLURL de la aplicación del comerciante.< 256 ANNO
threeDSServerTransIDID de la transacción 3DS Server= 36 ANSI
acsTransIDID de la transacción ACS= 36 ANSI
challengeCancelIndicador que informa al ACS y al DS de que la autentificación ha sido cancelada.
  • 01 = El portador ha seleccionado "Cancelar"
  • 03 = Timeout de autentificación decoupled
  • 04 = Timeout no ACS
  • 05 = Primero CReq no recebido por el ACS
  • 06 = Error en al transacción
  • 07 = Desconocido
  • 08 = Timeout en el 3DS SDK
= 2 NNO
challengeDataEntryContiene los datos que el portador ha escrito en el campo de texto de la interfaz nativa.< 45 ANNO
challengeHTMLDataEntryContiene los datos que el portador ha escrito en el campo de texto de la interfaz HTML.< 256 ANNO
challengeNoEntryIndicador que informa de que el portador ha enviado una respuesta vacía.
  • Y = Sim entrada de datos
= 1 ANNO
challengeWindowSizeDimensiones de la ventana de desafío mostrada al portador.
  • 01 = 250 x 400
  • 02 = 390 x 400
  • 03 = 500 x 600
  • 04 = 600 x 400
  • 05 = Pantalla completa
= 2 NSi
messageTypeValor fijo CReq.= 4 ANSI
messageVersionVersión del mensaje 3DS: 2.1.0 ou 2.2.0.< 8 ANSI
oobContinueValor booleano que notifica al ACS que el portador ha completado la autenticación seleccionando el botón "Continuar" en un formulario de identificación OOB.< 5 ANNO
resendChallengeIndicador para que el PSC reenvíe el código de información del desafío al portador.
  • Y = Reenviar
  • N = No reenviar
= 1 ANNO
sdkTransIDID de transacción 3DS SDK. Obligatorio cuando device_channel = 01.= 36 ANCOND.
sdkCounterStoAContador utilizado como medida de seguridad en el canal seguro entre 3DS SDK y ACS.< 3 ANNO
whitelistingDataEntryIndicador proporcionado por el SDK al ACS para confirmar si el portador ha optado por la lista blanca.
  • Y = Lista blanca confirmada
  • N = Lista blanca no confirmada
= 1 ANNO
messageExtension[]Los datos necesarios para ayudar en los requisitos no definidos en el mensaje 3DS se cargan en una extensión del mensaje.
criticalityIndicatorUn valor booleano que indica si el destinatario debe entender el contenido de la extensión para interpretar el mensaje completo.< 5 ANNO
dataDatos cargados en la extensión.ObjectNO
iddentificador único de la extensión.< 64 ANNO
nameNombre de la extensión.< 64 ANNO

Recepción del CRes#

El CRes llegará en formato JSON codificado en Base64 en la URL informada en el servicio de autenticación (campo notification_url).

Parámetros del CRes#

ParámetroDescripciónFormato
threeDSServerTransIDID de transacción 3DS Server= 36 AN
acsCounterAtoSContador utilizado como medida de seguridad en el canal seguro entre ACS y 3DS SDK.< 3 AN
acsTransIDID de transacción en el ACS= 36 AN
challengeCompletionIndIndicador de estado del desafío.
  • Y = Desafío concluido, y no se requerirán nuevos mensajes de desafío
  • N = Desafío no concluido, y se requerirán nuevos mensajes de desafío
= 1 AN
messageTypeValor fijo CRes.= 4 AN
messageVersionVersión de los mensajes 3DS: 2.1.0 ou 2.2.0.< 8 AN
sdkTransIDID de transacción en el 3DS SDK= 36 AN
transStatusEstado de la transacción según el protocolo 3DS 2.0.
  • Y = autentificado con éxito
  • N = No autentificado; transacción negada.
  • U = Autentificación no pude ser realizada; problemas técnicos u otros.
  • A = Intentos de procesamiento realizados; no autentificados, pero se proporciona una prueba de autentificación.
  • C = Desafío requerido.
  • D = Autentificación decoupled requerida.
  • R = Autentificación rechazada por el emisor.
= 1 AN
messageExtension[]Los datos necesarios para asistir a los requisitos no definidos en el mensaje 3DS se cargan en una extensión del mensaje.
criticalityIndicatorUn valor booleano que indica si el destinatario debe entender el contenido de la extensión para interpretar el mensaje completo.< 5 AN
dataDatos cargados en la extensión.Object
idIdentificador único de la extensión.< 64 AN
nameNombre de la extensión.< 64 AN