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á:
- Configurar previamente o recebedor de eventos do webhook.
- Conhecer a estrutura básica dos eventos que acompanha o objeto
data
.
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:
context | name | Descrição |
---|---|---|
Authorization | PRE_AUTHENTICATION_WAS_RECEIVED | Apó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. |
Authorization | PRE_AUTHENTICATION_CHALLENGE_WAS_REQUESTED | 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. |
Identificador (entityId
)
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
data
do eventoO 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:
Nome | Tipo | Descrição |
---|---|---|
transactionTimeStamp | string | Data e a hora em que ocorreu a transação, no formato ISO 8601 - UTC. |
riskAnalysisResult | string | Resultado da análise antifraude, sugerido pelo Bankly. Confira os possíveis resultados no final da página. |
holder | object | Objeto que contém informações sobre o titular da conta. |
holder.document | object | Objeto que contém informações sobre o documento do titular. |
holder.value | string | Número do documento. |
holder.type | string | Tipo do documento, o qual pode ser “CPF” ou “CNPJ”. |
holder.account | object | Objeto que contém informações sobre a conta do titular. |
holder.account.branch | string | Número da agência. |
holder.account.number | string | Número da conta. |
holder.account.bank | object | Objeto que contém informações sobre o banco ao qual a conta pertence. |
holder.account.bank.ispb | string | ISPB (Identificador de Sistema de Pagamentos Brasileiro) do banco. |
holder.account.bank.code | string | Código do banco. |
holder.account.bank.name | string | Nome do banco. |
card | object | Objeto que contém informações sobre o cartão utilizado na transação. |
card.proxy | string | Código identificador do cartão. |
channel | object | Objeto que contém informações sobre o canal no qual o fluxo de autenticação 3DS se inicia. |
channel.name | string | Nome do canal, que sempre será “3DS”. |
channel.directoryServerTransactionID | string | Identificador da transação gerado pelo provedor externo do fluxo 3DS. |
channel.merchant | object | Objeto que contém informação sobre o e-commerce no qual a compra foi iniciada. |
channel.merchant.name | string | Nome do e-commerce. |
channel.merchant.stateOrCountrycode | string | Código do estado ou do país do merchant para identificar parte da sua localização. |
channel.amount | object | Objeto que contém informações sobre o valor da transação. |
channel.amount.value | number | Valor total da transação. |
channel.amount.currency | string | Có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
data
do eventoO 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:
Nome | Tipo | Descrição |
---|---|---|
challengeId | string | Identificador da transação gerado para identificar o desafio que o parceiro irá criar. |
transactionTimeStamp | string | Data e hora em que ocorreu a transação, no formato ISO 8601 - UTC. |
expirationTimeStamp | string | Data e hora da expiração do desafio, no formato ISO 8601 - UTC. |
holder | object | Objeto que contém informações sobre o titular da conta. |
holder.document | object | Objeto que contém informações sobre o documento do titular. |
holder.value | string | Número do documento. |
holder.type | string | Tipo do documento, o qual pode ser “CPF” ou “CNPJ”. |
holder.account | object | Objeto que contém informações sobre a conta do titular. |
holder.account.branch | string | Número da agência. |
holder.account.number | string | Número da conta. |
holder.account.bank | object | Objeto que contém informações sobre o banco ao qual a conta pertence. |
holder.account.bank.ispb | string | ISPB (Identificador de Sistema de Pagamentos Brasileiro) do banco. |
holder.account.bank.code | string | Código do banco. |
holder.account.bank.name | string | Nome do banco. |
card | object | Objeto que contém informações sobre o cartão utilizado na transação. |
card.proxy | string | Código identificador do cartão. |
channel | object | Objeto que contém informações sobre o canal no qual o fluxo de autenticação 3DS se inicia. |
channel.name | string | Nome do canal, que sempre será “3DS”. |
channel.directoryServerTransactionID | string | Identificador da transação gerado pelo provedor externo do fluxo 3DS. |
channel.merchant | object | Objeto que contém informação sobre o e-commerce no qual a compra foi iniciada. |
channel.merchant.name | string | Nome do e-commerce. |
channel.merchant.stateOrCountrycode | string | Código do estado ou do país do merchant para identificar parte da sua localização. |
channel.amount | object | Objeto que contém informações sobre o valor da transação. |
channel.amount.value | number | Valor total da transação. |
channel.amount.currency | string | Có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
Resultado | Descrição |
---|---|
APPROVED | Pré-autenticação aprovada sem a necessidade de aprovação do titular do cartão. |
CHALLENGE | Um desafio deverá ser enviado ao titular do cartão para a aprovação ou não da transação. |
DENIED | Pré-autenticação negada sem a necessidade de aprovação do titular do cartão. |
Updated 8 months ago