API do Mercado Pago – Como Integrar com Seu Site ou App?

Aprenda a usar a API do Mercado Pago e integrar ela em sites e aplicativos com o código completo!

A API do Mercado Pago se integra ao seu site em quatro passos: instalar o SDK (pip install mercadopago), gerar o Access Token em Suas integrações, montar a preferência de pagamento com items, back_urls e auto_return e enviá-la com sdk.preference().create(). A resposta traz o init_point, o link de checkout para onde você direciona o cliente na hora de pagar.

Para baixar o(s) arquivo(s) utilizados na aula, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

API do Mercado Pago - Como Integrar com Seu Site ou App?

Na aula de hoje, quero te mostrar como usar a API de pagamento do Mercado Pago e como integrá-la com sites e aplicativos.

Primeiro, vou te mostrar como funciona a API do Mercado Pago e em seguida veremos o passo a passo para criar o código e integrar essa API com o site.

Com a API e nosso site prontos, faremos a integração e testaremos para ver a funcionalidade dela na prática.

Para te ajudar nesse processo, não deixe de fazer o download do material disponível, pois deixamos o código de um site pronto para que você possa realizar os testes da API de Pagamento do Mercado Pago.

Site de Exemplo – Flask

No material disponível para download, você encontrará um site simples desenvolvido com Flask no Python para que você possa realizar a integração e os testes da API do Mercado Pago.

Site de Exemplo – Flask

Então, faça o download do material disponível e salve o arquivo main.py na pasta templates, dentro da mesma pasta.

Você abrirá essa pasta utilizando algum editor de código, no meu caso, usarei o VS Code. Se você quiser saber como instalar e configurar o VS Code para Python, confira essa aula aqui.

Além disso, para executarmos esse site, é preciso ter o Flask instalado no seu computador. Então, o primeiro passo será ir até o terminal do seu editor de código e executar o comando:

Codigo
pip install flask

Instalar Flask

Feito isso, você poderá executar o código normalmente. No terminal do seu editor, aparecerá o link local para que você possa visualizar o site.

link do site

Ao abrir esse link no seu navegador, você verá a página abaixo.

Página do site

Como eu disse, é apenas uma página bem simples para que possamos testar a integração da API de Pagamento do Mercado Pago com o nosso site.

Nosso objetivo será, então, que, após clicar no botão de comprar, a pessoa seja direcionada para a página de pagamento no Mercado Pago.

Após o pagamento, o usuário será redirecionado para o nosso site, ou para a página de Compra concluída, ou para a página de Compra não concluída.

página de Compra concluída
página de Compra não concluída

Como Funciona a API do Mercado Pago – Documentação

Para acessar a API do Mercado Pago, o primeiro passo é buscar no Google por “Mercado Pago API”. Você irá acessar o primeiro link: Introdução – Mercado Pago Developers.

busca no Google por “Mercado Pago API”

Ao acessar esse link, você será levado para a página inicial da API do Mercado Pago, onde terá acesso à documentação dela e a todas as funcionalidades que essa API pode oferecer.

página inicial da API do Mercado Pago

A API do Mercado Pago é muito completa e também muito fácil de implementar e integrar.

Nessa aula, veremos como gerar uma cobrança para que o usuário possa pagar com seu cartão cadastrado.

Para isso é necessário que você crie uma conta para utilizar a API do Mercado Pago. Basta clicar em Criar a sua conta, seguir o procedimento que eles irão te pedir, e fazer login.

Criar uma Preferência – Pagamento Personalizado

Com a conta criada e o login feito, vamos clicar em Preferências, no menu lateral esquerdo, dentro da aba Pagamentos Online, e em seguida, selecionar Criar preferência.

Criar uma Preferência

Criar uma preferência nada mais é do que criar um pagamento personalizado. Ou seja, vamos enviar uma requisição de cobrança para a API do Mercado Pago, e ela retornará como resposta um objeto com a estrutura similar a um dicionário Python.

Resposta de exemplo

Dentro dessa resposta, teremos os dados da cobrança, com as informações sobre a compra e o usuário.

Após retornar essa resposta, a API irá redirecionar o usuário para as URLs de retorno do nosso site, as back_urls.

back_urls

Essas back_urls são os links de resposta quando a compra foi concluída com sucesso, quando ela falhou e quando ela está pendente. Você pode configurar essas 3 opções no seu site ou aplicativo.

Para o nosso exemplo, eu vou deixar o pending (pendente) e o failure (falhou) juntos. Então só teremos os casos em que o pagamento foi concluído ou não foi concluído.

Todo esse processo pode ser feito por meio de uma REST API. Você pode selecionar a linguagem com a qual está trabalhando e visualizar como é feita a requisição para essa API.

requisição para a API

SDKs disponíveis do Mercado Pago

Além de fazer esse procedimento por meio de uma REST API, podemos utilizar os SDKs disponíveis do Mercado Pago.

As SDKs do Mercado Pago são bibliotecas que a plataforma construiu para que você possa utilizar em conjunto com algumas das linguagens de programação que eles oferecem suporte e assim facilitar o uso da API.

Então, ao invés de precisar utilizar a biblioteca Requests e fazer todo o processo de requisição, o Mercado Pago já te oferece e gerencia esse processo dentro da biblioteca própria deles.

Para acessar as bibliotecas de SDKs do Mercado Pago, basta clicar em APIs e SDKs e depois em Bibliotecas de SDK.

SDKs do Mercado Pago

Na janela que será aberta, vamos clicar em Server Side e selecionar o PyPI para instalar a biblioteca SDK correspondente ao Python.

biblioteca SDK correspondente ao Python

Esse link nos levará para a página do PyPI onde teremos o comando para instalar essa biblioteca.

página do PyPI

Só precisamos copiar o comando pip install mercadopago e executar dentro do terminal do VS Code, onde nosso projeto está aberto.

Instalando a biblioteca do Mercado Pago

Criação do Código para Integrar com o Mercado Pago

Feita a instalação da biblioteca, vamos partir para a criação do código que irá integrar nosso site com a API do Mercado Pago.

Dentro da página da biblioteca do Mercado Pago para Python, no site do PyPI, temos um código exemplo de como fazer essa integração.

código exemplo

Vamos criar um novo arquivo dentro da pasta do nosso projeto, chamado apimercadopago.py e, dentro dele, vamos colar o código acima.

Arquivo apimercadopago.py
Python
import mercadopago

sdk = mercadopago.SDK("YOUR_ACCESS_TOKEN")

payment_data = {
    "transaction_amount": 100,
    "token": "CARD_TOKEN",
    "description": "Payment description",
    "payment_method_id": 'visa',
    "installments": 1,
    "payer": {
        "email": 'test_user_123456@testuser.com'
    }
}

result = sdk.payment().create(payment_data)
payment = result["response"]
print(payment)

Vamos agora compreender e fazer as modificações necessárias nesse código.

A primeira parte dele é responsável por importar a biblioteca do Mercado Pago e, em seguida, criar a integração do nosso código com a API do Mercado Pago. Para isso, é preciso fornecer um token de acesso (YOUR_ACCESS_TOKEN).

Para obter esse token de acesso, você precisa retornar para a página da API do Mercado Pago e clicar em Suas integrações.

Opção Suas integrações

Nessa página, você poderá visualizar, gerenciar e criar as credenciais referentes a cada uma das aplicações que você deseja desenvolver e integrar com o Mercado Pago. Então, clique em Criar aplicação.

Criar aplicação no Mercado Pago

Feito isso, você precisará validar sua conta e então será redirecionado para a tela de criação.

Nela, você dará um nome para sua aplicação e escolherá qual tipo de pagamento deseja integrar.

Selecionando opções do aplicativo

Logo abaixo, deverá selecionar se está ou não usando uma plataforma de e-commerce. Como no nosso exemplo estamos utilizando nosso próprio site, vamos selecionar não nessa opção.

Selecionando opções do aplicativo

Você só deve marcar sim se estiver utilizando alguma plataforma de e-commerce padrão.

Na próxima opção, vamos selecionar qual produto estamos integrando, que será o CheckoutPro, essa opção padrão de pagamento do Mercado Pago. E por fim, em Modelo de integração, podemos deixar em branco.

Selecionando opções do aplicativo

Depois, basta você marcar que autoriza o uso dos dados, fazer a verificação e clicar em Criar aplicação.

A partir do momento que você criar sua aplicação, você será redirecionado para a página dela.

Página da aplicação

Nessa página, teremos os dados referentes a nossa aplicação. Nela teremos as Credenciais de teste e as Credenciais de produção.

As credenciais de teste existem justamente para que possamos testar o funcionamento da integração entre a API do Mercado Pago e o site/aplicativo que estamos desenvolvendo.

Ou seja, ela nos permite visualizar e simular pagamentos, assim como seriam feitos de fato, mas em um ambiente de teste, com dados fictícios.

Já as credenciais de produção são aquelas que você usará no momento em que for colocar seu site ou aplicação para funcionar de fato integrado ao seu e-commerce. São as credenciais de produção que permitirão que os pagamentos reais aconteçam.

Como iremos fazer apenas um exemplo de teste, utilizaremos as credenciais de teste. Basta selecionar essa opção no menu lateral esquerdo e copiar o Access Token disponível.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python
Access Token
Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

Isso já informará ao Mercado Pago que esse projeto está integrado à nossa aplicação criada dentro do site deles.

Feito isso, a próxima etapa será criar a nossa cobrança. No caso do nosso site de exemplo, vamos fazer uma cobrança de R$ 259,99 referente a uma unidade de camisa.

Essa é a informação que precisaremos passar dentro do dicionário payment_data. Para isso, vamos apagar todas as informações que vieram dentro dele quando copiamos o código de exemplo.

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
}

E agora construiremos nossa requisição dentro dele seguindo o modelo apresentado no site da API.

modelo de requisição apresentado no site da API

A primeira parte da requisição é uma lista de dicionários chamada items, em que cada item dessa lista é um dicionário com as informações do produto que o usuário está comprando.

No nosso exemplo, definiremos uma lista com um único dicionário, porque estamos construindo essa requisição para o único produto do nosso site. Se o usuário estivesse comprando mais de um produto, teríamos de ter um dicionário para cada produto.

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
    "items": [
        {}
    ]
}

Dentro desse dicionário, iremos definir os parâmetros principais desse produto. Na página da API, ela informa quais parâmetros e informações são obrigatórias e quais são opcionais.

As informações obrigatórias são: id (código de identificação do produto), title (nome que será exibido durante o pagamento), quantity (quantidade de produtos), currency_id (para identificar a moeda em que será feita a transação) e o unit_price (preço unitário do produto).

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
    "items": [
        {"id": "1", "title": "Camisa", "quantity": 1, "currency_id": "BRL", "unit_price": 259.99}
    ]
}

Entre os parâmetros da requisição, o único obrigatório é o items, com ele já seria possível enviar uma cobrança.

No entanto, existem outros parâmetros importantes que podem te auxiliar a gerenciar os pagamentos feitos no seu site. Entre eles temos o back_urls, que são as urls de redirecionamento que vimos anteriormente.

Então, dentro do nosso dicionário payment_data, iremos adicionar um segundo item que será o back_urls. Ele será um dicionário contendo um link para a página de pagamento aprovado, pagamento pendente e pagamento cancelado.

Para a URL de success, vamos definir o link da nossa página compracerta, e para o de failure e pending, o de compraerrada.

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
    "items": [
        {"id": "1", "title": "Camisa", "quantity": 1, "currency_id": "BRL", "unit_price": 259.99}
    ],
    "back_urls": {
        "success": "http://127.0.0.1:5000/compracerta",
        "failure": "http://127.0.0.1:5000/compraerrada",
        "pending": "http://127.0.0.1:5000/compraerrada",
    },
}

Além disso, vamos definir o parâmetro de auto_return como all, para que o usuário seja sempre redirecionado após o final da compra.

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
    "items": [
        {"id": "1", "title": "Camisa", "quantity": 1, "currency_id": "BRL", "unit_price": 259.99}
    ],
    "back_urls": {
        "success": "http://127.0.0.1:5000/compracerta",
        "failure": "http://127.0.0.1:5000/compraerrada",
        "pending": "http://127.0.0.1:5000/compraerrada",
    },
    "auto_return": "all"
}

Por fim, para criar nosso pagamento, precisamos trocar o objeto payment por preference, que é o tipo de requisição que estamos fazendo.

Então, no nosso resultado, vamos trocar o sdk.payment() por sdk.preference(). Isso criará o nosso objeto de cobrança.

Python
import mercadopago

sdk = mercadopago.SDK("seu_token_aqui")

payment_data = {
    "items": [
        {"id": "1", "title": "Camisa", "quantity": 1, "currency_id": "BRL", "unit_price": 259.99}
    ],
    "back_urls": {
        "success": "http://127.0.0.1:5000/compracerta",
        "failure": "http://127.0.0.1:5000/compraerrada",
        "pending": "http://127.0.0.1:5000/compraerrada",
    },
    "auto_return": "all"
}

result = sdk.preference().create(payment_data)
payment = result["response"]
print(payment)

Executando esse código, teremos como resposta um dicionário de informações que é o nosso objeto payment, contendo as informações necessárias para que o pagamento possa ser executado.

Dentro deles, temos a informação do init_point, o link para o qual o usuário será direcionado para iniciar o processo de pagamento dessa compra gerada.

init_point

Testando o Código – Página de Pagamento

Podemos visualizar a página de pagamento gerada. Basta copiarmos o link do init_point e abrir no navegador, de preferência em uma janela anônima.

Testando o Código – Página de Pagamento

Essa é a página inicial do processo de cobrança e pagamento feito pelo Mercado Pago. Temos as informações do produto vendido em detalhes da compra e os métodos de pagamento.

Como estamos em um ambiente de testes, toda essa página está sendo executada dentro de uma sandbox. Isso nos permite testar e interagir com a página livremente, sem nenhum problema e sem correr nenhum risco.

Voltando na página do seu aplicativo no Mercado Pago, você terá na aba de testes alguns cartões de teste, para simular a compra com cartões de crédito.

Informações de cartões para testes

Além disso, para simular diferentes resultados de pagamento, no nome do titular do cartão você pode inserir um dos códigos abaixo.

Códigos para o nome do titular

Podemos testar os diferentes cenários com cada uma dessas opções e para cada uma delas teremos uma mensagem final. Por exemplo, uma compra que deu certo, foi aprovada, teremos essa tela final:

Tela de pagamento feito

Repare que como definimos o parâmetro auto_return, no canto inferior direito temos um contador, que redirecionará automaticamente o usuário para a tela de Compra concluída.

tela de Compra concluída

Com isso, nosso código que gera a cobrança para o usuário pagar foi criado corretamente.

Como Integrar o Código ao seu Site ou Aplicativo

Por enquanto, o código que gera a cobrança para o usuário está sendo executado em um arquivo à parte, sem estar de fato integrado ao nosso site. O objetivo é que, ao clicar no botão Compre aqui, o usuário seja direcionado para a página de pagamento.

Ou seja, ao clicar no botão Compre aqui na página do site, o usuário precisa ser levado para o link do init_point gerado dentro do payment.

Para isso, vamos adaptar o código dentro do arquivo apimercadopago.py para uma função. Essa função vai executar todo o processo que construímos e retornará como resposta apenas o link do init_point.

Python
import mercadopago

def gerar_link_pagamento():
    sdk = mercadopago.SDK("seu_token_aqui")
    payment_data = {
        "items": [
            {"id": "1", "title": "Camisa", "quantity": 1, "currency_id": "BRL", "unit_price": 259.99}
        ],
        "back_urls": {
            "success": "http://127.0.0.1:5000/compracerta",
            "failure": "http://127.0.0.1:5000/compraerrada",
            "pending": "http://127.0.0.1:5000/compraerrada",
        },
        "auto_return": "all"
    }

    result = sdk.preference().create(payment_data)
    payment = result["response"]

    link_iniciar_pagamento = payment["init_point"]
    return link_iniciar_pagamento

Com a função pronta, vamos importá-la dentro do arquivo main.py.

Python
from flask import Flask, render_template
from apimercadopago import gerar_link_pagamento

app = Flask(__name__)

@app.route("/")
def homepage():
    return render_template("homepage.html")

@app.route("/compracerta")
def compra_certa():
    return render_template("compracerta.html")

@app.route("/compraerrada")
def compra_errada():
    return render_template("compraerrada.html")

if __name__ == "__main__":
    app.run()

E para atribuir essa função ao botão no site, dentro da rota da homepage, vamos criar a variável link_iniciar_pagamento que receberá o resultado da função gerar_link_pagamento.

Com isso, podemos utilizar essa variável dentro do arquivo HTML, para isso, basta definirmos essa variável dentro da função render_template.

Python
from flask import Flask, render_template
from apimercadopago import gerar_link_pagamento

app = Flask(__name__)

@app.route("/")
def homepage():
    link_iniciar_pagamento = gerar_link_pagamento()
    return render_template("homepage.html", link_pagamento=link_iniciar_pagamento)

@app.route("/compracerta")
def compra_certa():
    return render_template("compracerta.html")

@app.route("/compraerrada")
def compra_errada():
    return render_template("compraerrada.html")

if __name__ == "__main__":
    app.run()

Agora, dentro do nosso HTML existe uma variável chamada link_pagamento. Essa é uma funcionalidade do Flask.

Observação: Caso você tenha dificuldade em compreender essa etapa, e como o Flask funciona, confira nosso minicurso completo e gratuito sobre criação de sites com Flask clicando aqui.

Com a variável criada, vamos abrir o arquivo homepage.html e vamos atribuir essa variável ao botão Compre aqui.

Para facilitar ainda mais o processo de implementar essa funcionalidade, podemos converter esse botão em um link, uma âncora, e passar como valor do href a variável criada.

HTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Ecommerce Teste</h1>
    <p>Camisa</p>
    <p>Preço: R$259,99</p>
    <a href={{ link_pagamento }}>Compre aqui</a>
</body>
</html>

Repare que, como estamos usando uma variável com Flask dentro do HTML, precisamos defini-la entre duas chaves {{ }}.

Dessa forma, nosso site estará integrado com a API de Pagamento do Mercado Pago.

Testando o Site

Para verificarmos se o site está funcionando corretamente, podemos colocá-lo no ar novamente, abrir o link em uma janela anônima e clicar em Compre aqui.

Testando o Site

Com isso, seremos direcionados para a página do Mercado Pago onde poderemos realizar o processo de pagamento e ao final seremos redirecionados para a página de Compra concluída ou Compra não concluída.

Compra concluída

Registrando o Pagamento do Usuário

Após concluir o processo de pagamento, o Mercado Pago redireciona o usuário para o nosso site.

Nesse link de redirecionamento, ele envia diversos parâmetros referentes ao pagamento do usuário.

parâmetros referentes ao pagamento do usuário

Entre esses parâmetros, temos o preference_id que identifica a requisição de pagamento feita e o status desse pagamento.

Então, em um cenário em que você queira registrar essas informações em um banco de dados, você poderia retirar essas informações a partir desse link.

Perguntas frequentes

1. O que é preciso para começar a usar a API do Mercado Pago?

Você precisa de uma conta no Mercado Pago, de uma aplicação criada na área Suas integrações — que gera as credenciais de teste e de produção — e do SDK da sua linguagem. Em Python, basta rodar pip install mercadopago; com o Access Token no código, a integração já consegue enviar cobranças.

2. Como testar pagamentos do Mercado Pago sem cobrar de verdade?

Use as credenciais de teste da sua aplicação: com elas, a página de pagamento roda em uma sandbox, um ambiente isolado com dados fictícios. O Mercado Pago fornece cartões de teste e códigos para o nome do titular que simulam compra aprovada, recusada ou pendente antes de você ativar as credenciais de produção.

3. O que é o init_point retornado pela API do Mercado Pago?

O init_point é o link de checkout gerado quando você cria uma preferência de pagamento. É para ele que o cliente deve ser direcionado ao clicar em comprar: a página do Mercado Pago cuida da cobrança e, ao final, devolve o usuário para as URLs configuradas em back_urls no seu site.

4. Como saber se o pagamento do cliente foi aprovado no meu site?

Ao redirecionar o usuário de volta pelas back_urls, o Mercado Pago anexa parâmetros à URL, como o preference_id e o status do pagamento. Seu site pode ler esses valores para exibir a página de compra concluída ou não concluída e registrar o resultado da transação em um banco de dados.

Conclusão – API do Mercado Pago - Como Integrar com Seu Site ou App?

Na aula de hoje, apresentei a API de pagamento do Mercado Pago e ensinei como fazer a integração dela com seus sites ou aplicativos.

Vimos como a API funciona, como criar a requisição, identificar os parâmetros e as informações importantes dela e integrá-la a um modelo simples de site de e-commerce.

Apesar de ter sido uma aula de apresentação da API de Pagamento do Mercado Pago, você já será capaz de integrá-la e utilizá-la em seus projetos.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: A aula integra um site Flask ao checkout do Mercado Pago. O fluxo instala o SDK, cria uma aplicação e suas credenciais, monta uma preferência com itens e URLs de retorno e obtém o init_point. Depois, o botão direciona o cliente ao pagamento e o retorno fornece identificadores e status para registrar a compra.

Neste vídeo (33 min):

  • 0:40 - Apresentação do site Flask usado como base para a integração
  • 2:23 - Fluxo entre o botão de compra, o checkout e as páginas de retorno
  • 4:39 - Criação de uma preferência de pagamento na API
  • 5:57 - Uso do SDK oficial para simplificar as requisições em Python
  • 7:04 - Instalação do pacote com pip install mercadopago
  • 10:27 - Diferença entre credenciais de teste e de produção
  • 10:58 - Configuração do Access Token no SDK
  • 12:08 - Montagem de items com título, quantidade, moeda e preço unitário
  • 15:44 - Definição de back_urls e auto_return
  • 19:15 - Leitura do init_point, o link que inicia o checkout
  • 23:40 - Criação da função que gera o link e conexão com o botão do site
  • 29:12 - Uso do ID da preferência e do status retornado para registrar o pagamento

Trechos do vídeo:

  • A preferência reúne os produtos cobrados e os endereços para os quais o cliente retorna.
  • O init_point é o elo entre o botão de compra e o checkout do Mercado Pago.
  • O retorno do pagamento precisa ser associado ao pedido correspondente no banco de dados.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos