Skip to content

Асинхронное API для платёжной системы: JWT-аутентификация, управление пользователями и счетами, приём webhook-уведомлений о платежах.

License

Notifications You must be signed in to change notification settings

belyashnikovatn/payment_system

Repository files navigation

Payment System

Сервис для платёжной системы, реализующий REST API для управления пользователями, аккаунтами, платежами и обработкой вебхуков.


Стек технологий


Функционал

Для пользователей:

  • Аутентификация через email и пароль.
  • Получение информации о себе (ID, email, полное имя).
  • Просмотр списка своих аккаунтов и балансов.
  • Просмотр списка своих платежей.

Для администраторов:

  • Аутентификация через email и пароль.
  • Получение информации о себе (ID, email, полное имя).
  • Управление пользователями (создание, удаление, обновление).
  • Просмотр списка пользователей и их аккаунтов с балансами.

Обработка платежей:

  • Обработка вебхуков от сторонних платёжных систем.
  • Проверка подписи вебхука.
  • Создание счёта, если его нет.
  • Создание транзакции и пополнение баланса пользователя.

Развёртывание

С использованием Docker Compose

  1. Убедитесь, что у вас установлены Docker.
  2. Создайте файл .env в корне проекта и заполните его (пример ниже).
  3. Запустите приложение:
docker compose up --build
  1. Приложение будет доступно по адресу: http://localhost:8000.

Без Docker Compose

  1. Убедитесь, что у вас установлен Python 3.9.
  2. Убедитесь, что у вас установлен и запущен PostgreSQL, создайте базу и подключение со следующими настройками.
Параметр Значение
Name fastapi_app
Host name/address 127.0.0.1
Port 5432
Username postgres
Password (your_password)
  1. Установите зависимости:
pip install -r requirements.txt
  1. Создайте файл .env в корне проекта и заполните его (пример ниже).
  2. Запустите приложение:
python -m app.main
  1. Приложение будет доступно по адресу: http://localhost:8000.

Тестирование

Локально

  1. Установите зависимости для тестирования:
pip install pytest pytest-asyncio
  1. Запустите тесты:
python -m pytest tests/

В Docker

docker compose exec app pytest tests

Пример .env файла

SECRET_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


API Маршруты

Пользовательские маршруты:

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

About

Асинхронное API для платёжной системы: JWT-аутентификация, управление пользователями и счетами, приём webhook-уведомлений о платежах.

Topics

Resources

License

Stars

Watchers

Forks