CreateOrder
Описание
| Назначение | Создать заказ в ресторане по objectId |
| Тип запроса | Асинхронный/синхронный |
| Поддерживаемая версия агента | v1, v2 |
| PluggetSystemType | RKMid |
Формат запроса
{
"taskType": "CreateOrder",
"params": {
"sync": {
"objectId": number,
"timeout": number,
"systemName": "string"
},
"cashStationId": number,
"order": {
"withRkId": "GUID",
"originalOrderId": "string",
"sourceOrderId": "string",
"payMethod": "string",
"booking":{
"time": "string",
"duration":{
"hours": number,
"minutes": number
},
"remindTime": "string"
},
"expectedStartTime": "string",
"customer": {
"name": "string",
"phone": "string",
"email": "string"
"loyalty":{
"clientId": number,
"cardCode": "string"
"interfaceCode": number
}
},
"pickup": {
"courier": {
"name": "string",
"phone": "string"
},
"expectedTime": "2019-10-17T00:00:00+03:00",
"taker": "customer"
},
"payment": {
"type": "string",
"nettingPayment": boolean,
"deliveryFee": number
},
"expeditionType": "string",
"delivery": {
"expectedTime": "2008-10-17T00:00:00+03:00",
"address": {
"fullAddress": "string",
"subway": "string",
"region": "string",
"city": {
"name": "string"
},
"street": {
"name": "string"
},
"houseNumber": "string",
"flatNumber": "string",
"entrance": "string",
"intercom": "string",
"floor": "string",
"coordinates": {
"latitude": "string",
"longitude": "string"
},
"comment":"string"
},
"courier": {
"name": "string",
"phone": "string"
}
},
"changeBackFrom": number,
"products": [
{ // простой вариант
"id": number,
"name": "string",
"price": "string", // параметр не обязателен. Можно не заполнять, так как заказ создается с ценой, указанной на кассе
"quantity": number,
"comment": "string",
"discountIds": [
{
"id": number,
"value":number
}
],
"yandexPromos": [
{
"type": "string",
"discount: number
}
]
},
{ // вариант с модификаторами или комбо
"id": number,
"name": "string",
"price": number, // параметр не обязателен. Можно не заполнять, так как заказ создается с ценой, указанной на кассе
"quantity": number,
"comment": "string"
"ingredients": [ //массив модификаторов или элементов комбо
{
"id": number,
"name": "string",
"quantity": number,
"price": number, // параметр не обязателен. Можно не заполнять, так как заказ создается с ценой, указанной на кассе
"comment": string,
"yandexPromos": [
{
"type": "string",
"discount: number
}
],
"ingredients": [ //массив модификаторов для комбо-компонетов. Только с версии агента 2.7.9.1
{
"id": number,
"name": "string",
"quantity": number,
"price": number // параметр не обязателен. Можно не заполнять, так как заказ создается с ценой, указанной на кассе
}
]
}
]
}
],
"platform": "string",
"comment": "string",
"price": {
"total": number
},
"personsQuantity": number,
"tableCode": number,
"extraTableCodes": [
1,
2
],
"orderCategoryCode": number,
"orderTypeCode": number,
"prePayments": [
{
"amount": number,
"currency": "guid"
}
],
"guestTypeId": number,
"discountIds": [
number,
number
],
// или
"discountIds": [
{
"id": number,
"value":number
}
],
"source": "string",
"yandexPromos": [
{
"type": "string",
"discount: number
}
],
"deliveryManager": "string",
"deliveryOperator": "string",
"isDeferred": "string"
"site": "string",
"isCalcInInternet": boolean
"yndexEatsPartnerName": "string",
"yndexEatsAuthorization": "string",
"yndexEatsOrderId": "string",
}
Описание параметров
| Параметр | Тип | Обязательный | Описание | Значение по умолчанию |
|---|---|---|---|---|
| async | - | Асинхронный вызов метода (либо синхронный, либо асинхронный) | ||
| sync | - | Синхронный вызов метода (либо синхронный, либо асинхронный) | ||
| timeout | int | - | Время ожидания ответа от агента в секундах | 120 секунд |
| objectId | int | да | Код ресторана в системе лицензирования | |
| systemName | string | нет | Указание конкретной подключенной системы для которой выполняется запрос | |
| order | да | |||
| cashStationId | int | - | Id кассовой станции, если не указан, берется из параметров ресторана установленных в административной панели WS. При указании кассовой станции с mid, отличного от выбранного в "параметрах создания заказа", указываем этот mid в поле systemName Маршрутизация запросов | |
withRkId | GUID | - | Если указан, то заказ создается в r_keeper с заданным значением guid. Только с версии агента 2.5.4.10+ | |
| originalOrderId | string | - | Внешний номер заказа | |
| sourceOrderId | string | - | Изначальный идентификатор заказа (например идентификатор в системе Yandex). Необязательный. Сохраняется в r_keeper в одноименное расширенное поле | |
| booking | object | - | Бронирование заказа(стола) на указное время. Если настроено подключение к KDS PRO, требуется донастроить на стороне KDS PRO - в разделе Операции над отложенными блюдами выставить По наступлении времени готовки.
| |
| |-time | dateTime | + | Время начала брони в формате ГГГГ-ММ-ДДTЧЧ:ММ:СС | |
| |-duration | object | + | Продолжительность брони | |
| |-hours | number | + | Продолжительность в часах | |
| |-minutes | number | + | Продолжительность в минутах | |
| |-remindTime | dateTime | - | Время начала готовки блюд пакета (и первой печати сервис-чеков) (в формате ГГГГ-ММ-ДДTЧЧ:ММ:СС '2024-06-26T21:00:00'). Если не задано, то используется текущее время | |
| expectedStartTime | string | - | Плановое время начала приготовления заказа. Необязательный. Сохраняется в r_keeper в одноименное расширенное поле | |
| payment | object | - | ||
|- type | string | да | Тип оплаты: cash – оплата наличными, card – оплата картой, online – онлайн оплата. В случае варианта online считаем, что заказ оплачен | |
|- nettingPayment | boolean | - | Если True, то заказ по взаиморасчету от Яндекс | |
| |- deliveryFee | decimal | - | Стоимость доставки. Только для мультиагента доставки | |
| customer | object | - | Гость | |
| |- name | string | - | Имя гостя | |
| |- phone | string | - | Телефон гостя | |
| |- email3 | string | - | E-mail гостя | |
| |- loyalty | object | - | Информация по карте лояльности гостя | |
| |- clientId | long | + | Идентификатор (номер карты) лояльности | |
| |- cardCode | string | - | Карта лояльности клиента | |
| |- interfaceCode | int | + | Код PDS-интерфейса кипера | |
| expeditionType | string | да | Тип доставки. Варианты: delivery, pickup. Можно сохранить значение через тип и категорию заказа | |
| pickup | object | - | Самовывоз, если expeditionType = pickup | |
| |- courier | object | - | Информация о курьере | |
| |- name | string | - | Имя курьера, если taker = courier | |
| |- phone | string | - | Телефон курьера, если taker = courier | |
| |- expectedTime | DateTime | да | К какому времени приготовить заказ | |
| |- taker | string | да | Кто заберет заказ из ресторана. Варианты: courier, customer. Можно сохранить значение через тип и категорию заказа | |
| delivery | object | - | Доставка курьером ресторана, если expeditionType = delivery | |
| |- address | object | - | Адрес | |
| |- fullAddress | string | - | Полный адрес | |
| |- subway | string | - | Метро | |
| |- region | string | - | Регион | |
| |- city | object | - | ||
| |- name | string | - | Город | |
| |- street | object | - | ||
| |- name | string | - | Улица | |
| |- houseNumber | string | - | Номер дома | |
| |- flatNumber | string | - | Номер квартиры | |
| |- entrance1 | string | - | Подъезд | |
| |- intercom1 | string | - | Домофон | |
| |- floor | string | - | Этаж | |
| |- coordinates | - | Координаты | ||
| |- latitude | string | - | Широта | |
| |- longitude | string | - | Долгота | |
| |- comment | string | - | Комментарий к адресу | |
| |- courier | object | - | Информация о курьере | |
| |- name | string | - | Имя курьера | |
| |- phone | string | - | Телефон курьера | |
| changeBackFrom | decimal | - | С какой суммы нужна сдача | |
| products | array | - | Состав заказа (может быть не указанным при бронировании стола) | |
| |- id | int | да | Идентификатор блюда | |
| |- name | string | - | Название блюда | |
| |- price | money | - | Цена за одно блюдо. Разделителем целой и дробной части суммы должна быть точка | |
| |- quantity | money | да | Количество блюд | |
| |- discountIds | array | - | Массив идентификаторов кассовых скидок для блюд | |
| |- id | int | - | Идентификатор скидки | |
| |- value | decimal | - | Значение скидки. Указывается сумма или процент. 0 – полное применение скидки. Можно задавать как положительное, так и отрицательные значения | |
| |- yandexPromos | array | - | Список промоакций сервиса Яндекс.Еда для блюда. Обслуживается только мультиагентом доставки | |
| |- type | string | + | Тип промо (GIFT/PERCENTAGE/FIXED/COFINANCE) | |
| |- discount | number | + | Значение промо скидки | |
| |- partnerDiscount | number | - | Поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE | |
| |- yandexDiscount | number | - | поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE | |
| |- comment | string | - | Комментарий к блюду. Только с версии агента 2.6.7.1 | |
| |- ingredients | array | - | Ингредиенты или состав комбо-блюда | |
| |- id | int | да | Идентификатор ингредиента | |
| |- name | string | - | Название модификатора или комбо-компонента | |
| |- quantity | money | - | Количество | |
| |- price | money | - | Цена | |
| |- ingredients | array | - | Массив модификаторов для комбо-компонентов. Только с версии агента 2.7.9.1 | |
| |- id | int | да | Идентификатор модификатора | |
| |- name | string | - | Название модификатора | |
| |- quantity | money | - | Количество | |
| |- price | money | - | Цена | |
| tableCode3 | int | - | Код стола (только агент v2) | |
| extraTableCodes3 | int[] | - | Дополнительные столы для бронирования (только агент v2) | |
| orderCategoryCode4 | int | - | Код категории заказа (только агент v2). Если не указан, берется из настроек по умолчанию | |
| orderTypeCode4 | int | - | Код типа заказа (только агент v2). Если не указан, берется из настроек по умолчанию | |
| price | array | - | Данные по оплате. Используемое как сумма оплаты при оплате онлайн
| |
| |- total | money | - | Значение суммы на оплату онлайн. Разделителем целой и дробной части суммы должна быть точка | |
| prePayments | array | - | Массив данных по предоплате (необязательный). Только с версии агента 2.6.7.3.
| |
- amount | money | + | Значение суммы на оплату. Разделителем целой и дробной части суммы должна быть точка | |
- currency | guid | + | guid валюты | |
| guestTypeId3 | int | - | Идентификатор типа гостя. Если не указан, берется из настроек Параметры создания заказа на ресторане | |
| discountIds2,3 | int[]/ object[] | - | Массив идентификаторов кассовых скидок. GetRefData(DISCOUNTS).Ident Только с версии агента 2.7.3.20 | |
| - id | int | Идентификатор скидки | ||
| - value | decimal | Значение скидки. Указывается сумма или процент. 0 — полное применение скидки. Можно задавать как положительное, так и отрицательные значения | ||
| source | string | - | Расширенное свойство Источник заказа GetRefData(ENUMSTYPESDATAS).EnumValue | |
| platform | string | - | Только для заказов из Яндекс.Сервиса. Тип платформы (YA, DC), откуда пришел заказ | |
| yandexPromos | array | - | Список промоакций сервиса Яндекс.Еда для всего заказа. Обслуживается только мультиагентом доставки | |
| |- type | string | + | Тип промо (GIFT/PERCENTAGE/FIXED/COFINANCE) | |
| |- discount | number | + | Значение промо скидки | |
| |- partnerDiscount | number | - | Поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE | |
| |- yandexDiscount | number | - | поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE | |
| payMethod | string | - | Способ оплаты. С версии WSA 2.8.2.1 | |
| deliveryManager | string | - | "Менеджер доставки" – менеджер, который является основным менеджером по заказу | |
| deliveryOperator | string | - | "Доставка - оператор" – оператор КЦ, который является основным оператором по заказу | |
| isDeferred | string | - | "Отложенный заказ" – это признак в явном виде того, что заказ является отложенным | |
| site | string | - | Место расчета | |
| isCalcInInternet | boolean | - | Признак расчета в интернете | |
yndexEatsPartnerName | string | - | Имя партнёра | |
yndexEatsAuthorization | string | - | Токен, сформированный на стороне «Яндекс Еды» | |
yndexEatsOrderId | string | - | Идентификатор заказа во внешней системе |
Примечания | |
|---|---|
| 1 | На текущий момент игнорируется WSA2 (опечатки в названии полей на стороне WSA) |
| 2 | На текущий момент игнорируется DTO WS (полей нет в DTO) |
| 3 | Поле отсутствует в DTO мультиагента (сервис доставки) |
| 4 | Поле присутствует в DTO мультиагента (сервис доставки), но не используется в логике |
Формат ответа
// Успешный ответ, заказ принят на кассе
{
"taskResponse": {
"order": {
"orderGuid": "guid",
"status":{
"value": "string"
},
"substate": "string",
"waiterId": number,
"tableCode": number,
"queuePosition": "string"
}
},
"responseCommon": {
"taskGuid": "guid",
"taskType": "CreateOrder",
"objectId": number
}
}
// Успешный ответ, заказ не принят на кассе
{
"taskResponse": {
"order": {
"status": {
"value": "string"
},
"rejectingReason": {
"code": "string",
"message": "string"
}
}
},
"responseCommon": {
"taskGuid": "string",
"taskType": "CreateOrder",
"objectId": number
}
}
// Ответ с ошибкой
{
"responseCommon": {
"taskGuid": "string",
"taskType": "CreateOrder",
"objectId": number
},
"error": {
"wsError": {
"code": "string",
"desc": "string"
},
"agentError": {
"code": string,
"desc": "string"
}
}
}
Описание параметров
Параметр | Тип параметра | Обязательный | Описание |
|---|---|---|---|
| orderGuid | guid | - | Полученный из r_keeper Guid созданного заказа |
| tableCode | int | - | Код стола |
| status | object | - | |
| |- value | string | - | Статус заказа. Вернется RestaurantCancelled, если заказ отменен в ресторане |
| |- isBillPrinted | bool | да | Флаг, показывающий, распечатан ли пречек заказа |
| substate | string | + | Расширенный статус заказа |
| waiterId | number | - | Код официанта |
| rejectingReason | - | ||
| |- code | string | - | Код отмены на кассе |
| | -message | string | - | Причина отмены заказа на кассе |
| error | string enum | - | Контейнер ошибок, см. Описание ошибок |
queuePosition | string | - | Номер очереди, который генерирует RK7. WSA 2.7.7.1, RK7 7.06.05.459. Формируется по правилу: код кассы транслируется латинскую букву + последние цифры номера заказа |
Пример api json запрос от клиента
{
"taskType": "CreateOrder",
"params": {
"sync": {
"objectId": 199995826,
"timeout": 60
},
"order": {
"originalOrderId": "string",
"customer": {
"name": "string",
"phone": "string"
},
"payment": {
"type": "string"
},
"expeditionType": "string",
"delivery": {
"expectedTime": "2008-10-17T00:00:00+0300",
"address": {
"subway": "string",
"region": "string",
"city": {
"name": "string"
},
"street": {
"name": "string"
},
"houseNumber": "string",
"flatNumber": "string",
"entrance": "string",
"intercom": "string",
"floor": "string",
"coordinates": {
"latitude": "string",
"longitude": "string"
},
"comment":"string"
}
},
"products": [
{
"id": "string",
"name": "string",
"price": "string",
"quantity": 0,
"ingredients": [
{
"id": "string",
"name": "string",
"quantity": 0,
"price": "string"
},
{
"id": "string",
"name": "string",
"quantity": 0,
"price": "string"
}
]
},
{
"id": "string2",
"name": "string",
"price": "string",
"quantity": 0,
"ingredients": [
{
"id": "string",
"name": "string",
"quantity": 0,
"price": "string"
},
{
"id": "string2",
"name": "string",
"quantity": 0,
"price": "string"
}
]
}
],
"comment": "string",
"price": {
"total": 0
},
"personsQuantity": 0,
"discountIds": [1000032],
// или
"discountIds": [
{
"id": 1000032,
"value": 11.50
}
],
"source": "kiosk"
}
}
}
Пример бронирования стола без заказа блюд
{
"taskType": "CreateOrder",
"params": {
"sync": {
"objectId": "199990246",
"timeout": 120
},
"order": {
"booking":{
"time": "2024-06-26T21:00:00",
"duration":{
"hours": 2,
"minutes": 50
}
},
"tableCode": 247,
"personsQuantity": 1
}
}
}