Criação da sessão 3DS
Objetivo:
Criar uma sessão para coleta de dados do navegador.
cardId
- O ID retornado no response da criação do cartão
REQUEST
POST POST <https://sandbox-api.barte.com/v1/3ds/create-session>
Headers:
- X-Token-Api: <token-api>
- Content-Type: application/json
Body:
{
"sourceType": "card",
"cardId": "<id-do-cartao>" -
}
RESPONSE
{
"id": "701d8f14-9b5f-40b0-8013-422e0020c522",
"token": "<jwt-token>",
"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 irá coletar os dados do cliente e enviar para o provedor 3DS. Existe 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?