Iniciando autenticação 3DS

Função startThreeDs no JavaScript do Carat#

Essa chamada é essencial para ativar a autenticação 3DS 2.0, verificar se o número do cartão do portador está dentro do intervalo de cartões suportados para a autenticação e, quando necessário, iniciar o fluxo de 3DS Methods para capturar informações adicionais do navegador, com o intuito de facilitar a tomada de decisões com base no risco (RBA-Risk Based Analysis), aumentando as chances de se obter uma autenticação sem desafio.

Para usar a função startThreeDs, basta adicionar o arquivo de pagamento JavaScript com autenticação 3DS 2.0 e a tag div na página de checkout. Tanto o arquivo quanto a tag div são essenciais para garantir que a função startThreeDs funcione corretamente.

Script JS#

URL para ambiente de Produção:

https://esitef.softwareexpress.com.br/js/esitefauthenticatepayment-1.0.min.js

URL para ambiente de Homologação:

https://esitef-homologacao.softwareexpress.com.br/js/esitefauthenticatepayment-1.0.min.js

Abaixo está a tag div obrigatória para o funcionamento do 3DS method

<div id="divThreeDsMethodData"></div>

Campo do número do cartão#

Além dos itens mencionados anteriormente, é crucial que o campo do número do cartão possua a classe especificada abaixo:

ParâmetroDescriçãoFormatoObrigatório
esitef-cardnumberNúmero do cartão do comprador (PAN).< 19 NSIM

Exemplo

<input type="number" id="card-number" maxlength="16" class="esitef-cardnumber">

Chamando a função startThreeDS do JavaScript Carat#

Quando o comprador insere o número do cartão na tela, é possível criar um evento JavaScript ou um botão que aciona a função startThreeDS. A implementação do evento ou botão não segue uma regra específica, desde que seja acionada após o preenchimento do número do cartão. Ao chamar a função startThreeDS, é fundamental fornecer uma requisição com os seguintes campos como argumento:

ParâmetroDescriçãoFormatoObrigatório
nitIdentificador de transação no Carat. Campo nit recebido na etapa de criação da transação.= 64 ANSIM
payTokenCampo pay_token recebido na etapa de criação da transação.= 66 ANSIM
merchantIdCódigo da loja no Carat. Os códigos de produção e certificação serão diferentes.< 15 NSIM
localeLinguagem das mensagens retornadas em erros de validação (callback "onInvalid"). Pode receber os seguintes valores:
pt - Português
en - Inglês
es - Espanhol
Caso o locale não seja enviado, será utilizado pt.
= 2 ANÃO
authorizerIdCódigo da autorizadora no Carat. Saiba mais.< 3 NNÃO
onSuccessFunção de callback que será chamada após uma chamada bem-sucedido da função startThreeDS no Carat. Esta função recebe como argumento a resposta da função startThreeDS descrita em - Resposta dos callbacks de sucesso e fracasso.FSIM
onFailureFunção de callback que será chamada após uma chamada mal sucedido da função startThreeDS no Carat. Esta função recebe como argumento a resposta da função startThreeDSdescrita em - Resposta dos callbacks de sucesso e fracasso.FSIM
onInvalidFunção de callback que será chamada após um erro de validação JavaScript. Esta função recebe como argumento a lista de erros descrita em - Resposta do callback de erro de validação.FSIM

Resposta dos callbacks de sucesso e fracasso#

As funções de callback onSuccess e onFailure recebem como argumento um objeto contendo informações referentes a resposta da função startThreeDs. Abaixo estão as descrições desses campos:

ParâmetroDescriçãoFormato
codeCódigo de resposta do Carat. Qualquer código diferente de 0 (zero) significa falha. Para maiores informações, consulte os Códigos de Resposta.< 4 N
messageMensagem de resposta do Carat.< 500 AN
authorizer_idCódigo da autorizadora no Carat. Saiba mais. (só em caso de sucesso).< 3 N

Resposta do callback de erro de validação#

A função de callback onInvalid recebe como argumento uma lista de objetos de erro de validação, contendo os campos abaixo:

ParâmetroDescriçãoFormato
fieldNome do campo com erro.< 30 AN
causeMensagem de erro.<100 AN

Exemplo#

Abaixo está um exemplo de uma página integrada com o pagamento JavaScript do Carat:

Para usar este exemplo, não esquecer de definir a variável {{url}} com o valor
esitef-homologacao.softwareexpress.com.br

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="https://{{url}}/js/esitefauthenticatepayment-1.0.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('card-number').addEventListener('input', function() {
var valor = this.value;
valor = valor.replace(/\s/g, '');
if (valor.length === 16) {
threedMethod();
}
});
});
function threedMethod() {
var request = {
onSuccess: function(response) {
console.log(response.code);
console.log(response.message);
console.log(response.authorizer_id);
},
onFailure: function(response) {
console.log(response.code);
console.log(response.message);
},
onInvalid: function(errors) {
for (var i = 0; i < errors.length; i++) {
console.log(errors[i].field);
console.log(errors[i].cause);
}
},
nit: '183479a213bcd653909a959907817f452a7e36846bd922b6c891804ae4118b16',
payToken: '955d19823f1e3f74e4c6d57e895ed32473d929669ea1ef5fc0e18783265c34e301',
merchantId: 'XXXXXXXXXXXX',
locale: 'pt',
authorizerId: '2'
};
startThreeDs(request);
}
</script>
</head>
<body>
<form method="POST">
<input type="text" id="card-number" maxlength="16" class="esitef-cardnumber">
</form>
</body>
</html>