Desafio
Para iniciar um desafio, não basta apenas redirecionar o comprador para a URL obtida no campo acs.url, é necessário fazer um POST do CReq. Ao fim dos desafios, o 3DS Requestor receberá informações (na URL apontada no campo notification_url) referentes à transação 3DS dentro do objeto CRes.
Envio do CReq#
O POST do CReq deve ser feito com o cabeçalho Content-Type = application/x-www-form-urlencoded quando device_channel = 02 ou application/jose quando device_channel = 01. Neste formulário, deve ser enviado o parâmetro creq, cujo conteúdo é o CReq codificado em Base64 URL-safe encoding.
Exemplos#
CReq JSON:
CReq Base64:
HTML de redirecionamento para o desafio:
Parâmetros do CReq#
| Parâmetro | Descrição | Formato | Obrigatório | 
|---|---|---|---|
| threeDSRequestorAppURL | URL do aplicativo do lojista. | < 256 AN | NÃO | 
| threeDSServerTransID | ID da transação 3DS Server | = 36 AN | SIM | 
| acsTransID | ID da transação ACS | = 36 AN | SIM | 
| challengeCancel | Indicador que informa o ACS e o DS que a autenticação foi cancelada. 
 | = 2 N | NÃO | 
| challengeDataEntry | Contém os dados que o portador digitou no campo de texto da interface nativa. | < 45 AN | NÃO | 
| challengeHTMLDataEntry | Contém os dados que o portador digitou no campo de texto da interface HTML. | < 256 AN | NÃO | 
| challengeNoEntry | Indicador que informa que o portador submeteu uma resposta vazia. 
 | = 1 AN | NÃO | 
| challengeWindowSize | Dimensões da janela de desafio exibida ao portador. 
 | = 2 N | SIM | 
| messageType | Valor fixo CReq. | = 4 AN | SIM | 
| messageVersion | Versão de mensagem 3DS: 2.1.0ou2.2.0. | < 8 AN | SIM | 
| oobContinue | Valor booleano que notifica o ACS que o portador completou a autenticação selecionando o botão "Continuar" numa forma de autenticação OOB. | < 5 AN | NÃO | 
| resendChallenge | Indicador para o ACS para reenviar o código de informação de desafio para o portador. 
 | = 1 AN | NÃO | 
| sdkTransID | ID de transação 3DS SDK. Obrigatório quando device_channel=01. | = 36 AN | COND. | 
| sdkCounterStoA | Contador usado como medida de segurança no canal seguro entre 3DS SDK e ACS. | < 3 AN | NÃO | 
| whitelistingDataEntry | Indicador fornecido pelo SDK ao ACS para confirmar se a lista branca foi optada pelo portador. 
 | = 1 AN | NÃO | 
| messageExtension[] | Dados necessários para auxiliar em requisitos não definidos na mensagem 3DS são carregados numa extensão de mensagem. | ||
| criticalityIndicator | Um valor booleano que indica se o destinatário deve entender os conteúdos da extensão para interpretar a mensagem inteira. | < 5 AN | NÃO | 
| data | Dados carregados na extensão. | Object | NÃO | 
| id | Identificador único da extensão. | < 64 AN | NÃO | 
| name | Nome da extensão. | < 64 AN | NÃO | 
Recebimento do CRes#
O CRes chegará em formato JSON codificado em Base64 na URL informada no serviço de autenticação (campo notification_url).
Parâmetros do CRes#
| Parâmetro | Descrição | Formato | 
|---|---|---|
| threeDSServerTransID | ID de transação 3DS Server | = 36 AN | 
| acsCounterAtoS | Contador usado como medida de segurança no canal seguro entre ACS e 3DS SDK. | < 3 AN | 
| acsTransID | ID de transação no ACS | = 36 AN | 
| challengeCompletionInd | Indicador do estado do desafio. 
 | = 1 AN | 
| messageType | Valor fixo CRes. | = 4 AN | 
| messageVersion | Versão de mensagem 3DS: 2.1.0ou2.2.0. | < 8 AN | 
| sdkTransID | ID de transação no 3DS SDK | = 36 AN | 
| transStatus | Status da transação segundo o protocolo 3DS 2.0. 
 | = 1 AN | 
| messageExtension[] | Dados necessários para auxiliar em requisitos não definidos na mensagem 3DS são carregados numa extensão de mensagem. | |
| criticalityIndicator | Um valor booleano que indica se o destinatário deve entender os conteúdos da extensão para interpretar a mensagem inteira. | < 5 AN | 
| data | Dados carregados na extensão. | Object | 
| id | Identificador único da extensão. | < 64 AN | 
| name | Nome da extensão. | < 64 AN |