Autenticação 3DS

stable

No contexto de autorização, também existem os eventos de autenticação 3DS. Estes eventos não fazem parte do processo de autorização de uma transação com um cartão, porém informam ao parceiro sobre a necessidade da criação de um desafio de autenticação para o prosseguimento de uma compra realizada pelo cliente.

É somente por meio do evento PREAUTHENTICATIONCHALLENGE_WAS_REQUESTED que o parceiro poderá obter o challengeId, identificador do desafio que deverá ser informado no endpoint de confirmação do desafio.

Para mais informações sobre quando essas mensagens são disparadas e sobre o seu conteúdo, consulte as páginas:

Pré-requisitos

Para receber esses eventos, o parceiro deverá:

Informações sobre os eventos

Contexto e nome do evento

Os campos context e name poderão variar de acordo com a tabela a seguir:

contextnameDescrição
AuthorizationPRE_AUTHENTICATION_WAS_RECEIVEDApós receber um pedido de pré-autenticação 3DS, o Bankly realizou uma análise antifraude para identificar a necessidade de criação de um desafio. Caso o resultado dessa análise tenha sido "challenge" (desafio), o evento PRE_AUTHENTICATION_CHALLENGE_WAS_REQUESTED será enviado para o parceiro.
AuthorizationPRE_AUTHENTICATION_CHALLENGE_WAS_REQUESTEDUm desafio foi requisitado. Após receber este evento, o parceiro deverá criar um desafio e enviá-lo a seu cliente para que ele possa confirmar a tentativa de compra.

Identificador (entityId)

O campo entityId é o identificador da entidade emissora do evento e seu valor depende do contexto de sua emissão.

No contexto de autorização, o entityId é o identificador único do desafio (challengeId).

Dados dos eventos

PRE_AUTHENTICATION_WAS_RECEIVED

Esse evento sinaliza que, após receber uma solicitação de pré-autenticação 3DS, o Bankly realizou uma análise antifraude para identificar a necessidade de criação de um desafio por parte do parceiro.

Descrição do objeto data do evento

O objeto data traz detalhes específicos do contexto em que o evento ocorre. Neste caso, o objeto trará os campos de acordo com a tabela:

NomeTipoDescrição
transactionTimeStampstringData e a hora em que ocorreu a transação, no formato ISO 8601 - UTC.
riskAnalysisResultstringResultado da análise antifraude, sugerido pelo Bankly. Confira os possíveis resultados no final da página.
holderobjectObjeto que contém informações sobre o titular da conta.
holder.documentobjectObjeto que contém informações sobre o documento do titular.
holder.valuestringNúmero do documento.
holder.typestringTipo do documento, o qual pode ser “CPF” ou “CNPJ”.
holder.accountobjectObjeto que contém informações sobre a conta do titular.
holder.account.branchstringNúmero da agência.
holder.account.numberstringNúmero da conta.
holder.account.bankobjectObjeto que contém informações sobre o banco ao qual a conta pertence.
holder.account.bank.ispbstringISPB (Identificador de Sistema de Pagamentos Brasileiro) do banco.
holder.account.bank.codestringCódigo do banco.
holder.account.bank.namestringNome do banco.
cardobjectObjeto que contém informações sobre o cartão utilizado na transação.
card.proxystringCódigo identificador do cartão.
channelobjectObjeto que contém informações sobre o canal no qual o fluxo de autenticação 3DS se inicia.
channel.namestringNome do canal, que sempre será “3DS”.
channel.directoryServerTransactionIDstringIdentificador da transação gerado pelo provedor externo do fluxo 3DS.
channel.merchantobjectObjeto que contém informação sobre o e-commerce no qual a compra foi iniciada.
channel.merchant.namestringNome do e-commerce.
channel.merchant.stateOrCountrycodestringCódigo do estado ou do país do merchant para identificar parte da sua localização.
channel.amountobjectObjeto que contém informações sobre o valor da transação.
channel.amount.valuenumberValor total da transação.
channel.amount.currencystringCódigo da moeda com base na ISO-4217.

Payload do evento

O payload abaixo exemplifica a estrutura do evento que deverá ser recebido pelo parceiro. Clique na seta para expandi-lo:

Exemplo de payload
{
      "entityId": "dcbf96e1-7595-4bbb-8692-48532c96f0b9",
      "companyKey": "COMPANY_KEY",
      "idempotencyKey": "dcbf96e1-7595-4bbb-8692-48532c96f0b9",
      "context": "Authorization",
      "name": "PRE_AUTHENTICATION_WAS_RECEIVED",
      "timestamp": "2023-01-19T18:09:57.2303277Z",
      "correlationId": "3ebd795e-2c4f-467d-b3e5-35099888445d",
      "data": {
         "transactionTimeStamp": "2023-01-19T18:09:57.2303514Z",
         "riskAnalysisResult": "CHALLENGE",
         "holder": {
            "document": {
               "value": "47742663023",
               "type": "CPF"
            },
            "account": {
               "branch": "0001",
               "number": "15164",
               "bank": {
                  "ispb": "13140088",
                  "code": "332",
                  "name": "Acesso Soluções De Pagamento S.A."
               }
            }
         },
         "card": {
            "proxy": "2229041000032008041"
         },
         "channel": {
            "name": "3DS",
            "directoryServerTransactionID": "dcbf96e1-7595-4bbb-8692-48532c96f0b9",
            "merchant": {
               "name": "Editora Nísia Floresta",
               "stateOrCountrycode": "196"
            },
            "amount": {
               "value": 3,
               "currency": "BRL"
            }
         }
      }
   }

PRE_AUTHENTICATION_CHALLENGE_WAS_REQUESTED

Este evento sinaliza que um desafio foi requisitado. Após receber este evento, o parceiro deverá criar um desafio e enviá-lo a seu cliente para que ele possa confirmar a tentativa de compra.

Descrição do objeto data do evento

O objeto data traz detalhes específicos do contexto em que o evento ocorre. Neste caso, o objeto trará os campos de acordo com a tabela:

NomeTipoDescrição
challengeIdstringIdentificador da transação gerado para identificar o desafio que o parceiro irá criar.
transactionTimeStampstringData e hora em que ocorreu a transação, no formato ISO 8601 - UTC.
expirationTimeStampstringData e hora da expiração do desafio, no formato ISO 8601 - UTC.
holderobjectObjeto que contém informações sobre o titular da conta.
holder.documentobjectObjeto que contém informações sobre o documento do titular.
holder.valuestringNúmero do documento.
holder.typestringTipo do documento, o qual pode ser “CPF” ou “CNPJ”.
holder.accountobjectObjeto que contém informações sobre a conta do titular.
holder.account.branchstringNúmero da agência.
holder.account.numberstringNúmero da conta.
holder.account.bankobjectObjeto que contém informações sobre o banco ao qual a conta pertence.
holder.account.bank.ispbstringISPB (Identificador de Sistema de Pagamentos Brasileiro) do banco.
holder.account.bank.codestringCódigo do banco.
holder.account.bank.namestringNome do banco.
cardobjectObjeto que contém informações sobre o cartão utilizado na transação.
card.proxystringCódigo identificador do cartão.
channelobjectObjeto que contém informações sobre o canal no qual o fluxo de autenticação 3DS se inicia.
channel.namestringNome do canal, que sempre será “3DS”.
channel.directoryServerTransactionIDstringIdentificador da transação gerado pelo provedor externo do fluxo 3DS.
channel.merchantobjectObjeto que contém informação sobre o e-commerce no qual a compra foi iniciada.
channel.merchant.namestringNome do e-commerce.
channel.merchant.stateOrCountrycodestringCódigo do estado ou do país do merchant para identificar parte da sua localização.
channel.amountobjectObjeto que contém informações sobre o valor da transação.
channel.amount.valuenumberValor total da transação.
channel.amount.currencystringCódigo da moeda com base na ISO-4217.

Payload do evento

O payload abaixo exemplifica a estrutura do evento que deverá ser recebido pelo parceiro. Clique na seta para expandi-lo:

Exemplo de payload
{
      "entityId": "812ghb1-9jkb-4fda-94e1-06d49defdf67d",
      "companyKey": "COMPANY_KEY",
      "idempotencyKey": "902ghj8-9fdb-4fga-94e1-06d49ghbe67d",
      "context": "Authorization",
      "name": "PRE_AUTHENTICATION_CHALLENGE_WAS_REQUESTED",
      "timestamp": "2022-07-12T12:50:05.046+00:00",
      "correlationId": "f50d7f8-3iyt-4eac-83e9-c02e430b7836",
      "data": {
         "challengeId": "806tag8-9fdb-4wrf-94e1-06d49dhjk67d",
         "transactionTimeStamp": "2022-07-12T12:50:05.046+00:00",
         "expirationTimeStamp": "2022-07-12T13:00:05.08+00:00",
         "holder": {
            "document": {
               "value": "47742663023",
               "type": "CPF"
            },
            "account": {
               "branch": "0001",
               "number": "15164",
               "bank": {
                  "ispb": "13140088",
                  "code": "332",
                  "name": "Acesso Soluções De Pagamento S.A."
               }
            }
         },
         "card": {
            "proxy": "1234567765432123"
         },
         "channel": {
            "name": "3DS",
            "directoryServerTransactionID": "812fab8-6fdb-4fda-94e1-06d49dfbe67d",
            "merchant": {
               "name": "Editora Nísia Floresta",
               "stateOrCountrycode": "196"
            },
            "amount": {
               "value": 3,
               "currency": "BRL"
            }
         }
      }
   }

Possíveis resultados da análise antifraude

ResultadoDescrição
APPROVEDPré-autenticação aprovada sem a necessidade de aprovação do titular do cartão.
CHALLENGEUm desafio deverá ser enviado ao titular do cartão para a aprovação ou não da transação.
DENIEDPré-autenticação negada sem a necessidade de aprovação do titular do cartão.