A autenticação 3DS (Three-Domain Secure) é uma medida de segurança para transações de pagamento online com cartões. O objetivo é aumentar a proteção contra fraudes, garantindo que o titular do cartão autorize a transação antes que ela seja aprovada. Segue uma descrição do fluxo de autenticação 3DS, os detalhes dos endpoints disponíveis para testes em sandbox e a biblioteca usada no fluxo de 3DS.
Fluxo da autenticação 3DS
- Início da compra: O usuário inicia uma compra em um estabelecimento online e insere os dados do cartão.
- Solicitação de validação: O adquirente do estabelecimento solicita à bandeira do cartão (por exemplo, Mastercard) a validação da transação.
- Verificação de protocolo: A bandeira do cartão verifica se o estabelecimento está habilitado para usar o protocolo 3DS. Se sim, uma solicitação de autenticação é enviada à intermediária de segurança.
- Encaminhamento para o emissor: A intermediária de segurança recebe as informações da tentativa de compra e as encaminha ao emissor do cartão para validação. Nesta etapa, pode ocorrer um desafio, dependendo da política de risco do emissor.
- Autenticação sem desafio (Frictionless): Se não houver desafio, a transação é autenticada diretamente.
- Autenticação com desafio (Challenge): Se houver desafio, o emissor do cartão envia uma mensagem à Parcelamos Tudo com os identificadores do desafio.
- Encaminhamento do desafio: A Parcelamos Tudo repassa o desafio associado ao identificador recebido e o encaminha ao cliente para confirmação de identidade.
- Resposta do cliente: O cliente responde ao desafio, autorizando ou não a compra.
- Transmissão da resposta: O emissor do cartão comunica a resposta à intermediária de segurança. A bandeira do cartão envia a resposta ao adquirente do estabelecimento, autenticando ou não a compra.
- Confirmação da compra: O parceiro utiliza o endpoint de confirmação de desafio para verificação da transação.
Cenário de testes
Para testar esse fluxo em ambiente sandbox, disponibilizamos os seguintes endpoints:
1. Inicio de um tipo de cobrança com validação 3DS
Endpoint: Inicia cobrança com 3ds
Esse primeiro endpoint tem o objetivo de validar se o cartão do cliente suporta a autenticação e iniciar a validação 3DS.
Requisição:
| Nome | Tipo | Descrição |
|---|---|---|
| charges | object | Objeto que contém informação sobre as opções de cobrança e os dados do cartão. |
| id_client | string | Identificador do cliente que está realizando o pagamento. |
Resposta:
{
"id_three_ds": "string", //identificador da cobrança com autenticação 3ds.
}2. Criação do Checkout
Após obter o identificador do 3DS, você pode criar o checkout.
Endpoint: Cria um checkout.
Requisição:
| Nome | Tipo | Descrição |
|---|---|---|
| charges | object | Objeto que contém informação sobre as opções de cobrança e os dados do cartão. |
| id_client | string | Identificador do cliente que está fazendo o pagamento. |
| id_payment_link | string | Identificador do vínculo com um link de pagamento (opcional). |
| id_user | string | Identificador do usuário que receberá comissão por esse checkout (opcional). |
Resposta:
{
"id_checkout": "string",
"id_status": "3DS_VALIDATION_REQUESTED",
"id_three_ds": "string", // Identificador da cobrança com autenticação 3ds(se aplicável).
"challenge_url": "string", // URL do desafio (se aplicável).
"credential_request": "string", // Credencial da requisição do desafio (se aplicável).
}3. Confirmação do checkout com 3DS
Se um desafio for resolvido, você pode confirmar o checkout.
Endpoint: Confirma o checkout 3DS.
Requisição: O corpo da requisição é o mesmo do endpoint anterior, acrescido do parâmetro id_checkout, obtido na resposta do endpoint de criação do checkout.
Resposta: Segue o mesmo formato de resposta do endpoint de criação do checkout.
Após a confirmação, o fluxo de autenticação 3DS é concluído, garantindo a segurança da transação.
lib-3ds-client
Biblioteca para ser utilizada pelo cliente no fluxo de 3DS.
Pacote: lib-3ds-client
A biblioteca ParcelamosTudo3DS é usada para validação do usuário e execução do desafio no processo de autenticação 3DS em transações financeiras online.
- Validação do Cliente (executeCustomerValidation): Executa uma validação inicial do cliente por meio de um formulário enviado via iframe oculto.
- Dados de entrada: São os dados retornados no endpoint de cobrança com 3ds.
id_three_ds: Identificador da autenticação 3DS.
validation_method_url: URL para a validação.
validation_method_token: Token para a validação - Dados de saída:
validation_time_to_complete: Tempo em segundos que levou para completar a validação.
- Dados de entrada: São os dados retornados no endpoint de cobrança com 3ds.
- Desafio (executeChallenge): Mostra um modal para o usuário interagir com um desafio 3DS, onde ele deve fornecer informações adicionais para completar a autenticação.
- Dados de entrada: Esses dados são retornadas na criação de checkout com 3DS.
id_three_ds: Identificador para o método 3DS.
challenge_url: URL para o desafio.
credential_request: Dados do pedido de credenciais. - Dados de saída: Nenhuma resposta (void), o método exibe o modal e espera a interação do usuário.
- Dados de entrada: Esses dados são retornadas na criação de checkout com 3DS.
