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.