https://github.com/joschonarth/flask-payment-api
The application is a payment API built with Flask, simulating a PIX payment and using WebSockets for real-time payment confirmation notifications.
https://github.com/joschonarth/flask-payment-api
api flask python qrcode-generator socket-io sqlalchemy websocket
Last synced: 5 months ago
JSON representation
The application is a payment API built with Flask, simulating a PIX payment and using WebSockets for real-time payment confirmation notifications.
- Host: GitHub
- URL: https://github.com/joschonarth/flask-payment-api
- Owner: joschonarth
- Created: 2024-12-02T21:57:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-19T19:16:07.000Z (over 1 year ago)
- Last Synced: 2025-01-19T20:25:31.967Z (over 1 year ago)
- Topics: api, flask, python, qrcode-generator, socket-io, sqlalchemy, websocket
- Language: HTML
- Homepage:
- Size: 211 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 💳 Pagamento em Tempo Real com Flask e WebSockets
Este projeto simula um sistema de pagamento em tempo real utilizando **Flask**, **Python** e **WebSockets**. O sistema permite a criação de pagamentos via Pix, confirmação de pagamento, monitoramento de pagamentos expirados e atualização em tempo real via **WebSockets** para os clientes conectados. 💳🔄

## 🛠️ Tecnologias Utilizadas
- 🐍 **Flask**: Framework web para Python.
- 🌐 **WebSockets (via Flask-SocketIO)**: Comunicação em tempo real entre o servidor e o cliente.
- 🗄️ **SQLite**: Banco de dados relacional para armazenar informações sobre os pagamentos.
- ⏰ **Flask-APScheduler**: Agendador para verificar pagamentos expirados periodicamente.
## ⚙️ Funcionalidades
- 🖼️ **Criação de pagamentos Pix:** Gera um pagamento com valor especificado e cria um QR Code único.
- ✅ **Confirmação de pagamentos:** Valida o pagamento com base no valor e no `bank_payment_id`.
- ⏳ **Monitoramento de pagamentos expirados:** Detecta automaticamente pagamentos que ultrapassaram o tempo limite.
- 📡 **Notificações em tempo real:** Envia atualizações de eventos como pagamentos confirmados ou expirados via WebSockets.
- **Páginas de status do pagamento:**
- 📄 Página de pagamento com QR Code para transações pendentes.
- ⌛ Página de pagamento expirado com detalhes.
- 🎉 Página de pagamento confirmado com informações detalhadas.
## 🔧 Instalação
1. **Clone o repositório:**
```bash
git clone https://github.com/joschonarth/flask-payment-api.git
```
2. **Crie um ambiente virtual:**
```bash
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
```
3. **Instale as dependências:**
```bash
pip install -r requirements.txt
```
4. **Inicie o servidor Flask:**
```bash
python app.py
```
🌐 O servidor estará rodando em [http://127.0.0.1:5000](http://127.0.0.1:5000).
## 🔗 Endpoints
### 💳 Criar Pagamento Pix
- **Descrição:** Cria um pagamento Pix com valor e gera um QR Code para pagamento.
- **Método:** `POST`
- **URL:** `/payments/pix`
- **Body:**
```json
{
"value": 500
}
```
- **Response:**
```json
{
"message": "The payment has benn created",
"payment": {
"bank_payment_id": "7cc9275c-b511-49b2-9211-d4a6526ae619",
"expiration_date": "Fri, 13 Dec 2024 22:17:08 GMT",
"id": 6,
"paid": false,
"qr_code": "qr_code_payment_7cc9275c-b511-49b2-9211-d4a6526ae619",
"value": 500.0
}
}
```
### 🖼️ Obter QR Code do Pagamento Pix
- **Descrição:** Recupera a imagem do QR Code gerado para um pagamento.
- **Método:** `GET`
- **URL:** `/payments/pix/qr_code/`
### ✅ Confirmar Pagamento Pix
- **Descrição:** Confirma o pagamento de um Pix quando o valor e o bank_payment_id forem validados.
- **Método:** `POST`
- **URL:** `/payments/pix/confirmation`
- **Body:**
```json
{
"bank_payment_id": "360286a2-6bc5-4a6e-b16b-251429b43b98",
"value": 500
}
```
- **Response:**
```json
{
"message": "The payment has benn confirmed"
}
```
## ⚡ Funcionalidades de WebSocket
- **Conectar ao servidor WebSocket:** Ao conectar-se, o cliente recebe notificações em tempo real de eventos como pagamentos confirmados e pagamentos expirados. 🔔
- **Eventos emitidos:**
- `payment-confirmed-{payment_id}`: Quando um pagamento é confirmado. ✅
- `payment-expired-{payment_id}`: Quando um pagamento expira. ⏰

## ⏰ Agendamento de Verificação de Pagamentos Expirados
A cada 1 minuto, o sistema verifica pagamentos que não foram confirmados e estão expirados. Se algum for encontrado, um evento `payment-expired-{payment_id}` é emitido. 🔄

## 🧪 Como Testar
1. **Criação de um pagamento Pix:** Envie um `POST` para `/payments/pix` com um valor e obtenha o QR Code. 📱
2. **Confirmação do pagamento:** Envie um `POST` para `/payments/pix/confirmation` com o `bank_payment_id` e o valor. 💸
3. **Verificação do status de pagamento:** Acesse a URL `/payments/pix/` para ver se o pagamento foi confirmado ou expirou. 🔍
## 🤝 Contribuições
Sinta-se à vontade para abrir issues ou pull requests com melhorias ou correções. 🚀
## 📞 Contato