Асинхронное REST API приложение для интеграции с платежной системой, построенное на FastAPI с использованием PostgreSQL и SQLAlchemy ORM.
- JWT авторизация по email/password
- OAuth 2.0 поддержка стандартной авторизации
- Защищенные эндпоинты с проверкой ролей
- Просмотр информации о своем профиле
- Просмотр своих счетов
- Просмотр истории платежей
- Автоматическое взаимодействие с платежной системой
- Создание новых пользователей
- Редактирование и удаление пользователей
- Просмотр всех пользователей с информацией о счетах и балансах
- Обработчик вебхуков от сторонней платежной системы
- Безопасная обработка транзакций
- Интеграция с внешними платежными провайдерами
- Полное документирование API через Swagger UI
git clone <repository-url>
cd <project-directory>Переименуйте файл .env.example в .env и заполните его актуальными данными
- Docker
- Docker Compose
- Git
# Запуск в development режиме (с автоматическими миграциями)
ENVIRONMENT=development docker-compose up --build
# Или для production режима
ENVIRONMENT=production docker-compose up --builddocker-compose down- Python 3.10+
- PostgreSQL 12+
- pip (менеджер пакетов Python)
- virtualenv (рекомендуется)
# Создание виртуального окружения
python -m venv venv
# Активация для Linux/macOS
source venv/bin/activate
# Активация для Windows
venv\Scripts\activatepip install -r requirements.txtsudo -u postgres psql
CREATE DATABASE pay_flow_db;
CREATE USER your_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE pay_flow_db TO your_user;
\quvicorn app.main:app --reload --host 0.0.0.0 --port 8000В режиме development при запуске приложения автоматически применяются миграции Alembic и создаются тестовые данные:
- Тестовые пользователи:
Test User: test_user@example.com / test_user_password (роль: USER, id: 1)
Test Admin: test_admin@example.com / test_admin_password (роль: ADMIN, id: 2)
- Тестовые счета: Создается один тестовый счет привязанный к Test User
После запуска приложения документация и тестирование доступно по адресу:
- Swagger UI: http://localhost:8000/docs
- Получите JWT токен через
/api/auth/loginили OAuth 2.0 - Фронтенд должен добавлять токен в заголовок каждого запроса
src/
├── alembic/ # Миграции Alembic
├── app/
│ ├── api/ # Эндпоинты API
│ ├── core/ # Основная конфигурация и зависимости
│ ├── db/ # Модели ORM
│ ├── schemas/ # Pydantic модели
│ └── main.py # FastAPI приложение
├── docker-compose.yml
└── Dockerfile
- FastAPI - асинхронный веб-фреймворк
- PostgreSQL - реляционная база данных
- SQLAlchemy - ORM для работы с базой данных
- Alembic - система миграций базы данных
- Docker - контейнеризация приложения
- JWT - JSON Web Tokens для аутентификации
- OAuth 2.0 - стандарт авторизации
- В
developmentрежиме автоматически создаются тестовые данные - Для
productionизменитеENVIRONMENT=production - Все запросы (кроме аутентификации) требуют JWT токен в заголовке
- Административные функции доступны только пользователям с ролью
ADMIN
Этот проект лицензирован под MIT License - смотрите файл LICENSE для деталей
Для вопросов и поддержки обращайтесь через Issues в репозитории проекта
