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:
Atributo | Descrição | Tipo |
---|---|---|
Cavv | Dado que representa assinatura da autenticação | Texto |
Xid | ID que representa a requisição da autenticação | Texto |
Eci | Código indicador do e-commerce, que representa o resultado da autenticação | Númérico |
Texto | Versão do 3DS aplicado | Númerico |
ReferenceId | ID que representa a requisição de autenticação | GUID |
ReturnCode | Código de retorno da requisição de autenticação | Texto |
ReturnMessage | Mensagem de retorno da requisição de autenticação | Texto |
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
}