Предварительный расчет заказа
Описание
Метод preorder позволяет выполнить предварительный расчет заказа с учетом промоакций и баллов участника программы лояльности.
Результат запроса может использоваться для отображения итоговых сумм, скидок и списаний до создания окончательного заказа.
Метод не создает заказ в системе, а возвращает расчетное состояние заказа с примененными правилами маркета и лояльности. Для создания рассчитанного заказа после успешного выполнения preorder используйте метод preorder_commit.
URL-адрес
Метод: POST
https://example.com/api/v1.1/market/orders/preorder
Параметры запроса
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| token | string | "abcdefghijklmnqrstuvwxyz" | Да | API-токен |
| external_id | string | "12" | Да | Внешний идентификатор заказа |
| matching | string | "email" | Да | Способ поиска профиля участника программы лояльности |
| string | "example@example.com" | Если matching = email | Email участника | |
| phone | string | "+79000000000" | Если matching = phone | Телефон участника |
| profile_id | string | "696e304f547840a7286619e0" | Если matching = profile_id | Идентификатор профиля |
| data | JSON object | { | Да | Объект |
Поле lines обязательно и д олжно содержать как минимум одну позицию заказа.
Объект data
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| endpoint | string | "bot", "website" | Да | Источник заказа (точка контакта). Должен быть настроен в Маркете |
| status | string | "new", "confirmed", "paid" | Да | Статус заказа. Используются статусы, настроенные в платформе |
| currency | string | "RUB", "USD", "EUR" | Да | Валюта заказа (трехбуквенный код ISO) |
| total_price | string | "2500.00" | Да | Общая стоимость заказа до применения скидок |
| final_total_price | string | "2150.00" | Да | Итоговая стоимость заказа после применения всех скидок |
| delivery_cost | string | "300.00" | Нет | Стоимость доставки |
| create_time | string (ISO 8601) | "2026-02-18T13:01:05.141Z" | Нет | Дата и время создания заказа. Если не передано, используется текущее время сервера |
| region | string | "region_moscow" | Нет | Идентификатор региона для применения региональных цен и акций |
| lines | array | См. ниже раздел "Массив lines" | Да | Массив позиций заказа. Должен содержать минимум 1 элемент |
| promocodes | array | См. ниже раздел "Массив promocodes" | Нет | Массив промокодов, примененных к заказу |
| applied_promotions | array | См. ниже раздел "Массив applied_promotions" | Нет | Промоакции, примененные к данному заказу. |
| redeem_points | array | См. ниже раздел "Массив redeem_points" | Да, если указано type="redeem_points" в applied_promotions | Массив списаний баллов по типам валют |
| custom_fields | object | | Нет | Дополнительные поля заказа |
| tags | array | | Нет | Теги для маркировки заказа |
Массив lines
Массив содержит информацию о позициях заказа. Должен содержать минимум 1 позицию.
Каждая позиция вынесена в отдельный объект внутри массива со следующими параметрами:
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| external_id | string | "line_1" | Да | Внешний идентификатор позиции в системе клиента |
| product | string | "iphone17pmb256" | Да* | Идентификатор продукта |
| sku | string | "IPHONE17-256-BLACK" | Да* | Идентификатор SKU |
| line_number | integer | 1 | Нет | Порядковый номер линии в заказе |
| count | integer | 1 | Да | Количество единиц товара |
| base_price_per_item | string | "139999.00" | Да | Базовая цена за единицу товара |
| min_price_per_item | string | "130000.00" | Нет | Минимально допустимая цена за единицу товара |
| final_price_per_item | string | "139500.00" | Да | Финальная цена за единицу после применения всех скидок |
| status | string | "new" | Нет | Статус позиции заказа |
| custom_fields | object | {"color": "black", "size": "XL"} | Нет | Дополнительные поля позиции |
| applied_promotions | array | См. ниже раздел "Массив applied_promotions" | Нет | Промоакции, примененные к данной позиции. |
* — обязателен один из параметров: product или sku
Массив promocodes
Массив содержит объекты с информацией о промокодах.
Полное описание структуры промокода можно найти в этой статье.
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| code | string | "SUMMER20" | Да | Код промокода |
| pool_id | integer | 42 | Да | Идентификатор пула промокодов |
Массив redeem_points
Массив с инфомацией о списании баллов лояльности. Каждый объект описывает отдельное списание.
Полное описание структуры списания баллов можно найти в этой статье.
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| points_currency_iid | integer | 1 | Да* | Внутренний идентификатор типа баллов |
| points_currency_eid | string | "bonus1" | Да* | Внешний идентификатор типа баллов |
| name | string | "Бонусные баллы" | Нет | Название типа баллов |
| amount | integer | 499 | Да | Количество баллов для списания |
* — обязателен один из параметров: points_currency_iid или points_currency_eid
Массив applied_promotions
Массив applied_promotions может содержаться как в объекте data, так и в массиве lines внутри этого объекта. В первом случае в массиве будут переданы промоакции, применяемые к продуктам, во втором — акции, применяемые к заказу.
Массив применяемых к заказу промоакций. Каждый объект массива описывает отдельную промоакцию.
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| type | string | "discount", "accrue_points", "redeem_points", "code_issue", "message" | Да | Тип промоакции |
| promotion | object | | Да | Объект с идентификатором и названием промоакции |
| amount | string | "150.00" | Да, если type равен discount,accrue_points или redeem_points | Размер скидки или количество баллов |
| points_info | object | | Да, если type равен accrue_points или redeem_points | Объект с информацией о баллах |
Структура объекта points_info выглядит следующим образом:
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| points_currency_iid | integer | 1 | Да* | Внутренний идентификатор типа баллов |
| points_currency_eid | string | "bonus1" | Да* | Внешний идентификатор типа баллов |
| name | string | "Бонусные баллы" | Нет | Название типа баллов |
| amount | string | "6999" | Да | Количество баллов |
| expiration_date | string (ISO 8601) | "2027-02-18T00:00:00.000Z" | Нет | Дата сгорания начисленных баллов |
* — обязателен один из параметров: points_currency_iid или points_currency_eid