Tokenizar meio de pagamento
Após configurar o ambiente de desenvolvimento, para integrar Pagamentos Automáticos é necessário capturar os dados do pagador de forma segura e tokenizar o cartão que será utilizado para cobranças sem CVV.
Para isso, adicione no frontend um formulário de pagamento usando uma destas opções: Card Payment Brick, que coleta automaticamente os dados necessários, ou Core Methods, que permitem definir como essas informações serão capturadas. Core Methods está disponível para websites e aplicativos móveis Android e iOS.
Todos esses métodos são úteis tanto para integrações com primeiro pagamento, onde uma primeira cobrança é realizada utilizando o CVV do cartão para então tokenizá-lo, quanto para registros e tokenização de cartões que serão utilizados em cobranças posteriores. Escolha o que melhor se adapta às suas necessidades e siga os passos correspondentes.
Na integração via Card Payment Brick para websites, a biblioteca MercadoPago.js, incluída no seu projeto durante a configuração do ambiente de desenvolvimento, é responsável por obter as informações necessárias para a geração de um pagamento. Ou seja, ela realiza uma busca pelos tipos de documentos disponíveis para o país correspondente e, conforme os dados do cartão são inseridos, também busca as informações relativas ao emissor e às parcelas disponíveis.
Toda a informação envolvida no processamento da transação é armazenada no backend, em conformidade com os padrões de segurança PCI.
Além disso, o componente oferece a possibilidade de orientar o usuário com alertas sobre campos incompletos ou possíveis erros ao preencher os dados, otimizando o processo de compra.
Com isso, a implementação do fluxo é transparente para quem realiza a integração, conforme mostra o diagrama abaixo.
sequenceDiagram
participant Navegador as Navegador do comprador
participant Frontend as Front-end do integrador
participant MPjs as MercadoPago.js
participant Backend as Back-end do integrador
participant API as API Mercado Pago
Navegador->>Frontend: 1. O comprador acessa a tela de pagamento.
Frontend->>MPjs: 2. O front-end do integrador baixa e inicializa o SDK JS do Mercado Pago.
Frontend->>Navegador: 3. O front-end do integrador exibe o formulário de pagamento.
Navegador->>Frontend: 4. O comprador preenche o formulário e finaliza o pagamento.
Frontend->>MPjs: 5. O front-end do integrador usa o SDK JS para criar o _token_ que conterá os dados do cartão de forma segura.
Frontend->>Backend: 6.O front-end do integrador envia o _token_ do cartão e os dados de pagamento para seu back-end.
Backend->>API: 7. Do back-end, são chamados os serviços do Mercado Pago para criar o pagamento.
API->>Navegador: 8. O front-end do integrador exibe ao comprador o resultado da operação.
API->>Backend: 9. O Mercado Pago pode enviar notificações via Webhook com atualizações do status do pagamento.
Backend->>Navegador: 10. Se aplicável, o comprador é notificado sobre a atualização do pagamento.
Para avançar com a configuração, siga os passos abaixo.
Adicionar formulário de pagamento
Para receber pagamentos, adicione no frontend um formulário que permita capturar os dados do pagador de maneira segura e possibilite a criptografia do cartão. Essa inclusão deve ser feita por meio do Card Payment Brick, que oferece um formulário otimizado com temas variados e inclui os campos necessários para pagamentos com cartões.
Para adicionar o Card Payment Brick, primeiro realize sua configuração e inicialização a partir do frontend, como mostram os exemplos a seguir.
const renderCardPaymentBrick = async (bricksBuilder) => {
const settings = {
initialization: {
amount: 100.99, // valor total a ser pago
},
callbacks: {
onReady: () => {
/*
Callback chamado quando o Brick estiver pronto.
Aqui podem ser ocultos loadings do site, por exemplo.
*/
},
onSubmit: (formData, additionalData) => {
// callback chamado ao clicar no botão de envio de dados
return new Promise((resolve, reject) => {
const submitData = {
type: "online",
total_amount: String(formData.transaction_amount), // deve ser uma string com formato 00.00
external_reference: "ext_ref_1234", // identificador da origem da transação.
processing_mode: "automatic",
transactions: {
payments: [
{
amount: String(formData.transaction_amount), // deve ser uma string com formato 00.00
payment_method: {
id: formData.payment_method_id,
type: additionalData.paymentTypeId,
token: formData.token,
installments: formData.installments,
},
},
],
},
payer: {
email: formData.payer.email,
identification: formData.payer.identification,
},
};
fetch("/process_order", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(submitData),
})
.then((response) => response.json())
.then((response) => {
// receber o resultado do pagamento
resolve();
})
.catch((error) => {
// lidar com a resposta de erro ao tentar criar o pagamento
reject();
});
});
},
onError: (error) => {
// callback chamado para todos os casos de erro do Brick
console.error(error);
},
},
};
window.cardPaymentBrickController = await bricksBuilder.create(
"cardPayment",
"cardPaymentBrick_container",
settings
);
};
renderCardPaymentBrick(bricksBuilder);
O callback onSubmit do Brick obterá os dados mínimos necessários para a criação de um pagamento. Uma das informações retornadas é o CardToken, que representa de forma segura os dados do cartão. Esse token pode ser usado somente uma vez e expira dentro de 7 dias.
Além das informações mínimas, recomendamos incluir detalhes adicionais ou que possam facilitar o reconhecimento da compra por parte do comprador, aumentando assim a taxa de aprovação dos pagamentos. Consulte nossa Referência de API para conhecer em detalhe todos os parâmetros a serem enviados ao criar um pagamento, incluindo aqueles que podem melhorar sua taxa de aprovação, e verifique quais você deseja incluir nesta etapa.
Em seguida, adicione os campos relevantes ao objeto enviado, que são retornados na resposta do callback.
Por fim, realize a renderização do Brick utilizando um dos exemplos abaixo.
<div id="cardPaymentBrick_container"></div> // O id deve corresponder ao valor enviado no método create() na etapa anterior
Como resultado, a renderização do Brick ficará semelhante à imagem abaixo.

Por último, será necessário que seu backend possa receber as informações do formulário criado, junto com o token resultante da criptografia do cartão. Para isso, recomendamos disponibilizar um endpoint /Process_order que receba os dados coletados pelo Brick após a ação de submit.
Para avançar com sua integração, você deve considerar dois fluxos possíveis: um em que o cartão é registrado a partir de uma primeira cobrança regular com CVV, e outro em que o registro do cartão é feito para pagamentos posteriores. Escolha o que melhor se adapta às suas necessidades e avance para a documentação correspondente.
