Blog

Postado em em 1 de maio de 2024

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

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:

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:

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
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.

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 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 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.

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.

Access Token

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.

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.

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.

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.

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.

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.

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.

Hashtag Treinamentos

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


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

Quer sair do zero no Excel e virar uma referência na sua empresa?
Inscreva-se agora no Excel Impressionador!