RIDERSRUN

Корзина, заказ и оплата

Серверная цена, защита от дублей, доставка и единая страница заказа.

Корзина посетителя

GET /shopping возвращает состояние покупок. POST /cart/items добавляет выбранный вариант. PUT /cart заменяет состав корзины. Cookie связывает корзину с посетителем; чужая корзина не становится доступной по ID.

POST /api/v1/cart/items
{
  "generationId": "<из GET /session>",
  "variantId": "<из карточки товара>",
  "quantity": 1
}

Оформление и повторные нажатия

POST /checkout принимает состав, покупателя, доставку, согласия и idempotencyKey. Ключ повторного запроса сохраняется для одной попытки оформления: повтор с теми же данными возвращает тот же заказ. Для нового заказа нужен новый ключ.

Сервер проверяет контакты, оба согласия, доступность и цену. Курьерская доставка и самовывоз имеют разные обязательные поля. GET /checkout возвращает стоимость курьерской доставки.

  • generationId — актуальное состояние стенда.
  • items — варианты и количество.
  • customer и delivery — контакты и способ получения.
  • acceptedPrivacy и acceptedDataProcessing — два отдельных согласия.
  • idempotencyKey — защита одной операции от дублирования.

Оплата, отказ и возврат

На этом стенде используются локальные тестовые платежные профили. Подтверждение оплаты, отказ, повтор и возврат отражаются в заказе и тестовых чеках. Настоящие деньги и фискальные документы здесь не обрабатываются.

В коммерческом запуске подключаем согласованный эквайринг и фискализацию, проверяем подписи уведомлений, повторные события и сценарии возврата. Это отдельный этап интеграции.

Один заказ — одна ссылка

В списке работают поиск по номеру, покупателю и товару, фильтры по статусу, оплате, источнику и периоду. Условия сохраняются в адресе страницы. Столбцы можно включать, переставлять и менять по ширине; CSV выгружает весь отфильтрованный список.

Покупатель открывает /orders/{id}, оператор — /admin/orders/{id}. В карточке находятся состав, доставка, источник перехода, платежи, чеки и статусы. API возвращает только заказ, доступный текущему посетителю, либо требует административного доступа.

Посмотреть заказы

Любой период и согласованные показатели

История содержит 3 006 подготовленных заказов за 365 дней. В заказах, обзоре и аналитике можно выбрать сегодня, вчера, последние 7, 30, 90 или 365 дней, текущий или прошлый месяц, текущий год, все время либо свои даты.

Начальная и конечная даты включены полностью, по московскому времени. Выборка считается по дате создания заказа; посетители — по первому визиту. График, суммы и переход к заказам используют тот же период. Поиск, источник, оплата и статус дополнительно сужают список и его показатели. Выбранные условия сохраняются в ссылке, а CSV включает все найденные строки.

API принимает from и to в формате ГГГГ-ММ-ДД или days=all / число дней. Обратный диапазон, неверная дата и интервал больше 10 лет возвращают 400 с кодом invalid_period. Новая история добавляется без повторного списания складских остатков и без изменения существующих заказов.

GET /api/v1/admin/orders?from=2026-10-01&to=2026-10-31
GET /api/v1/admin/analytics?from=2026-10-01&to=2026-10-31
GET /api/v1/admin/overview?days=365
Открыть аналитику за год