Skip to content

crewch/py_kassa

Repository files navigation

Курсовой проект

По дисциплине "Библиотеки и фреймворки Python"

Подготовили

ФИО Группа
Королев Павел М8О-105СВ-25
Крючков Артемий М8О-105СВ-25
Павлов Иван М8О-106СВ-25
Руднев Виктор М8О-105СВ-25

Вариант: Создание платежной системы

В процессе выполнения курсового проекта была разрабортана микросервисная архитектура платежной системы и были реализованы сервисы авторизации (python-jose, jwt-tokens, API-key), SMTP-уведомлений (smtplib) и платежей (yookassa SDK). Для управления жизненным циклом подписок была реализована связь с postgres, также был реализован механизм scheduled tasks для автоматического списания с помощью apscheduler.

Сервисы:

  • Авторизация - для продавцов. Роуты на создание юзера, получение JWT Access и Refresh Token, валидация токена и login. Взаимодействует с Базой Данных, использует библиотеки python jose и secrets;
  • Сервис уведомлений - отправка писем на электронную почту покупателей. Запрос на отправку создает Task в rabbitmq, который обрабатывается асинхронно и отправляет письма. Используется smtplib и креды mail.ru;
  • Сервис платежей. Используется yookassa SDK и postgres для управление подпискамми, тарифами, покупателями, акциями и промокодами, связи их с объектами yookassa;
  • Прокси-сервис для связи сервисов в единое приложение и использование как точка входа.

Что было использовано из курса лекций:

  • Императивный маппинг sqlalcemy в БД (примеры в payments/source/pykassa_payments/services/postgres/tables_provider и auth/source/pykassa_auth/services/postgres/sellers_tables_provider.py)
  • IoC-контейнеры и Dependency Injection (Примеры регистрации в main.py и резолвиинг в роутах в payments, notifications и auth сервисов)
  • Domain Driven Design (Примммеры во всех сервисах кроме proxy)
  • Хеширование паролей и хранение хешей в БД

Также был реализован сборщик питоно-пакетов на основе uv и toolkit приложений, который можно использовать во всех сервисах сразу. В пакет входят: конфигуратор проекта, http-клиент на основе aiohttp, ioc-резолвер на основе fastapi и pyioc3, клиенты для postgres, redis и tasks_manager. Сервисы также собраны в виде готовых питоно-пакетов.

How to install env for develop

Using UV (Recommended)

  1. install uv

Windows PowerShell

irm https://astral.sh/uv/install.ps1 | iex
uv venv --python 3.10
.venv/Scripts/activate

Linux

curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv --python 3.10
source .venv/bin/activate
  1. install packages
python3 ./bootstrap/build_packages.py
uv pip install -r ./bootstrap/requirements.txt
uv pip install --no-deps --force-reinstall $(ls ./bootstrap/whl/*.whl)

Using legacy builder

  1. create and activate venv
python3 -m venv venv
source venv/bin/activate
  1. install base packages
pip install setuptools==59.6.0
pip install wheel==0.45.1
python3 bootstrap/build_packages_legacy.py
pip install --find-links=whl bootstrap/whl/* --force-reinstall
  1. copy and edit .env file
cp .env.example .env

How to run project

  1. build base docker images
docker-compose build python-build
  1. run docker
docker-compose up --build

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages