Pedido com 3DS (3D Secure)

Este guia descreve o fluxo completo para criação de pedidos utilizando 3D Secure (3DS), incluindo a criação da sessão, coleta de dados do navegador e, quando necessário, o desafio de autenticação (Ste


1. Criar Card Token (Tokenização de Cartão)

A tokenização permite armazenar o cartão de forma segura para uso posterior.

Endpoint

POST /payment/v1/cards
https://api.barte.com/payment/v1/cards

Body

{
  "holderName": "JOSE DAS NEVES TEST",
  "number": "5383638854440891",
  "cvv": "220",
  "expiration": "12/2025",
  "checkZeroDollar": true,
  "buyerUuid": "1ee849a4-6bb3-47f0-b32a-293a8f0e811c"
}

Response

{
  "uuid": "80efb136-e65e-4fa3-b76a-6ee5a1953c4c",
  "status": "ACTIVE",
  "cardId": "83d353d2-716f-45cf-837f-50c18f10efa0"
}

⚠️ Importante

  • O cardToken utilizado na transação é o campo uuid

  • O campo cardId será utilizado apenas na criação da sessão 3DS

  • Caso checkZeroDollar seja false, o token pode iniciar com status PENDING e será atualizado para ACTIVE após a primeira transação bem-sucedida


2. Criar sessão 3DS

A sessão 3DS é necessária para iniciar o processo de autenticação.

Endpoint

Body

Response

📌 Guarde:

  • id → será enviado como setupId na criação do pedido

  • token e collectUrl → usados na coleta de dados do navegador


3. Coletar dados do navegador (Browser Data Collection)

Antes de criar o pedido, é obrigatório coletar os dados do navegador do cliente.

Objetivo

Enviar informações de background do navegador para o provedor 3DS.

Script de coleta

⚠️ Importante

  • O seller deve aguardar a finalização da coleta antes de criar o pedido

  • A coleta é rápida (≈ 1 segundo)


4. Criar pedido com 3DS

Após a coleta, o pedido pode ser criado informando os dados de 3DS.

Endpoint

Body (exemplo)

Response (resumo)


5. Desafio 3DS (Step Up Challenge)

O desafio só é necessário quando:

Script de Step Up

⚠️ Observações importantes:

  • O iframe apresenta o desafio do banco emissor

  • Ao finalizar, o cliente é redirecionado para o redirectURL

  • O status final da transação será enviado via webhook


Resumo de decisão

  • challenged = false → pagamento segue normalmente (PAID / FAILED)

  • challenged = true → exige Step Up Challenge

  • Resultado final sempre confirmado via webhook

🔔 Confirmação do pagamento

Após o cliente realizar o pagamento:

  1. O status da transação é atualizado na Barte

  2. Um webhook é disparado para o seu sistema

  3. Seu sistema deve validar o evento recebido

  4. A confirmação do pagamento deve ser feita exclusivamente via webhook

📌 Isso se aplica a cartão, PIX e boleto, inclusive quando o cartão retorna PAID de forma síncrona.


rotate Fluxo resumido


Campos importantes no 3DS

threeDSecure.setupId

ID da sessão 3DS criada previamente.

threeDSResponse.challenged

  • true → exige desafio (Step Up)

  • false → fluxo segue normalmente

threeDSResponse.auth.action

  • REDIRECT → redirecionamento para autenticação

📌 O resultado final do 3DS nunca deve ser inferido no frontend.


thumbtack-angle Importante sobre 3DS

  • O cliente pode ser autenticado com sucesso e ainda assim o pagamento falhar

  • O redirecionamento não confirma o pagamento

  • Somente o webhook indica o estado final da transação


lightbulb Boas práticas

  • Sempre utilize webhooks para confirmar pagamento

  • Armazene:

    • uuid do pedido

    • uuid da charge

  • Trate webhooks de forma idempotente

  • Use metadata para rastreabilidade interna

  • Aguarde a finalização da coleta de navegador no 3DS


hexagon-xmark O que não fazer

  • Confirmar pagamento sem webhook

  • Reutilizar pedidos para novas cobranças

  • Assumir sucesso após retorno síncrono do cartão

  • Criar pedido 3DS antes da coleta de navegador

  • Expor sua chave de API no frontend

Last updated

Was this helpful?