Implementação dos eventos gerados pelo processo de autenticação

Os eventos são ações que o script toma como resposta para acompanhamento do processo de autenticação, mas não indicam se a transação foi autenticada com sucesso.

O que indica se a transação foi autenticada ou não e de quem é o risco de chargeback é o valor retornado no ECI (E-commerce Indicator). Para submeter a transação para autorização, considere o valor do ECI e use os eventos apenas como complemento para auxiliar na tomada de decisão.

❗️

É possível submeter uma transação não autenticada para autorização; no entanto, o risco de chargeback passa a ser do estabelecimento.


⚡ onReady

É acionado quando todos os procedimentos de carregamento do script da solução foram concluídos com sucesso, o que incluir a validação do token de acesso, indicando que o checkout está pronto para iniciar a autenticação.

Safe2Pay.Mpi.addEventListener("onReady", function(e) {
    // O script está pronto para ser usado.
});

⚡ onSuccess

É acionado quando o cartão é elegível e teve o processo de autenticação finalizado com sucesso. Neste caso, as variáveis CAVV, XID e ECI serão retornados. Estes dados devem ser enviados na requisição no momento da autorização. Neste cenário, se a transação é autorizada, o liability shift é transferido ao emissor.

Safe2Pay.Mpi.addEventListener("onSuccess", function(e) {
    var cavv = e.Cavv; // Dado que representa assinatura da autenticação	
    var xid = e.Xid; // ID que representa a requisição da autenticação	
    var eci = e.Eci; // Código indicador do e-commerce, que representa o resultado da autenticação		
    var version = e.Version; // Versão do 3DS utilizado no processo de autenticação	
    var referenceId = e.ReferenceId; // RequestID retornado no processo de autenticação
});

⚡ onFailure

É acionado quando o cartão é elegível, porém não teve o processo de autenticação falhou por algum motivo. Neste caso, somente a variável ECI será retornado. Caso haja a decisão de seguir com a autorização mesmo assim, o ECI deverá ser enviado no momento da requisição. Neste cenário, se a transação é autorizada, o liability shift permanece com o estabelecimento.

Safe2Pay.Mpi.addEventListener("onFailure", function(e) {
    var xid = e.Xid; // ID que representa a requisição da autenticação	
    var eci = e.Eci; // Código indicador do e-commerce, que representa o resultado da autenticação	
    var version = e.Version; // Versão do 3DS utilizado no processo de autenticação	
    var referenceId = e.ReferenceId; // RequestID retornado no processo de autenticação	
});

⚡ onUnenrolled

É acionado quando o cartão não é elegível, ou seja, o portador e/ou emissor não participam do programa de autenticação. Neste caso, orientar o comprador a verificar junto ao emissor se o cartão está habilitado para realizar autenticação no e-commerce. Somente a variável ECI será retornado. Caso haja a decisão de seguir com a autorização mesmo assim, o ECI deverá ser enviado no momento da requisição. Neste cenário, se a transação é autorizada, o liability shift permanece com o estabelecimento.

Safe2Pay.Mpi.addEventListener("onUnenrolled", function(e) {
    // Cartão não elegível para autenticação (não autenticável).
    var xid = e.Xid; // ID que representa a requisição da autenticação		
    var eci = e.Eci; // Código indicador do e-commerce, que representa o resultado da autenticação	
    var version = e.Version; // Versão do 3DS utilizado no processo de autenticação	
    var referenceId = e.ReferenceId; // RequestID retornado no processo de autenticação
});

⚡ onDisabled

É acionado quando o estabelecimento optou por não submeter o portador ao processo de autenticação (classe "bpmpi_auth" como false). Neste cenário, se a transação é autorizada, o liability shift permanece com o estabelecimento.

Safe2Pay.Mpi.addEventListener("onDisabled", function() {
    // Loja não requer autenticação do portador (classe "bpmpi_auth" false -> autenticação desabilitada).
});

⚡ onError

É acionado quando o processo de autenticação recebeu um erro sistêmico. Neste cenário, se a transação é autorizada, o liability shift permanece com o estabelecimento.

Safe2Pay.Mpi.addEventListener("onError", function(e) {
    var xid = e.Xid; // ID que representa a requisição da autenticação	
    var eci = e.Eci; // Código indicador do e-commerce, que representa o resultado da autenticação	
    var returnCode = e.ReturnCode; // Código de retorno da requisição de autenticação	
    var returnMessage = e.ReturnMessage; // Mensagem de retorno da requisição de autenticação	
    var referenceId = e.ReferenceId; // RequestID retornado no processo de autenticação	
});

⚡ onUnsupportedBrand

É acionado quando a bandeira do cartão não é suportado pelo 3DS 2.0

Safe2Pay.Mpi.addEventListener("onUnsupportedBrand", function() {
    // Bandeira não suportada para autenticação.
    var returnCode = e.ReturnCode; // Mensagem de retorno da requisição de autenticação	
    var returnMessage = e.ReturnMessage; // RequestID retornado no processo de autenticação
});

A seguir você pode conferir os atributos retornados pelos eventos:

AtributoDescriçãoTipo
CavvDado que representa assinatura da autenticaçãoTexto
XidID que representa a requisição da autenticaçãoTexto
EciCódigo indicador do e-commerce, que representa o resultado da autenticaçãoNúmérico
TextoVersão do 3DS aplicadoNúmerico
ReferenceIdID que representa a requisição de autenticaçãoGUID
ReturnCodeCódigo de retorno da requisição de autenticaçãoTexto
ReturnMessageMensagem de retorno da requisição de autenticaçãoTexto

📘

No caso de uma transação submetida como Data Only (bpmpi_auth_notifyonly como true), mesmo que bem-sucedida, não serão retornados os campos CAVV e XID (campos não necessários para uma transação no modelo Data Only).

Exemplo de retorno do script

Exemplo de evento OnSuccess

{
  Cavv: "Y2FyZGluYWxjb21tZXJjZWF1dGg=",
  Xid: null,
  Eci: "01",
  Version: "2",
  ReferenceId: "973cf83d-b378-43d5-84b6-ce1531475f2a"
}

Exemplo de evento OnFailure

{
  Xid: null,
  Eci: null,
  ReturnCode: "231",
  ReturnMessage: "Unexpected error ocurred",
  ReferenceId: null
}