CreateOrder
Описание
Назначение | Создать заказ в ресторане по objectId |
Тип запроса | Асинхронный/синхронный |
Поддерживаемая версия агента | v1, v2 |
PluggetSystemType | RKMid |
Формат запроса
{
"taskType": "CreateOrder",
"params": {
"async": {
"objectId": number,
"timeout": number,
"systemName": "string"
},
"sync": {
"objectId": number,
"timeout": number,
"systemName": "string"
},
"order": {
"withRkId": "GUID",
"originalOrderId": "string",
"sourceOrderId": "string",
"payMethod": "string",
"booking":{
"time": "string",
"duration":{
"hours": number,
"minutes": number
}
},
"expectedStartTime": "string",
"customer": {
"name": "string",
"phone": "string",
"email": "string"
},
"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, // параметр не обязателен. Можно не заполнять, так как заказ создается с ценой, указанной на кассе
"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
}
]
}
}
}
CODE
Описание параметров
Параметр | Тип | Обязательный | Описание | Значение по умолчанию |
---|---|---|---|---|
async | - | Асинхронный вызов метода (либо синхронный, либо асинхронный) | ||
sync | - | Синхронный вызов метода (либо синхронный, либо асинхронный) | ||
timeout | int | - | Время ожидания ответа от агента в секундах | 120 секунд |
objectId | int | да | Код ресторана в системе лицензирования | |
systemName | string | нет | Указание конкретной подключенной системы для которой выполняется запрос | |
order | да | |||
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 | + | Продолжительность в минутах | |
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 | - | Email гостя | |
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). Если не указан, берется из настроек по умолчанию | |
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 |
Примечания | |
---|---|
1 | На текущий момент игнорируется WSA2 (опечатки в названии полей на стороне WSA) |
2 | На текущий момент игнорируется DTO WS (полей нет в DTO) |
3 | Поле отсутствует в DTO мультиагента (сервис доставки) |
4 | Поле присутствует в DTO мультиагента (сервис доставки), но не используется в логике |
Формат ответа
{
"responseCommon":{
"taskGuid":"guid",
"taskType":"CreateOrder",
"objectId":number
},
"error":{
"wsError":{
"code":"string",
"desc":"string"
}
}
}
CODE
Параметр | Тип | Описание |
---|---|---|
taskGuid | guid | Уникальный код этой задачи используется при получении задачи через очередь |
taskType | string enum | Тип задачи |
objectId | int | Код ресторана в системе лицензирования |
error | Контейнер ошибок, см Описание ошибок |
Формат асинхронного ответа
// Успешный ответ, заказ принят на кассе
{
"taskResponse": {
"order": {
"orderGuid": "guid",
"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"
}
}
}
CODE
Описание параметров
Параметр | Тип параметра | Обязательный | Описание |
---|---|---|---|
orderGuid | guid | - | Полученный из r_keeper Guid созданного заказа |
tableCode | int | - | Код стола |
status | object | - | |
|- value | string | - | Статус заказа. Вернется RestaurantCancelled, если заказ отменен в ресторане |
|- isBillPrinted | bool | да | Флаг, показывающий, распечатан ли пречек заказа |
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": {
"async": {
"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"
}
}
}
CODE