Loading repository data…
Loading repository data…
Kauanrodrigues01 / repository
Um projeto de estudo focado na integração de diferentes métodos de pagamento (PIX, Boleto e Cartão de Crédito) através da API do Mercado Pago, utilizando FastAPI como backend e Jinja2 para a renderização de templates HTML.
O Checkout Mercado Pago é um projeto de estudo focado na integração com a API de pagamentos do Mercado Pago. Desenvolvido com FastAPI e Python, este sistema demonstra como implementar um gateway de pagamento completo, suportando múltiplos métodos de pagamento incluindo PIX, Cartão de Crédito e Boleto Bancário.
Uma das funcionalidades cruciais deste projeto é a capacidade de receber notificações via webhooks do Mercado Pago. Isso permite que nossa aplicação seja informada sobre atualizações nos pagamentos de forma assíncrona e imediata.
Uma URL da nossa aplicação é registrada na plataforma do Mercado Pago como um endpoint de webhook.
Quando um evento ocorre (ex: um cliente paga um boleto ou um pagamento de cartão é aprovado), o Mercado Pago envia uma notificação (um POST request) para essa URL.
A aplicação:
✅ Esse mecanismo garante que o status dos pagamentos em nosso sistema esteja sempre sincronizado com o Mercado Pago, sem a necessidade de consultar a API repetidamente.
├── app/
│ ├── __init__.py
│ ├── main.py # Aplicação principal FastAPI
│ ├── settings.py # Configurações e variáveis de ambiente
│ ├── database.py # Configuração do banco de dados
│ ├── dependencies.py # Dependências injetáveis
│ └── migrations/ # Migrações do Alembic
├── payments/
│ ├── __init__.py
│ ├── models.py # Modelos SQLAlchemy
│ ├── schemas.py # Schemas Pydantic
│ └── router.py # Rotas de pagamento
├── services/
│ ├── __init__.py
│ └── mercadopago.py # Serviço de integração MP
├── templates/
│ └── checkout.html # Interface de checkout
├── requirements.txt # Dependências do projeto
├── pyproject.toml # Configurações do projeto
└── alembic.ini # Configuração do Alembic
git clone https://github.com/Kauanrodrigues01/integracao-pagamento-mercado-pago.git
cd integracao-pagamento-mercado-pago
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
pip install -r requirements.txt
Crie um arquivo .env na raiz do projeto:
# Credenciais do Mercado Pago (Sandbox)
MP_PUBLIC_KEY=your_public_key_here
MP_ACCESS_TOKEN=your_access_token_here
# URLs de configuração
MP_BASE_API_URL=https://api.mercadopago.com
NOTIFICATION_URL=https://your-domain.com/payments/notification
# Configurações gerais
DEFAULT_TIMEZONE=America/Sao_Paulo
DATABASE_URL=sqlite:///./database.db
alembic upgrade head
uvicorn app.main:app --reload
⚠️ Importante: Este projeto está configurado para o ambiente de teste (sandbox) do Mercado Pago.
| Método | Endpoint | Descrição |
|---|---|---|
POST | /payments/checkout/pix | Criar pagamento PIX |
POST | /payments/checkout/boleto | Criar pagamento Boleto |
POST | /payments/checkout/card | Criar pagamento Cartão |
POST | /payments/notification | Webhook para notificações |
GET | /payments/list | Listar todos os pagamentos |
DELETE | /payments/delete/{id} | Deletar pagamento |
| Método | Endpoint | Descrição |
|---|---|---|
GET | / | Página de checkout |
GET | /docs | Documentação da API (Swagger) |
http://localhost:8000
Cartão Aprovado:
503143321540635111/2030143Test UserCartão Rejeitado:
503143321540635111/2030143Other User12345678909test@test.comsequenceDiagram
participant U as Usuário
participant F as Frontend
participant B as Backend
participant MP as Mercado Pago
participant DB as Database
U->>F: Seleciona método e preenche dados
F->>B: POST /payments/checkout/{method}
B->>MP: Cria pagamento
MP->>B: Retorna resposta
B->>DB: Salva transação
B->>F: Retorna resultado
F->>U: Exibe status/redirect
Note over MP,B: Webhook para atualizações
MP->>B: POST /payments/notification
B->>DB: Atualiza status
A interface de checkout foi desenvolvida com foco na experiência do usuário:
O sistema inclui tratamento robusto de erros:
| Status | Descrição |
|---|---|
pending | Pagamento pendente |
approved | Pagamento aprovado |
rejected | Pagamento rejeitado |
cancelled | Pagamento cancelado |
git checkout -b feature/nova-feature)git commit -am 'Adiciona nova feature')git push origin feature/nova-feature)Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Kauan Rodrigues Lima
⭐ Deixe uma estrela se este projeto te ajudou!