3-D Secure (3DS)
Confirma com o banco emissor que quem está comprando é mesmo o dono do cartão; autenticar reduz fraude e passa a responsabilidade por chargeback para o emissor ou a bandeira.
O 3DS confirma junto ao banco emissor que quem está comprando é o titular do cartão. Autenticar a transação reduz fraude e, quando a autenticação conclui com sucesso, transfere a responsabilidade por chargeback para o emissor ou a bandeira.
Durante o processo de autenticação 3DS, informações do comprador são compartilhadas com as bandeiras e o banco emissor, que avaliam o risco da transação e definem se é necessário um desafio (como um código por SMS ou autenticação no app do banco) para validar a identidade do portador.
Vantagens
- Redução de fraudes
- Shift de responsabilidade (liability shift) nas transações autenticadas: o emissor ou a bandeira assumem a responsabilidade em caso de chargeback
- Integração simples via JavaScript
- Suporte à autenticação sem fricção (sem desafio visível para o comprador), quando o risco da transação é considerado baixo
Fluxo de autenticação
Quando a transação é autorizada com as variáveis retornadas no evento
success, a responsabilidade (liability) é transferida para o emissor do
cartão. Nos demais cenários, a responsabilidade permanece com o
estabelecimento.
Integração passo a passo
Inicializar o script
Inclua o seguinte script em sua página web para carregar o script responsável por realizar a comunicação com as bandeiras e os bancos emissores:
<script src="https://static.payzu.io/scripts/3ds20.min.js"></script>Após carregar o script em sua página, será necessário inicializá-lo da seguinte maneira:
const config = {
amount: 350,
currency: 'BRL',
options: {
enabled: true,
sandbox: true,
debug: true,
suppressChallenge: false
}
};
payzu3DS.init(config);| Parâmetro | Descrição | Tipo |
|---|---|---|
amount | Valor total da transação em centavos | inteiro |
currency | Código da moeda | Fixo em "BRL" |
options.enabled | Define se a transação será submetida ao processo de autenticação 3DS | boolean |
options.sandbox | Define se o ambiente de execução utilizado será o sandbox ou de produção | boolean |
options.debug | Quando ativado, logs e relatórios serão emitidos no console do navegador | boolean |
options.suppressChallenge | Determina se o desafio será suprimido. Caso o desafio seja ignorado e a transação autorizada, a responsabilidade (liability) permanece com o estabelecimento | boolean |
Registrar os eventos de autenticação
Registre os listeners dos eventos para tratar cada resultado possível da autenticação:
payzu3DS.on("ready", function (e) {
});ready
Este evento é acionado quando todos os procedimentos de carregamento do script foram concluídos com sucesso, incluindo a validação do token de acesso. Indica que o checkout está pronto para iniciar o processo de autenticação.
Resultados da autenticação
O liability shift ocorre somente quando a autenticação é concluída com sucesso: nesse caso, a responsabilidade por chargeback é transferida ao emissor ou à bandeira. Em todos os demais cenários, a responsabilidade permanece com o estabelecimento.
| Evento | Cenário e retorno | Liability | Ação recomendada |
|---|---|---|---|
success | Cartão elegível e autenticação concluída com sucesso. Retorna Cavv, Xid e Eci. | Transferida ao emissor | Inclua Cavv, Xid e Eci na requisição de autorização. |
failure | Cartão elegível, mas a autenticação falhou. Retorna apenas Eci. | Permanece com o estabelecimento | Se decidir prosseguir com a autorização, inclua Eci na requisição. |
unenrolled | Cartão não elegível: o portador e/ou o emissor não participam do programa 3DS. Retorna apenas Eci. | Permanece com o estabelecimento | Oriente o comprador a verificar com o emissor se o cartão está habilitado para autenticação em e-commerce. |
disabled | Estabelecimento optou por não autenticar, com options.enabled como false. | Permanece com o estabelecimento | - |
error | Erro sistêmico no processo de autenticação. | Permanece com o estabelecimento | - |
unsupportedBrand
Este evento é acionado quando a bandeira do cartão utilizado não é compatível com o protocolo 3DS. Nesse caso, a autenticação não é realizada.
Atributos retornados
| Atributo | Descrição | Tipo | Obrigatório? |
|---|---|---|---|
Cavv | Dado que representa assinatura da autenticação | string | Sim |
Xid | Identificador da transação de autenticação | string | Não |
Eci | Código que representa o resultado da autenticação | Tabela ECI | Sim |
Version | Versão do protocolo 3DS utilizada | string | Sim |
ReferenceId | Identificador da requisição de autenticação | string | Sim |
ReturnCode | Código de retorno da autenticação | Códigos de retorno 3DS | Sim |
ReturnMessage | Mensagem de retorno da autenticação | Códigos de retorno 3DS | Sim |
Solicitar o desafio
Instancie o objeto paymentObject, observando os campos que são
expressamente obrigatórios na tabela abaixo. Ao executar o checkout, o
processo de autenticação será iniciado e seu resultado será retornado
através dos eventos.
const paymentObject = {
installments: '01',
cardnumber: '4000000000001091',
cardexpirationmonth: '01',
cardexpirationyear: '2027',
cardalias: 'JOAO SOUZA',
paymentmethod: 'Credit'
}
payzu3DS.checkout(paymentObject)Caso a autenticação seja concluída com sucesso, o evento success será
acionado. Nesse caso, as variáveis Cavv, Xid e Eci serão
retornadas: elas devem ser enviadas ao seu backend e posteriormente
incluídas na requisição no momento da autorização. Neste caso, o
liability shift é transferido ao emissor.
Utilizar o resultado na cobrança
Para criar uma cobrança utilizando o 3DS, é necessário definir o campo
authenticate como true, além de informar o campo
externalAuthentication dentro de creditCardPayment:
{
"creditCardPayment": {
"authenticate": true,
"externalAuthentication": {
"cavv": "Ag5zZ2ElCIUbLFj6gS0J9gByv//rRg5qGTqWqf8vTjt5",
"xid": "198b924ea7db1014b64c8b426a0e6f1e",
"eci": "05",
"version": "2.2",
"referenceId": "abcd1234-efgh-5678-ijkl-9012mnopqrst"
}
}
}Consulte Criar cobrança para os demais campos da requisição.
Códigos de retorno e ECI
Códigos de retorno 3DS
Códigos retornados no fluxo de autenticação 3DS.
| Código 3DS | Descrição | Ação possível |
|---|---|---|
100 | Transação realizada com sucesso. | - |
101 | Está faltando um ou mais campos obrigatórios na requisição. | Confira os campos missingField_0 até missingField_N na resposta. Envie a requisição novamente. |
102 | Um ou mais campos da requisição contêm dados inválidos. | Confira os campos invalidField_0 até invalidField_N na resposta. Reenvie a requisição. |
150 | Erro: falha geral no sistema. | Aguarde alguns minutos e envie a requisição novamente. |
151 | Erro: a requisição foi recebida, mas houve time-out do servidor. | Aguarde alguns minutos e envie a requisição novamente. |
152 | Erro: a requisição foi recebida, mas houve time-out de serviço. | Aguarde alguns minutos e envie a requisição novamente. |
234 | Há um problema na sua configuração de merchant. | Não envie a requisição novamente. Entre em contato com o suporte. |
475 | O cliente está registrado na autenticação do pagante. | Faça a autenticação do portador do cartão antes de prosseguir com a transação. |
476 | O cliente não pode ser autenticado. | Revise o pedido do cliente. |
MPI901 | Erro inesperado. | - |
MPI902 | Resposta inesperada da autenticação. | - |
MPI900 | Ocorreu um erro. | - |
MPI601 | Desafio omitido. | - |
MPI600 | Bandeira não suporta a autenticação. | - |
Tabela ECI
A tabela ECI indica, por bandeira, o resultado da autenticação e quem assume o risco de chargeback:
| Mastercard | Visa | Elo | Amex | Resultado da autenticação | A transação foi autenticada? |
|---|---|---|---|---|---|
02 | 05 | 05 | 05 | Autenticada pelo emissor: risco de chargeback passa a ser do emissor. | Sim |
01 | 06 | 06 | 06 | Autenticada pela bandeira: risco de chargeback passa a ser do emissor. | Sim |
Diferente de 01, 02 e 04 | Diferente de 05 e 06 | Diferente de 05 e 06 | Diferente de 05 e 06 | Não autenticada: risco de chargeback permanece com o estabelecimento. | Não |
04 | 7 | - | - | Não autenticada, transação caracterizada como Data Only: risco de chargeback permanece com o estabelecimento. | Não |
Quando a transação não é autenticada, o risco de chargeback permanece com o estabelecimento. Consulte os valores de ECI da tabela acima antes de decidir prosseguir com a cobrança.
Referências
- Cartões para simular os cenários de autenticação 3DS no sandbox: Cartões de teste
Cartões de teste
Números de cartão para forçar cada resultado no sandbox, do aprovado ao negado, incluindo os fluxos 3DS com e sem desafio.
Antifraude
Passa cada cobrança pela análise de risco da Cybersource em tempo real antes de autorizar, aprovando, recusando ou mandando para revisão manual conforme as suas regras.