Gateway Crédito Direto

Cartão de crédito

Autenticação 3DS

Protocolo que confirma o portador do cartão e transfere o risco de chargeback por fraude ao emissor.

O 3-D Secure (EMV 3DS) confirma se quem paga é o portador do cartão, no crédito ou no débito, em venda sem o cartão presente. Os dados do comprador seguem para a bandeira e para o emissor.

A BW disponibiliza o protocolo 3DS 2.2.0. A integração é feita com um script no checkout. Há autenticação silenciosa, sem desafio, e autenticação com desafio (código no aplicativo do banco ou SMS).

Quando a transação é autenticada, o risco de chargeback por fraude passa ao emissor ou à bandeira. Essa transferência se chama liability shift. Qualquer e-commerce pode usar o 3DS como camada extra. É preciso ter o cartão habilitado na BW e concluir os fluxos de autenticação e de autorização.

Bandeiras no 3DS

VersãoBandeiras
3DS 2.2Visa e Mastercard
3DS 2.1Elo e American Express

Script e inicialização

O endereço do script é informado na habilitação do cartão. Referencie esse endereço na página. Não baixe o arquivo para o seu servidor: assim o checkout permanece na versão atual.

O objeto global exposto pelo script é BW.Mpi.

JavaScript
var config = {
  IsEnabled: true,
  IsSandbox: true,
  IsDebug: true,
  IsChallengeSuppressed: false
};

BW.Mpi.Init(config, 150.35);
AtributoTipoDescrição
IsEnabledbooleanEnvia ou não a transação para autenticação.
IsSandboxbooleantrue usa sandbox. false usa produção.
IsDebugbooleantrue escreve o relatório no console do navegador.
IsChallengeSuppressedbooleantrue ignora o desafio. Se a venda for autorizada mesmo assim, o risco permanece com o estabelecimento.
AmountdecimalValor total da transação, segundo argumento de Init.

Eventos

Os eventos acompanham o processo. Quem define se houve autenticação, e de quem é o risco, é o ECI. Dá para autorizar uma transação não autenticada; nesse caso o chargeback fica com o estabelecimento.

EventoQuando ocorreRisco se autorizar
onReadyO script carregou e o token de acesso foi validado. O checkout pode autenticar.—
onSuccessCartão elegível e autenticação concluída. Voltam Cavv, Xid e Eci.Emissor
onFailureCartão elegível, autenticação falhou. Volta o Eci.Estabelecimento
onUnenrolledPortador ou emissor não participam do 3DS. Oriente o comprador a verificar o cartão no banco.Estabelecimento
onDisabledA loja desligou a autenticação (bpmpi_auth = false).Estabelecimento
onErrorErro sistêmico na autenticação. A resposta traz ReturnCode e ReturnMessage.Estabelecimento
onUnsupportedBrandA bandeira não entra no 3DS.—
JavaScript
BW.Mpi.addEventListener("onSuccess", function (e) {
  var cavv = e.Cavv;
  var xid = e.Xid;
  var eci = e.Eci;
  var version = e.Version;
  var referenceId = e.ReferenceId;
});
AtributoTipoDescrição
CavvtextoAssinatura da autenticação.
XidtextoIdentificador da requisição de autenticação.
EcinúmeroResultado da autenticação.
VersionnúmeroVersão do 3DS usada.
ReferenceIdguidRequest ID da autenticação.
ReturnCodetextoCódigo de retorno, em erro.
ReturnMessagetextoMensagem de retorno, em erro.
Em Data Only (bpmpi_auth_notifyonly = true), mesmo com sucesso, Cavv e Xid não voltam. Esses campos não são usados nesse modelo.

Solicitar a autenticação

Monte o objeto com os campos obrigatórios e chame BW.Mpi.Checkout. O resultado chega nos eventos. Envie Cavv, Xid, Eci, Version e ReferenceId ao backend e, de lá, para PaymentObject.ExternalAuthentication na criação da cobrança.

JavaScript
var paymentObject = {
  currency: "BRL",
  installments: "01",
  cardnumber: "4000000000001091",
  cardexpirationmonth: "01",
  cardexpirationyear: "2028",
  cardalias: "JOAO DA SILVA"
};

BW.Mpi.Checkout(paymentObject);

Quanto mais campos o emissor recebe, maior a chance de autenticação silenciosa. Os obrigatórios do pedido e da cobrança estão abaixo. Os demais aumentam a qualidade da análise.

CampoObrigatórioDescrição
installmentsSimParcelas, até 2 dígitos.
cardnumberSimNúmero do cartão, até 19 dígitos.
cardexpirationmonthSimMês de validade, 2 dígitos.
cardexpirationyearSimAno de validade, 4 dígitos.
cardaliasNãoNome impresso, até 128 caracteres.
order_productcodeSimPHY mercadoria, CHA cheque, ACF financiamento, QCT quase-dinheiro, PAL recarga.
billto_contactnameSimNome do contato de cobrança, até 120 caracteres.
billTo_phonenumberSimTelefone com DDI e DDD, até 15 dígitos. Ex.: 5551999999999.
billTo_emailSimE-mail de cobrança.
billTo_street1SimLogradouro e número, até 60 caracteres.
billTo_street2SimComplemento e bairro, até 60 caracteres.
billTo_citySimCidade, até 50 caracteres.
billTo_stateSimUF, 2 letras.
billto_zipcodeSimCEP, 8 dígitos.
billto_countrySimPaís, 2 letras. Ex.: BR.
order_recurrenceSimtrue quando o pedido gera cobranças futuras.
recurring_occurrenceNa recorrência03 semanal, 06 mensal, 10 semestral, 11 anual.

Campos opcionais

CampoDescrição
default_cardCartão padrão do cliente na loja.
order_countlast24hoursPedidos deste comprador nas últimas 24 horas.
order_countlast6monthsPedidos deste comprador nos últimos 6 meses.
order_countlast1yearPedidos deste comprador no último ano.
order_cardattemptslast24hoursTentativas com o mesmo cartão nas últimas 24 horas.
order_marketingoptinComprador aceitou ofertas.
order_marketingsourceOrigem da campanha, até 40 caracteres.
billto_customeridCPF ou CNPJ, 11 a 14 dígitos.
shipto_sameasbilltoEntrega no mesmo endereço de cobrança.
shipto_addresseeNome de quem recebe.
shipTo_phonenumberTelefone de entrega.
shipTo_emailE-mail de entrega.
shipTo_street1Logradouro e número de entrega.
shipTo_street2Complemento e bairro de entrega.
shipTo_cityCidade de entrega.
shipTo_stateUF de entrega.
shipto_zipcodeCEP de entrega.
shipto_countryPaís de entrega.
shipTo_shippingmethodlowcost, sameday, oneday, twoday, threeday, pickup, other ou none.
shipto_firstusagedatePrimeiro uso desse endereço, AAAA-MM-DD.
recurring_type1 na primeira transação da recorrência.
recurring_maximumAmountValor máximo acordado com o titular.
recurring_referenceNumberReferência da recorrência, até 35 caracteres.
recurring_numberOfPaymentsQuantidade de pagamentos da assinatura.
recurring_amountType1 para recorrência de valor fixo.

Tabela do ECI

O ECI (Electronic Commerce Indicator) é o código da bandeira com o resultado da autenticação. A loja decide se segue para autorização. Sem autenticação, o risco de chargeback continua com o estabelecimento. Envie o ECI em PaymentObject.ExternalAuthentication.Eci.

ResultadoAutenticadaMastercardVisaEloAmex
Autenticada pelo emissor. Risco do emissor.Sim02050505
Autenticada pela bandeira. Risco do emissor.Sim01060606
Não autenticada. Risco do estabelecimento.NãoDiferente de 01, 02 e 04Diferente de 05 e 06Diferente de 05 e 06Diferente de 05 e 06
Não autenticada, Data Only. Risco do estabelecimento.Não047——

Downgrade de ECI

No 3DS 2.0 o ECI final pode ser diferente do ECI com que a autenticação começou. Isso é downgrade: a transação saiu como autenticada (por exemplo ECI 02 na Mastercard) e a resposta de autorização chega como não autenticada (ECI 7 ou 0). O emissor ou o diretório não autenticou o cartão.

O downgrade é síncrono. A resposta da autorização já traz o ECI final. Não há consulta posterior para descobrir esse valor.

Códigos de retorno

Estes códigos voltam na execução do script e também depois da autorização.

CódigoSignificadoO que fazer
100Transação realizada com sucesso.Seguir o fluxo.
101Falta um ou mais campos obrigatórios.Leia missingField_0 até missingField_N e reenvie completo.
102Um ou mais campos têm dado inválido.Leia invalidField_0 até invalidField_N e corrija.
150Falha geral no sistema.Aguarde alguns minutos e tente de novo.
151A requisição chegou, mas o servidor estourou o tempo.Aguarde alguns minutos e tente de novo.
152A requisição chegou, mas um serviço estourou o tempo.Aguarde alguns minutos e tente de novo.
234Problema na configuração da conta.Não reenvie. Fale com o suporte da BW.
475O cliente está inscrito na autenticação do pagador.Autentique o portador antes de autorizar.
476O cliente não pôde ser autenticado.Revise o pedido.
MPI900Ocorreu um erro.Trate como falha de autenticação.
MPI901Erro inesperado.Trate como falha de autenticação.
MPI902Resposta inesperada da autenticação.Trate como falha de autenticação.
MPI600A bandeira não suporta a autenticação.Siga sem 3DS e assuma o risco, ou troque o meio.
MPI601Desafio omitido.O risco permanece com o estabelecimento.