Como integrar 3DS com Checkout Bricks
Nesta documentação vocĂȘ encontrarĂĄ toda a informação necessĂĄria para realizar a integração com 3DS com Checkout Bricks. Para mais informaçÔes sobre como esse tipo de autenticação funciona, veja 3DS 2.0.
Integrar com 3DS
A integração com 3DS resulta em um processo de autenticação que é executado através de dois fluxos: com ou sem Challenge, sendo Challenge as etapas adicionais que o comprador deve cumprir para garantir sua identidade.
Para transaçÔes de baixo risco, as informaçÔes enviadas na finalização da compra são suficientes, o fluxo segue de forma transparente e as etapas adicionais do Challenge não são necessårias. Porém, para casos de alto risco de fraude, o Challenge é necessårio para verificar a identidade do comprador, o que aumenta a aprovação das transaçÔes com cartão.
A decisão de incluir ou não o Challenge depende do emissor do cartão e do perfil de risco da transação que estå sendo realizada.
Abaixo estão as etapas para realizar uma integração com 3DS.
- Após gerar uma intenção de pagamento usando Card Payment Brick ou Payment Brick, é necessårio enviar, a partir do seu backend, uma solicitação de pagamento ao Mercado Pago através das nossas APIs. A ativação do fluxo de 3DS 2.0 se då pela adição do campo
three_d_secure_mode: 'optional'
nessa requisição.
javascript
var mercadopago = require('mercadopago');
mercadopago.configurations.setAccessToken("YOUR_ACCESS_TOKEN");
const paymentData = {
...req.body,
three_d_secure_mode: 'optional'
};
mercadopago.payment.save(paymentData)
.then(function(response) {
const { status, status_detail, id } = response.body;
res.status(response.status).json({ status, status_detail, id });
})
.catch(function(error) {
console.error(error);
});
Caso nĂŁo seja necessĂĄrio utilizar o fluxo do Challenge, o campo status
do pagamento terĂĄ valor approved
e nĂŁo serĂĄ necessĂĄrio exibi-lo, dessa forma, o fluxo de pagamento seguirĂĄ normalmente.
Para os casos em que o Challenge Ă© necessĂĄrio, o status
mostrarĂĄ o valor pending
, e o status_detail
serĂĄ pending_challenge
.
VisĂŁo geral simplificada da resposta:
javascript
{
"payment_id":52044997115,
"status":"pending",
"status_detail":"pending_challenge",
"three_ds_info":{
"external_resource_url":"https://acs-public.tp.mastercard.com/api/v1/browser_Challenges",
"creq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImJmYTVhZjI0LTliMzAtNGY1Yi05MzQwLWJkZTc1ZjExMGM1MCIsImFjlOWYiLCJjW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IS4wIn0"
},
"owner":null
}
- Para continuar o fluxo e exibir o Challenge de forma simplificada, Ă© recomendado integrar com o Status Screen Brick, informando o ID do pagamento gerado, alĂ©m do conteĂșdo do objeto
three_ds_info
, os quais foram retornados pela API de pagamentos.
Caso não deseje utilizar o Status Screen Brick nessa etapa, aconselhamos acessar a seção de Realizar implantação na documentação de Checkout Transparente, visto que serão necessårios passos adicionais para, por exemplo, capturar o evento emitido quando o Challenge for finalizado.
javascript
const renderStatusScreenBrick = async (bricksBuilder) => {
const settings = {
initialization: {
paymentId: "<PAYMENT_ID>", // id do pagamento a ser mostrado
additionalInfo: {
externalResourceURL: "<EXTERNAL_RESOURCE_URL>",
creq: "<C_REQ>",
},
},
callbacks: {
onReady: () => {},
onError: (error) => {
console.error(error);
},
},
};
window.statusScreenBrickController = await bricksBuilder.create(
"statusScreen",
"statusScreenBrick_container",
settings
);
};
renderStatusScreenBrick(bricksBuilder);
O Status Screen Brick exibirå uma transição indicando redirecionamento e, logo em seguida, serå exibido o Challenge do banco em questão.
O usuĂĄrio deve responder ao Challenge para que a transição seja validada devidamente. Vale ressaltar que a experiĂȘncia do Challenge Ă© de responsabilidade exclusiva do banco encarregado.
- Após a resolução do Challenge, serå exibido o resultado final do pagamento de acordo com a resposta emitida pelo banco ao finalizar o Challenge.
Teste de integração
Antes de ir Ă produção, Ă© possĂvel testar a integração para garantir que o fluxo 3DS funcione corretamente e que os pagamentos sejam processados sem erros. Dessa forma, evita-se que os compradores abandonem a transação por nĂŁo conseguirem concluĂ-la.
Para que seja possĂvel validar pagamentos com 3DS, disponibilizamos um ambiente de testes do tipo sandbox que retorna resultados simulados apenas para simulação e validação da implementação. Para realizar testes de pagamento em um ambiente sandbox, Ă© necessĂĄrio utilizar suas credenciais de teste e cartĂ”es especĂficos que permitam testar a implementação do Challenge com os fluxos de sucesso e falha. A tabela a seguir apresenta os detalhes desses cartĂ”es:
Fluxo | NĂșmero | CĂłdigo de segurança | Data de vencimento |
Challenge com sucesso | 5483 9281 6457 4623 | 123 | 11/25 |
Challenge nĂŁo autorizado | 5361 9568 0611 7557 | 123 | 11/25 |
Challenge
Em ambos os fluxos (sucesso e falha), o Challenge, que Ă© uma tela semelhante Ă exibida abaixo, deve ser exibido pelo Status Screen Brick.
O código de verificação fornecido é apenas ilustrativo. Para concluir o fluxo de teste, basta clicar no botão Confirmar e o Status Screen irå exibir o estado final do pagamento.