REST API для онлайн-магазина ссылка на GitHub:
https://github.com/dadaev77/ecommerce-api Структура данных 1. Пользователи (users):
Содержит информацию о пользователях, которые могут авторизоваться, создавать корзины и размещать заказы.
2. Товары (products):
Каталог товаров с возможностью получения списка и сортировки по цене.
3. Корзины (carts):
Уникальная корзина для каждого пользователя, содержащая добавленные товары.
4. Заказы (orders):
Представляют оплаченные корзины, имеют три статуса: На оплату, Оплачен, Отменен.
5. Способы оплаты (payment_methods):
Справочник доступных способов оплаты с уникальными ссылками для перехода на оплату.
Основной функционал 1. Авторизация пользователя Пользователь проходит авторизацию, получает токен и может выполнять операции с корзинами, товарами и заказами.
2. Работа с корзиной У каждого пользователя может быть только одна корзина.
В корзину можно:
- Добавлять товары
- Удалять товары
- Просматривать содержимое корзины
3. Оформление заказа Пользователь оплачивает корзину выбранным способом оплаты:
- Создается заказ со статусом 'На оплату'.
- Генерируется ссылка на оплату (уникальная для способа оплаты).
- Корзина удаляется.
Если заказ не оплачен в течение 2 минут, его статус изменяется на 'Отменен'.
При успешной оплате заказ получает статус 'Оплачен'.
4. История заказов Пользователь может:
- Просматривать список своих заказов.
- Фильтровать их по статусу.
- Сортировать по дате создания.
- Получать подробную информацию о конкретном заказе.
API **Авторизация:**
- POST /api/login — Авторизация и получение токена
- POST /api/register — Регистрация нового пользователя
**Работа с товарами:**
- GET /api/products — Получить список товаров (сортировка по цене: ?sort=price)
- GET /api/products/{id} — Получить информацию о товаре по ID
**Работа с корзиной:**
- POST /api/carts/{product_id} — Добавить товар в корзину
- DELETE /api/carts/{product_id} — Удалить товар из корзины
- GET /api/carts — Просмотреть содержимое корзины
**Работа с заказами:**
- POST /api/orders — Оплатить корзину и создать заказ, вернуть ссылку на оплату
- PATCH /api/orders/{id}/status — Обновить статус заказа на 'Оплачен'
- GET /api/orders — Получить список заказов (сортировка: ?sort=date, фильтр: ?status=paid)
- GET /api/orders/{id} — Получить информацию о заказе по ID
Фоновые задачи Проверка заказов со статусом 'На оплату':
- Если прошло более 2 минут, автоматически обновить статус на 'Отменен'.
Логика работы 1. Оплата корзины При вызове POST /api/orders:
- Проверяется наличие корзины у пользователя.
- Создается новый заказ со статусом 'На оплату'.
- Генерируется уникальная ссылка на оплату для выбранного способа оплаты.
- Корзина удаляется.
2. Обновление статуса на "Оплачен" При переходе по ссылке на оплату вызывается PATCH /api/orders/{id}/status с обновлением статуса заказа на 'Оплачен'.
3. Автоматическое обновление статуса Фоновый процесс:
- Периодически проверяет заказы со статусом 'На оплату'.
- Если прошло более 2 минут с момента создания, статус обновляется на 'Отменен'.