Асинхронный REST API, построенный на Sanic, SQLAlchemy и PostgreSQL.
- Аутентификация: Вход для пользователей и администраторов на основе JWT.
- Управление пользователями: CRUD-операции для администраторов.
- Счета и платежи: Отслеживание баланса и история транзакций.
- Webhook: Безопасная обработка платежей с проверкой подписи SHA256 и идемпотентностью.
- Фреймворк: Sanic
- ORM: SQLAlchemy 2.0 (Async)
- База данных: PostgreSQL
- Контейнеризация: Docker & Docker Compose
- Миграции: Alembic
- Убедитесь, что у вас установлены Docker и Docker Compose.
- Клонируйте репозиторий и перейдите в корневой каталог.
- Запустите:
docker compose up --build
- API будет доступно по адресу
http://localhost:8000.
- Установите зависимости:
pip install -r requirements.txt
- Настройте переменные окружения в файле
.env(необходимые ключи см. вdocker-compose.yml). - Запустите миграции:
alembic upgrade head
- Запустите сервер:
python -m app.main
- Email:
user@example.com - Пароль:
user123
- Email:
admin@example.com - Пароль:
admin123
POST /auth/login/user: Токен доступа для пользователя.POST /auth/login/admin: Токен доступа для администратора.
GET /user/me: Профиль текущего пользователя.GET /user/accounts: Список счетов и балансов.GET /user/payments: Список транзакций.
GET /admin/users: Список всех пользователей и их счетов.POST /admin/users: Создать нового пользователя.PATCH /admin/users/<id>: Обновить данные пользователя.DELETE /admin/users/<id>: Удалить пользователя.
POST /webhook/payment: Обработка внешнего платежа.- Обязательные поля:
transaction_id,account_id,user_id,amount,signature. - Подпись (Signature):
SHA256({account_id}{amount_with_2_decimals}{transaction_id}{user_id}{secret_key}) - Пример суммы:
100.00
- Обязательные поля:
- Используйте Postman или
curlдля тестирования конечных точек. - Убедитесь, что заголовок
Authorization: Bearer <token>включен для защищенных маршрутов.