Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Payment Flask Method

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.


✨ Funcionalidades

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

🖼️ Demonstração

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

🚀 Tecnologias utilizadas

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

📦 Estrutura do projeto

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

Organização

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

⚙️ Pré-requisitos

Antes de executar o projeto, instale:

  • Python 3.10 ou superior
  • pip
  • Ambiente virtual (recomendado)

🔧 Instalação

Clone o repositório:

git clone <URL_DO_REPOSITORIO>

Entre na pasta do projeto:

cd payment-flask-method

Crie um ambiente virtual.

Linux/macOS

python -m venv venv
source venv/bin/activate

Windows

python -m venv venv
venv\Scripts\activate

Instale as dependências:

pip install -r requirements.txt

▶️ Como executar

Inicie a aplicação:

python app.py

A API ficará disponível em:

http://localhost:5000

🧪 Testes

Execute os testes utilizando:

pytest

Os testes estão localizados em:

tests/

📚 API

Criar pagamento PIX

Método Endpoint
POST /payments/pix

Exemplo

POST /payments/pix
Content-Type: application/json
{
  "value": 150.50
}

Resposta:

{
  "message": "The payment has been created",
  "payment": {
    "...": "..."
  }
}

Obter QR Code

Método Endpoint
GET /payments/pix/qr_code/{file_name}

Confirmar pagamento

Método Endpoint
POST /payments/pix/confirmation

Exemplo

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

Página do pagamento

Método Endpoint
GET /payments/pix/{payment_id}

🌎 Variáveis de ambiente

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.


📄 Dependências

Principais bibliotecas utilizadas:

Biblioteca
Flask
Flask-SQLAlchemy
Flask-SocketIO
qrcode
Pillow
pytest

📌 Roadmap

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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages