Cartões - Configurar meios de pagamento - Mercado Pago Developers
Cartões
A integração de pagamentos com cartão de crédito e/ou débito no Checkout API pode ser realizada de duas maneiras. A integração recomendada é através do Card Payment Brick, onde o Brick se encarrega de buscar as informações necessárias para efetuar o pagamento. Mas, se você quiser ser o responsável por definir como essas informações serão buscadas, você pode realizar sua integração através de Core Methods.
Na integração por meio do Card Payment Brick, 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.
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 de pagamentos com cartão de débito e/ou crédito via Card Payment Brick, siga os passos abaixo.
Lembre-se: antes de configurar os meios de pagamento, escolha o modo em que irá processar as suas transações. A definição do modo de processamento, seja manual ou automático, será realizada no momento da criação da order, por meio do parâmetro processing_mode. Para mais informações, acesse a seção Modelo de integração.
Para poder receber pagamentos, é necessário que você 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 callbackonSubmit 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.
Sempre que o usuário sair da tela onde algum Brick é exibido, é necessário destruir a instância atual com o comando window.cardPaymentBrickController.unmount(). Ao entrar novamente, uma nova instância deve ser gerada.
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.
Para avançar para a etapa de envio do pagamento, 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.
O envio do pagamento deve ser realizado mediante a criação de uma order que contenha a transação de pagamento associada.
Para isso, envie um POST com seu Access Token de testeChave privada de testes da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste. e os parâmetros requeridos listados abaixo para o endpoint /v1/ordersAPI e execute a requisição.
Veja na tabela abaixo as descrições dos parâmetros que possuem alguma particularidade importante de ser destacada.
Atributo
Tipo
Descrição
Obrigatório/Opcional
Authorization
Header
Faz referência à sua chave privada, o Access Token. Utilize o Access Token de testeChave privada de testes da aplicação criada no Mercado Pago e que é utilizada no backend. Você pode acessá-la através de Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste. em ambientes de desenvolvimento e o Access Token produtivoChave privada da aplicação criada no Mercado Pago e que é utilizada no backend ao receber pagamentos reais. Você pode acessá-la através de Suas integrações > Detalhes da aplicação > Produção > Credenciais de produção. para pagamentos reais.
Obrigatório
X-Idempotency-Key
Header
Chave de idempotência. Essa chave garante que cada solicitação seja processada apenas uma vez, evitando duplicidades. Use um valor exclusivo no header da requisição, como um UUID V4 ou uma string aleatória.
Obrigatório
processing_mode
Body. String
Modo de processamento da order. Os valores possíveis são:
- automatic: para criar e processar a ordem em modo automático.
- manual: para criar a order e processá-la posteriormente.
Identificador do meio de pagamento. Neste caso, é a bandeira de cada cartão. Você pode consultar a lista completa de identificadores disponíveis enviando uma requisição ao endpoint Obter meios de pagamento.
Obrigatório
transaction.payments.payment_method.type
Body. String
Tipo de meio de pagamento. Para pagamentos com cartão de crédito, deve ser credit_card, e para pagamentos com cartão de débito, deve ser debit_card.
Obrigatório
Para conhecer em detalhe todos os parâmetros enviados nesta requisição, consulte nossa Referência de API. Além disso, caso receba um erro ao enviar o pagamento, consulte nossa lista de erros.
Em caso de sucesso, a resposta será semelhante ao exemplo abaixo.
Em caso de ter criado a order em modo manual, lembre-se de que o processamento do pagamento requer uma etapa adicional, que é a chamada à Processar order API. Adicionalmente, é possível realizar uma reserva e captura de valores. Dirija-se à seção Reservar, capturar e cancelar valores para mais informações.
Uma vez criada a order e o pagamento, você pode consultar os estados possíveis dirigindo-se às seções Status da order e Status da transação, respectivamente.