Criação da sessão 3DS

Criar Sessão 3DS

post

Cria uma sessão 3DS e retorna os dados necessários para coleta de informações do navegador.\n\n ⚠️ IMPORTANTE: A sessão 3DS só consegue ser testada completamente em produção.

Autorizações
Corpo
sourceTypestring · enumObrigatório

Tipo da fonte de pagamento

Example: cardValores possíveis:
cardIdstring · uuidObrigatório

ID do cartão retornado na tokenização

Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
Respostas
201

Sessão 3DS criada com sucesso

application/json
post
POST /v1/3ds/session HTTP/1.1
Host: api.barte.com
X-Token-Api: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 69

{
  "sourceType": "card",
  "cardId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
  "id": "701d8f14-9b5f-40b0-8013-422e0020c522",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "collectUrl": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect",
  "providerType": "CYBERSOURCE"
}

⚠️ Campos importantes:

  • collectUrl: URL onde o navegador vai enviar dados de background.

  • token: JWT usado no script de coleta.

  • id: (setupId) — será enviado depois no pagamento.

Coletar Dados do Navegador

Objetivo:

Antes de criar uma cobrança, é necessário coletar os dados do cliente. Para isso, é necessário incluir um script no front-end que fará essa coleta e enviará para o provedor 3DS. Existem 2 campos necessários para a coleta de dados, o collectUrl e o token. Esses campos são retornados na criação da sessão.

Script de coleta:

<div style="display: none;">
  <iframe id="cardinal_collection_iframe" name="collectionIframe" height="1" width="1"></iframe>
  <form id="cardinal_collection_form" method="POST" target="collectionIframe">
    <input id="cardinal_collection_form_input" type="text" name="JWT" value="">
  </form>
</div>
<script>
  const collectUrl = '<collectUrl>';
  const token = '<token>';
  const docFormCardinal = document.getElementById('cardinal_collection_form');
  const docInputCardinal = document.getElementById('cardinal_collection_form_input');
  docFormCardinal.action = collectUrl;
  docInputCardinal.value = token;
  docFormCardinal.submit();
  window.addEventListener("message", function (event) {
    const origin = new URL(collectUrl).origin;
    if (event.origin === origin) {
      const data = JSON.parse(event.data);
      console.log('COLETA FINALIZADA:', data);
    }
  });
</script>

⚠️ Observação:

  • O Seller precisa aguardar a finalização da coleta antes de prosseguir para a criação da cobrança.

  • Coleta rápida (~1s).

Atualizado

Isto foi útil?