Подтверждение заказа
Описание
Метод preorder_commit выполняет финальное подтверждение заказа после успешного предварительного расчета через метод preorder. Метод создает заказ в системе, применяет все рассчитанные скидки, начисляет и списывает баллы, активирует промокоды.
URL-адрес
Метод: POST
https://example.com/api/v1.1/market/orders/preorder_commit
Параметры запроса
| Параметр | Тип | Пример | Обязательный | Описание |
|---|---|---|---|---|
| token | string | "abcdefghijklmnqrstuvwxyz" | Да | API-токен |
| external_id | string | "order_12345" | Да | Внешний идентификатор заказа в системе клиента |
| profile_id | string | "696e304f547840a7286619e0" | Да* | Идентификатор профиля. Поле, используемое для матчинга |
| string | "user@example.com" | Да* | Email участника. Поле, используемое для матчинга | |
| phone | string | "+79991234567" | Да* | Телефон участника. Поле, используемое для матчинга |
| skip_triggers | boolean | false | Нет | Отключить выполнение триггеров при создании заказа. По умолчанию — false |
| data | object | | Да | Объект с данными заказа |
* — для идентификации профиля необходимо передать один из параметров: profile_id, email или phone
Объект 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" | Нет | Массив промокодов, примененных к заказу |
| requested_promotions | array | См. ниже раздел "Массив requested_promotions" | Нет | Промоакции, примененные к данному заказу. В это поле передается структура из поля applied_promotions ответа метода /preorder |
| redeem_points | array | См. ниже раздел "Массив redeem_points" | Да, если указано type="redeem_points" в requested_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"} | Нет | Дополнительные поля позиции |
| requested_promotions | array | См. ниже раздел "Массив requested_promotions" | Нет | Промоакции, примененные к данной позиции. В это поле передается структура из поля applied_promotions ответа метода /preorder для соответствующей линии заказа. |
* — обязателен один из параметров: 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
Массив requested_promotions
Массив requested_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
Пример запроса
- JSON
- XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"external_id": "order_12345",
"profile_id": "696e304f547840a7286619e0",
"skip_triggers": false,
"data": {
"endpoint": "bot",
"status": "confirmed",
"currency": "RUB",
"total_price": "2500.00",
"final_total_price": "2150.00",
"delivery_cost": "300.00",
"create_time": "2026-02-18T13:01:05.141Z",
"region": "region_moscow",
"lines": [
{
"external_id": "line_1",
"product": "popit",
"base_price_per_item": "1500.00",
"final_price_per_item": "1350.00",
"count": 1,
"requested_promotions": [
{
"type": "discount",
"promotion": {
"external_id": "promo_1",
"name": "Summer Sale"
},
"amount": "150.00"
},
{
"type": "accrue_points",
"promotion": {
"external_id": "bonus_promo",
"name": "Начисление баллов"
},
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Бонусные баллы",
"amount": "75"
}
}
]
},
{
"external_id": "line_2",
"sku": "skuf",
"base_price_per_item": "700.00",
"min_price_per_item": "650.00",
"final_price_per_item": "650.00",
"count": 2,
"requested_promotions": [
{
"type": "redeem_points",
"promotion": {
"external_id": "redeem_promo",
"name": "Списание баллов"
},
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Бонусные баллы",
"amount": "50"
}
}
]
}
],
"promocodes": [
{
"code": "HYDO-4728-DZGU",
"pool_id": 42
}
],
"redeem_points": [
{
"points_currency_eid": "bonus1",
"amount": 100
}
],
"requested_promotions": [
{
"type": "code_issue",
"promotion": {
"external_id": "welcome_promo",
"name": "Welcome Gift"
}
}
],
"custom_fields": {
"source": "telegram_bot",
"campaign": "spring_sale"
},
"tags": ["premium", "first_order"]
}
}
<xml>
<token>abcdefghijklmnqrstuvwxyz</token>
<external_id>order_12345</external_id>
<profile_id>696e304f547840a7286619e0</profile_id>
<skip_triggers>false</skip_triggers>
<data>
<endpoint>bot</endpoint>
<status>confirmed</status>
<currency>RUB</currency>
<total_price>2500.00</total_price>
<final_total_price>2150.00</final_total_price>
<delivery_cost>300.00</delivery_cost>
<create_time>2026-02-18T13:01:05.141Z</create_time>
<region>region_moscow</region>
<lines>
<external_id>line_1</external_id>
<product>popit</product>
<base_price_per_item>1500.00</base_price_per_item>
<final_price_per_item>1350.00</final_price_per_item>
<count>1</count>
<requested_promotions>
<type>discount</type>
<promotion>
<external_id>promo_1</external_id>
<name>Summer Sale</name>
</promotion>
<amount>150.00</amount>
</requested_promotions>
<requested_promotions>
<type>accrue_points</type>
<promotion>
<external_id>bonus_promo</external_id>
<name>Начисление баллов</name>
</promotion>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Бонусные баллы</name>
<amount>75</amount>
</points_info>
</requested_promotions>
</lines>
<lines>
<external_id>line_2</external_id>
<sku>skuf</sku>
<base_price_per_item>700.00</base_price_per_item>
<min_price_per_item>650.00</min_price_per_item>
<final_price_per_item>650.00</final_price_per_item>
<count>2</count>
<requested_promotions>
<type>redeem_points</type>
<promotion>
<external_id>redeem_promo</external_id>
<name>Списание баллов</name>
</promotion>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Бонусные баллы</name>
<amount>50</amount>
</points_info>
</requested_promotions>
</lines>
<promocodes>
<code>HYDO-4728-DZGU</code>
<pool_id>42</pool_id>
</promocodes>
<redeem_points>
<points_currency_eid>bonus1</points_currency_eid>
<amount>100</amount>
</redeem_points>
<requested_promotions>
<type>code_issue</type>
<promotion>
<external_id>welcome_promo</external_id>
<name>Welcome Gift</name>
</promotion>
</requested_promotions>
</data>
</xml>
Пример ответа
- JSON
- XML
{
"data": {
"status": "success",
"processing_target": "immediate",
"external_id": "order_12345",
"issued_promocodes": [
{
"codes": ["HYDO-4728-DZGU"],
"pool": {
"pool_id": 100,
"name": "Welcome Promocodes"
},
"promotion": {
"external_id": "welcome_promo",
"name": "Welcome Gift"
}
}
],
"points_changes": [
{
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Бонусные баллы",
"amount": "21500"
},
"accrue_points": 75,
"redeem_points": 150
}
],
"contents": [
{
"promotion": {
"external_id": "message_promo",
"name": "Информационное сообщение"
},
"contents": [
{
"type": "text",
"message": "Спасибо за покупку! Вы получили 75 бонусов."
}
]
}
]
},
"error": 0,
"error_text": "Successful operation"
}
<xml>
<data>
<status>success</status>
<processing_target>immediate</processing_target>
<external_id>order_12345</external_id>
<issued_promocodes>
<codes>HYDO-4728-DZGU</codes>
<pool>
<pool_id>100</pool_id>
<name>Welcome Promocodes</name>
</pool>
<promotion>
<external_id>welcome_promo</external_id>
<name>Welcome Gift</name>
</promotion>
</issued_promocodes>
<points_changes>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Бонусные баллы</name>
<amount>21500</amount>
</points_info>
<accrue_points>75</accrue_points>
<redeem_points>150</redeem_points>
</points_changes>
<contents>
<promotion>
<external_id>message_promo</external_id>
<name>Информационное сообщение</name>
</promotion>
<contents>
<type>text</type>
<message>Спасибо за покупку! Вы получили 75 бонусов.</message>
</contents>
</contents>
</data>
<error>0</error>
<error_text>Successful operation</error_text>
</xml>
Возвращаемые параметры
| Параметр | Тип | Описание |
|---|---|---|
| data | object | Данные результата подтверждения |
| error | int | Код ошибки (0 при успехе) |
| error_text | string | Текст ошибки |
Параметры, возвращаемые в объекте data:
| Параметр | Тип | Описание |
|---|---|---|
| status | string | Статус обработки: • success — заказ успешно создан• outdated — цена изменилась с момента предварительного расчета (нужно повторить /preorder) |
| processing_target | string | Только для статуса success. Значение: immediate или processed |
| external_id | string | Внешний идентификатор заказа (из запроса) |
| issued_promocodes | array | Массив выданных промокодов (для акций типа code_issue) |
| points_changes | array | Массив изменений баланса баллов по типам валют |
| contents | array | Массив контента для отображения (текстовые сообщения из промоакций) |
Массив issued_promocodes состоит из объектов с информацией о примененных промокодах:
| Параметр | Тип | Описание |
|---|---|---|
| codes | array | Массив выданных кодов промокодов |
| pool | object | Информация о пуле промокодов |
| pool.pool_id | integer | И дентификатор пула |
| pool.name | string | Название пула |
| promotion | object | Объект с информацией о промоакции |
| promotion.external_id | string | Внешний идентификатор промоакции |
| promotion.name | string | Название промоакции |
Массив points_changes состоит из объектов с информацией об изменении баланса баллов:
| Параметр | Тип | Описание |
|---|---|---|
| points_info | object | Объект с информацией о типе баллов |
| points_info.points_currency_iid | integer | Внутренний идентификатор типа баллов |
| points_info.points_currency_eid | string | Внешний идентификатор типа баллов |
| points_info.name | string | Название типа баллов |
| points_info.amount | string | Текущий баланс после операции |
| accrue_points | integer | Количество начисленных баллов |
| redeem_points | integer | Количество списанных баллов |