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:
CReq Base64:
HTML de redirección al desafío:
Parámetros de CReq#
| Parámetro | Descripción | Formato | Obligatorio | 
|---|---|---|---|
threeDSRequestorAppURL | URL de la aplicación del comerciante. | < 256 AN | NO | 
threeDSServerTransID | ID de la transacción 3DS Server | = 36 AN | SI | 
acsTransID | ID de la transacción ACS | = 36 AN | SI | 
challengeCancel | Indicador que informa al ACS y al DS de que la autentificación ha sido cancelada.
  | = 2 N | NO | 
challengeDataEntry | Contiene los datos que el portador ha escrito en el campo de texto de la interfaz nativa. | < 45 AN | NO | 
challengeHTMLDataEntry | Contiene los datos que el portador ha escrito en el campo de texto de la interfaz HTML. | < 256 AN | NO | 
challengeNoEntry | Indicador que informa de que el portador ha enviado una respuesta vacía.
  | = 1 AN | NO | 
challengeWindowSize | Dimensiones de la ventana de desafío mostrada al portador.
  | = 2 N | Si | 
messageType | Valor fijo CReq. | = 4 AN | SI | 
messageVersion | Versión del mensaje 3DS: 2.1.0 ou 2.2.0. | < 8 AN | SI | 
oobContinue | Valor 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 AN | NO | 
resendChallenge | Indicador para que el PSC reenvíe el código de información del desafío al portador.
  | = 1 AN | NO | 
sdkTransID | ID de transacción 3DS SDK. Obligatorio cuando device_channel = 01. | = 36 AN | COND. | 
sdkCounterStoA | Contador utilizado como medida de seguridad en el canal seguro entre 3DS SDK y ACS. | < 3 AN | NO | 
whitelistingDataEntry | Indicador proporcionado por el SDK al ACS para confirmar si el portador ha optado por la lista blanca.
  | = 1 AN | NO | 
| messageExtension[] | Los datos necesarios para ayudar en los requisitos no definidos en el mensaje 3DS se cargan en una extensión del mensaje. | ||
criticalityIndicator | Un valor booleano que indica si el destinatario debe entender el contenido de la extensión para interpretar el mensaje completo. | < 5 AN | NO | 
data | Datos cargados en la extensión. | Object | NO | 
id | dentificador único de la extensión. | < 64 AN | NO | 
name | Nombre de la extensión. | < 64 AN | NO | 
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ámetro | Descripción | Formato | 
|---|---|---|
threeDSServerTransID | ID de transacción 3DS Server | = 36 AN | 
acsCounterAtoS | Contador utilizado como medida de seguridad en el canal seguro entre ACS y 3DS SDK. | < 3 AN | 
acsTransID | ID de transacción en el ACS | = 36 AN | 
challengeCompletionInd | Indicador de estado del desafío.
  | = 1 AN | 
messageType | Valor fijo CRes. | = 4 AN | 
messageVersion | Versión de los mensajes 3DS: 2.1.0 ou 2.2.0. | < 8 AN | 
sdkTransID | ID de transacción en el 3DS SDK | = 36 AN | 
transStatus | Estado de la transacción según el protocolo 3DS 2.0.
  | = 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. | |
criticalityIndicator | Un valor booleano que indica si el destinatario debe entender el contenido de la extensión para interpretar el mensaje completo. | < 5 AN | 
data | Datos cargados en la extensión. | Object | 
id | Identificador único de la extensión. | < 64 AN | 
name | Nombre de la extensión. | < 64 AN |