Confirmação do desafio

beta scope: card.network.transactions.3ds.write

Como demonstrado no fluxo do processo de autenticação 3DS, o parceiro deverá utilizar o identificador (challengeId) recebido via webhook para associá-lo a um desafio e enviá-lo a seu cliente para confirmar a compra on-line que está sendo realizada.

Para que o parceiro possa testar esse fluxo, disponibilizamos em sandbox um endpoint que simula a criação do challengeId da transação e dispara uma mensagem via webhook comunicando o evento.

Lembre-se de configurar o webhook para o recebimento desse evento.

📘

Nota

O endpoint de simulação funciona apenas em sandbox, pois, em produção, o parceiro receberá diretamente do Bankly uma mensagem via webhook com o challengeId cada vez que for necessário criar um desafio.

Simulação de criação do desafio (challengeId)

Endpoint

Para realizar o teste e receber o challengedId via webhook, utilize este endpoint enviando os seguintes campos obrigatórios:

  • card: objeto que contém o proxy do cartão utilizado na compra:
    • proxy: código identificador do cartão.
  • deviceChannel: canal por onde ocorre a tentativa de compra (APP ou BROWSER);
  • merchant: objeto que contém informação sobre o e-commerce no qual a compra foi iniciada:
    • name: nome do e-commerce.
  • amount: objeto que contém informações sobre o valor da transação:
    • value: valor total da transação;
    • currency: código ISO 4217 da moeda utilizada. Exemplo: “986” para BRL.
curl --location --request POST 'https://api-mtls.sandbox.bankly.com.br/card-network-transactions/simulator/challenge' \ 
--header 'api-version: 1' \ 
--header 'Content-Type: application/json' \ 
--header 'Accept: application/json' \ 
--header 'Authorization: Bearer <Bearer Token>' \ 
--data-raw '{ 
    "card": { 
        "proxy": "string", 
    }, 
    "deviceChannel": "APP", 
    "merchant": { 
        "name": "string", 
    }, 
    "amount": { 
        "value": 0, 
        "currency": "986" 
    } 
}'

Retorno

O status code 202 indicará sucesso na requisição.

Assim que a resposta de sucesso é recebida, a mensagem contendo o challengeId é disparada ao parceiro via webhook.

❗️

Atenção

O tempo de expiração do challengeId é de cinco minutos para transações via browser e dez minutos para transações via APP. Não será possível responder o desafio após o tempo de expiração, indicado no campo expirationTimeStamp do evento CHALLENGE_WAS_REQUESTED.

Erros

Status codeCódigoDescrição
400INVALID_CARD_TO_SIMULATE_CHALLENGEO cartão informado para criação do desafio é inválido.
400INVALID_PARAMETERExistem dados inválidos na requisição.
500INTERNAL SERVER ERRORErro inesperado no servidor.

🚧

Importante

Recordamos que é de responsabilidade do parceiro associar o challengeId recebido a um desafio e enviá-lo ao seu cliente para autenticar a transação.

Confirmação do desafio

Ao receber a resposta de seu cliente, o parceiro deverá repassá-la ao Bankly por meio do endpoint de confirmação do desafio.

Endpoint

Para utilizar o endpoint de confirmação do desafio, é obrigatório enviar os seguintes campos:

Path:

  • challengeId: refere-se ao challengeId recebido via webhook e que foi associado ao desafio enviado ao cliente do parceiro.

Body:

  • allowTransaction: informe TRUE para confirmar a transação e FALSE para negá-la;
  • documentNumber: número do documento. Informe somente números.
curl --location --request PATCH 'https://api-mtls.sandbox.bankly.com.br/card-network-transactions/authentication/challenge/{{challengeId}}/confirm' \ 
--header 'api-version: 1' \ 
--header 'Content-Type: application/json' \ 
--header 'Accept: application/json' \ 
--header 'Authorization: Bearer <Bearer Token>' \ 
--data-raw '{ 
    "allowTransaction": "TRUE", 
    "documentNumber": "12345678900"  
}

Retorno

O status code 204 indicará sucesso no envio da confirmação.

Erros

Status codeCódigoDescrição
400INVALID_PARAMETERExistem dados inválidos na requisição.
404NOT_FOUNDRecurso não encontrado.
409CONFLICTA solicitação conflitou com o estado atual do recurso existente no servidor.
500INTERNAL_SERVER_ERRORErro inesperado no servidor.