API REST desenvolvida em Flask para simular pagamentos via PIX, utilizando geração de QR Code, persistência em SQLite, comunicação em tempo real com WebSocket e páginas HTML para acompanhamento do status do pagamento.
O projeto demonstra um fluxo completo de criação, confirmação e acompanhamento de pagamentos, sendo uma excelente base para estudos sobre APIs REST, WebSockets e integração com meios de pagamento.
- Criação de pagamentos via PIX.
- Geração automática de QR Code.
- Armazenamento dos pagamentos em banco SQLite.
- Confirmação de pagamento.
- Atualização em tempo real utilizando WebSocket (Flask-SocketIO).
- Página para acompanhamento do pagamento.
- Página de confirmação do pagamento.
- Tratamento para pagamentos inexistentes (404).
- Testes automatizados para geração do PIX.
Fluxo da aplicação:
Cliente
│
▼
POST /payments/pix
│
▼
Geração do QR Code
│
▼
Persistência no SQLite
│
▼
Página de pagamento
│
▼
Confirmação do pagamento
│
▼
WebSocket notifica o cliente
| Tecnologia | Finalidade |
|---|---|
| Python | Linguagem principal |
| Flask | Framework Web |
| Flask-SQLAlchemy | ORM |
| SQLite | Banco de dados |
| Flask-SocketIO | Comunicação em tempo real |
| qrcode | Geração do QR Code |
| Pillow | Manipulação das imagens do QR Code |
| Pytest | Testes automatizados |
.
├── app.py
├── requirements.txt
├── db_models/
│ └── payment.py
├── payments/
│ └── pix.py
├── repository/
│ └── database.py
├── static/
│ └── img/
├── templates/
│ ├── payment.html
│ ├── confirmed_payment.html
│ └── 404.html
└── tests/
└── test_pix.py
| Pasta | Descrição |
|---|---|
db_models |
Modelos do banco de dados |
payments |
Regras de negócio relacionadas ao PIX |
repository |
Configuração do banco de dados |
templates |
Páginas HTML |
static |
Arquivos estáticos, incluindo QR Codes gerados |
tests |
Testes automatizados |
Antes de executar o projeto, instale:
- Python 3.10 ou superior
- pip
- Ambiente virtual (recomendado)
Clone o repositório:
git clone <URL_DO_REPOSITORIO>Entre na pasta do projeto:
cd payment-flask-methodCrie um ambiente virtual.
python -m venv venv
source venv/bin/activatepython -m venv venv
venv\Scripts\activateInstale as dependências:
pip install -r requirements.txtInicie a aplicação:
python app.pyA API ficará disponível em:
http://localhost:5000
Execute os testes utilizando:
pytestOs testes estão localizados em:
tests/
| Método | Endpoint |
|---|---|
| POST | /payments/pix |
POST /payments/pix
Content-Type: application/json{
"value": 150.50
}Resposta:
{
"message": "The payment has been created",
"payment": {
"...": "..."
}
}| Método | Endpoint |
|---|---|
| GET | /payments/pix/qr_code/{file_name} |
| Método | Endpoint |
|---|---|
| POST | /payments/pix/confirmation |
{
"bank_payment_id": "uuid-do-pagamento",
"value": 150.50
}| Método | Endpoint |
|---|---|
| GET | /payments/pix/{payment_id} |
Atualmente não existe um arquivo .env.
As configurações estão definidas diretamente no código.
| Configuração | Valor atual |
|---|---|
| Banco | sqlite:///database.db |
| Secret Key | Definida em app.py |
Recomenda-se mover essas configurações para variáveis de ambiente.
Principais bibliotecas utilizadas:
| Biblioteca |
|---|
| Flask |
| Flask-SQLAlchemy |
| Flask-SocketIO |
| qrcode |
| Pillow |
| pytest |
- Integração com um provedor PIX real.
- Expiração automática de pagamentos.
- Cancelamento de pagamentos.
- Histórico de pagamentos.
- Autenticação JWT.
- Documentação OpenAPI/Swagger.
- Docker.
- Flask-Migrate.
- Testes de integração.
- Deploy automatizado.