Сервис для платёжной системы, реализующий REST API для управления пользователями, аккаунтами, платежами и обработкой вебхуков.
- Backend: FastAPI
- Database: PostgreSQL (с использованием SQLAlchemy)
- Authentication: JWT (JSON Web Tokens)
- Environment Management: python-dotenv
- Containerization: Docker и docker-compose
- Аутентификация через email и пароль.
- Получение информации о себе (ID, email, полное имя).
- Просмотр списка своих аккаунтов и балансов.
- Просмотр списка своих платежей.
- Аутентификация через email и пароль.
- Получение информации о себе (ID, email, полное имя).
- Управление пользователями (создание, удаление, обновление).
- Просмотр списка пользователей и их аккаунтов с балансами.
- Обработка вебхуков от сторонних платёжных систем.
- Проверка подписи вебхука.
- Создание счёта, если его нет.
- Создание транзакции и пополнение баланса пользователя.
- Убедитесь, что у вас установлены Docker.
- Создайте файл .env в корне проекта и заполните его (пример ниже).
- Запустите приложение:
docker compose up --build- Приложение будет доступно по адресу: http://localhost:8000.
- Убедитесь, что у вас установлен Python 3.9.
- Убедитесь, что у вас установлен и запущен PostgreSQL, создайте базу и подключение со следующими настройками.
| Параметр | Значение |
|---|---|
| Name | fastapi_app |
| Host name/address | 127.0.0.1 |
| Port | 5432 |
| Username | postgres |
| Password | (your_password) |
- Установите зависимости:
pip install -r requirements.txt- Создайте файл .env в корне проекта и заполните его (пример ниже).
- Запустите приложение:
python -m app.main- Приложение будет доступно по адресу: http://localhost:8000.
- Установите зависимости для тестирования:
pip install pytest pytest-asyncio- Запустите тесты:
python -m pytest tests/docker compose exec app pytest testsSECRET_KEY=your_secret_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Строка подключения при запуске приложения в Docker
DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/fastapi_app
# Строка подключения при запуске приложения локально
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@127.0.0.1:5432/fastapi_app
Пользовательские маршруты:
- GET /users/me – Получить информацию о текущем пользователе.
- GET /users/me/accounts – Получить список аккаунтов текущего пользователя.
- GET /users/me/transactions – Получить список транзакций текущего пользователя.
Администраторские маршруты:
- POST /admin/users – Создать нового пользователя.
- DELETE /admin/users/{user_id} – Удалить пользователя.
- PUT /admin/users/{user_id} – Обновить данные пользователя.
Обработка вебхуков:
- POST /webhook/payment – Обработать входящий платёж.
Полная документации на API находится здесь http://localhost:8000/docs
Беляшникова Таня
Требования - ТЗ
- Убедитесь, что переменные окружения настроены корректно.
- Для продакшн-окружения используйте безопасные значения SECRET_KEY и DATABASE_URL.