Aprenda a usar a API do Mercado Pago e como integrá-la com sites e aplicativos! Faça pagamentos pelo Mercado Pago em seu e-commerce.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
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.
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.
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:
pip install 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.
Ao abrir esse link no seu navegador, você verá a página abaixo.
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.
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.
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.
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.
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 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.
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.
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.
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.
Na janela que será aberta, vamos clicar em Server Side e selecionar o PyPI para instalar a biblioteca SDK correspondente ao Python.
Esse link nos levará para a página do PyPI onde teremos o comando para instalar essa biblioteca.
Só precisamos copiar o comando pip install mercadopago e executar dentro do terminal do VS Code, onde nosso projeto está aberto.
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.
Vamos criar um novo arquivo dentro da pasta do nosso projeto, chamado apimercadopago.py e, dentro dele, vamos colar o código acima.
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": '[email protected]'
}
}
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.
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.
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.
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.
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 de pagamento do Mercado Pago. E por fim, em Modelo de integração, podemos deixar em branco.
Depois, basta você marcar que autoriza os números 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.
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.
Você irá copiar o seu Access Token e colar dentro do código no lugar de YOUR_ACCESS_TOKEN.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
Além disso, para simular diferentes resultados de pagamento, no nome do titular do cartão você pode inserir um dos códigos abaixo.
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:
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.
Com isso, nosso código que gera a cobrança para o usuário pagar foi criado corretamente.
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.
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.
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.
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.
<!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.
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.
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.
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.
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.
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.
Para acessar outras publicações de Python, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.