Skip to content

VilleSIlva/Python-Flask-WebSockets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Pagamentos PIX com WebSockets

Sistema de pagamentos PIX desenvolvido em Flask com suporte a WebSockets para notificações em tempo real. O projeto permite criar pagamentos, gerar QR codes e receber confirmações instantâneas quando um pagamento é realizado.

🚀 Funcionalidades

  • ✅ Criação de pagamentos PIX
  • ✅ Geração automática de QR codes
  • ✅ Notificações em tempo real via WebSockets
  • ✅ Interface web responsiva para visualização de pagamentos
  • ✅ Sistema de expiração de pagamentos (30 minutos)
  • ✅ Confirmação de pagamentos via API
  • ✅ Banco de dados SQLite para persistência

📋 Pré-requisitos

  • Python 3.7 ou superior
  • pip (gerenciador de pacotes Python)

🔧 Instalação

  1. Clone o repositório:
git clone <url-do-repositorio>
cd WebSockets
  1. Crie um ambiente virtual (recomendado):
python -m venv venv
source venv/bin/activate  # No Windows: venv\Scripts\activate
  1. Instale as dependências:
pip install -r requirements.txt

🏃 Como Executar

  1. Execute o servidor Flask:
python app.py
  1. O servidor estará disponível em http://127.0.0.1:5000

📚 Estrutura do Projeto

WebSockets/
├── app.py                 # Aplicação principal Flask
├── requirements.txt       # Dependências do projeto
├── db_models/
│   └── payment.py        # Modelo de dados para pagamentos
├── payments/
│   └── pix.py            # Lógica de geração de QR codes PIX
├── repository/
│   └── database.py       # Configuração do banco de dados
├── templates/
│   ├── payment.html      # Página de pagamento pendente
│   ├── confirmed_payment.html  # Página de pagamento confirmado
│   └── 404.html          # Página de erro
├── static/
│   ├── css/
│   │   └── styles.css    # Estilos CSS
│   ├── image/            # QR codes gerados
│   └── template_img/     # Imagens estáticas
└── test/
    └── test_pix.py       # Testes unitários

🔌 API Endpoints

Criar Pagamento PIX

POST /payments/pix
Content-Type: application/json

{
  "value": 100.50
}

Resposta:

{
  "message": "The payment has been created",
  "payments": {
    "id": 1,
    "value": 100.5,
    "paid": false,
    "bank_payment_id": "uuid-gerado",
    "qr_code": "qr_code_hash_payment_uuid",
    "expire_in": "2024-01-01T12:30:00"
  }
}

Visualizar Pagamento

GET /payments/pix/<id>

Retorna a página HTML com o QR code e informações do pagamento.

Obter QR Code (Imagem)

GET /payments/qr_code/pix/<qr_code>

Retorna a imagem PNG do QR code.

Confirmar Pagamento

POST /payments/pix/confirmation
Content-Type: application/json

{
  "bank_payment_id": "uuid-do-pagamento",
  "value": 100.50
}

Resposta:

{
  "message": "Payments Confimation"
}

Quando um pagamento é confirmado, um evento WebSocket é emitido para notificar o cliente em tempo real.

🔔 WebSockets

O projeto utiliza Flask-SocketIO para comunicação em tempo real. Quando um pagamento é confirmado, um evento é emitido com o formato:

payment-confirmed-{payment_id}

O cliente JavaScript na página de pagamento escuta este evento e recarrega a página automaticamente quando o pagamento é confirmado.

🗄️ Banco de Dados

O projeto utiliza SQLite como banco de dados. O arquivo database.db é criado automaticamente na primeira execução.

Modelo de Dados

Payments:

  • id (Integer, Primary Key)
  • value (Float) - Valor do pagamento
  • paid (Boolean) - Status do pagamento
  • bank_payment_id (String) - ID único do pagamento no banco
  • qr_code (String) - Nome do arquivo do QR code
  • expire_in (DateTime) - Data de expiração do pagamento

🧪 Testes

Execute os testes unitários:

pytest test/test_pix.py

🛠️ Tecnologias Utilizadas

  • Flask - Framework web Python
  • Flask-SocketIO - WebSockets para Flask
  • Flask-SQLAlchemy - ORM para banco de dados
  • qrcode - Geração de QR codes
  • Pillow - Processamento de imagens

📝 Notas

  • Os pagamentos expiram automaticamente após 30 minutos
  • Os QR codes são salvos na pasta static/image/
  • O banco de dados SQLite é criado automaticamente na primeira execução
  • O servidor roda em modo debug por padrão

About

Sistema de pagamentos PIX desenvolvido em Flask com suporte a WebSockets para notificações em tempo real. O projeto permite criar pagamentos, gerar QR codes e receber confirmações instantâneas quando um pagamento é realizado.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors