НазначениеСоздать заказ или забронировать стол в ресторане по objectId
PluggetSystemTypeRKMid
ФОРМАТ ЗАПРОСА

Формат запроса

ЗАПРОС

{
  "taskType": "CreateOrder",
  "params": {
    "sync": {
      "objectId": number,
       "timeout": number,
       "systemName": "string"
     },
    "cashStationId": number,
    "order": {
        "withRkId": "GUID",
        "rkFriendsAnchor": "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",
            "cardCode": "string",
            "promised": bool
          }
        ],
        "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",
 }
CODE


ПараметрТипОбязательныйОписаниеЗначение по умолчанию
sync
-Синхронный вызов метода (либо синхронный, либо асинхронный. Для этого изменить на "async") 
|-timeoutint-Время ожидания ответа от агента в секундах120 секунд
|-objectIdintдаКод ресторана в системе лицензирования
|-systemNamestringнетУказание конкретной подключенной системы для которой выполняется запрос
cashStationIdint-

ID кассовой станции, если не указан, берется из параметров ресторана установленных в админке WS 

При указании кассовой станции с мида, отличного от выбранного в Параметрах создания заказа, указываем этот мид в поле systemName


order
да

withRkId

GUID-Если указан, то заказ создается в r_keeper с заданным значением guid. Только с версии агента 2.5.4.10 и далее. Если поле указано, а версия агента ниже, то заказ будет создан со случайным Guid? указанным r_keeper

rkFriendsAnchor

Guid-
Идентификатор лояльности r_k Friend 

originalOrderIdstring-Внешний номер заказа
sourceOrderIdstring-
Изначальный идентификатор заказа (например идентификатор в системе Yandex). Необязательный. Сохраняется в r_keeper в одноименное расширенное поле 

bookingobject-

Бронирование заказа(стола) на указное время. 

Важно! Если настроено подключение к KDS PRO - требуется донастроить на стороне KDS PRO - выставить Показывать, когда пора готовить


1. Начало тут https://docs.rkeeper.ru/kds/latest/nastrojki-profilya-dejstviya-vozmoyonye-na-etom-kliente-26515663.html#:~:text=По%20наступлению%20времени%20готовки

2. Ещё такой же параметр в Параметрах отображения заказа


|-timedateTime+Время начала брони в формате ГГГГ-ММ-ДДTЧЧ:ММ:СС (2024-06-26T21:00:00)
|-durationobject+Продолжительность брони (например 2 часа 30 минут)
   |-hoursnumber+Продолжительность в часах (например 2)
   |-minutesnumber+Продолжительность в минутах (например 30) 
|-remindTimedateTime-

Время начала готовки блюд пакета (и первой печати сервис-чеков) (в формате ГГГГ-ММ-ДДTЧЧ:ММ:СС '2024-06-26T21:00:00')

Если не задано, то используется текущее время 


expectedStartTimestring-
Плановое время начала приготовления заказа. Не обязательный. Сохраняется в кипере в одноименное расширенное поле 

paymentobject-

|- type

stringдаТип оплаты, cash — оплата наличными, card — оплата картой, online — онлайн оплата. В случае варианта online считаем, что заказ оплачен

|- nettingPayment

boolean-
Если True, то заказ по взаиморасчету от яндекс 

|- deliveryFee

decimal-
Стоимость доставки. Только для мультиагента доставки 

customerobject-Гость
|- namestring-Имя гостя
|- phonestring-Телефон гостя
|- email3string-Email гостя
|- loyaltyobject-
Информация по карте лояльности гостя

   |- clientIdlong-

Идентификатор клиента в системе лояльности 


   |- cardCodestring-

Карта лояльности клиента 


   |- interfaceCodeint+
Код PDS-интерфейса кипера 

expeditionTypestring-Тип доставки. Варианты: delivery, pickup. Можно сохранить значение через тип и категорию заказа
pickupobject-Самовывоз (если expeditionType = pickup)
|- courierobject-информация о курьере
   |- namestring-Имя курьера (если taker = courier)
   |-  phonestring-Телефон курьера (если taker = courier)
|- expectedTimeDateTimeдаК какому времени приготовить заказ
|- takerstringдаКто заберет заказ из ресторана. Варианты: courier, customer. Можно сохранить значение через тип и категорию заказа
deliveryobject-Доставка курьером ресторана (если expeditionType = delivery)
|- addressobject-Адрес
   |- fullAddressstring-полный адрес
   |- subwaystring-Метро
   |- regionstring-Регион
   |- cityobject-

      |- namestring-Город
   |- streetobject-

      |- namestring-Улица
   |- houseNumberstring-Номер дома
   |- flatNumberstring-Номер квартиры
   |- entrance1string-Подъезд
   |- intercom1string-Домофон
   |- floorstring-Этаж
   |- coordinates
-Координаты
      |- latitudestring-Широта
      |- longitudestring-Долгота
|- commentstring-Комментарий к адресу
|- courierobject-
информация о курьере 

   |- namestring-Имя курьера 
   |-  phonestring-Телефон курьера 
changeBackFromdecimal?-
С какой суммы нужна сдача 

productsarray-Состав заказа (может быть не указанным при бронировании стола)
|- idintдаИдентификатор блюда
|- namestring-Название блюда
|- pricemoney-Цена за одно блюдо. Разделителем целой и дробной части суммы должна быть точка.
|- quantitymoneyдаКоличество блюд
|- discountIdsarray-
Массив идентификаторов кассовых скидок для блюд 

   |- idint-Идентификатор скидки
   |- valuedecimal-Значение скидки. Указывается сумма или процент. 0 — полное применение скидки. Можно задавать как положительное, так и отрицательные значения
|- yandexPromosarray-
Список промоакций сервиса Яндекс.Еда для блюда. Обслуживается только мультиагентом доставки  

    |- typestring+Тип промо (GIFT/PERCENTAGE/FIXED/COFINANCE)
    |- discountnumber+Значение промо скидки
    |- partnerDiscountnumber-
поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE 

    |- yandexDiscountnumber-
поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE 

|- commentstring-Комментарий к блюду. Только с версии агента 2.6.7.1
|- ingredientsarray-Ингредиенты или состав комбо-блюда
     |- idintдаИдентификатор ингредиента
     |- namestring-Название модификатора или комбо-компонета
     |- quantitymoney-Количество
     |- pricemoney-Цена
     |- commentstring-
Комментарий к комбо-компоненту 

     |- ingredientsarray-Массив модификаторов для комбо-компонетов. Только с версии агента 2.7.9.1
         |- idintдаИдентификатор модификатора
         |- namestring-Название модификатора
         |- quantitymoney-Количество
         |- pricemoney-Цена
tableCode3int-Код стола (агент v2 только)
extraTableCodes3int[]-Доп. столы для бронирования (агент v2 только)
orderCategoryCode4int-Код категории заказа (агент v2 только). Если не указан, берется из настроек по умолчанию
orderTypeCode4int-Код типа заказа (агент v2 только). Если не указан, берется из настроек по умолчанию
pricearray-

Данные по оплате. Используемое как сумма оплаты при оплате онлайн

  • если указано prePayments, то берется значение из поля prePayments
  • Поле price.total работает только при типе оплаты payment.type = online, тогда оплата валютой по умолчанию суммы price.total
  • иначе оплата не добавляется к заказу (price.total игнорируется при добавлении оплат).

|- totalmoney

-

Значение суммы на оплату онлайн. Разделителем целой и дробной части суммы должна быть точка. 
prePaymentsarray-

(необязательный) массив данных по предоплате

  • если указан, то применяются только эти оплаты (price.total и payment.type игнорируется при добавлении оплат)
  • если не указан, то КАК И РАНЬШЕ:
    • если payment.type = online, то оплата валютой по умолчанию суммы price.total
    • иначе оплата не добавляется к заказу (price.total игнорируется при добавлении оплат).

Только WSA2 ( >= 2.6.7.3 )


|- amount

money-Значение суммы на оплату. Разделителем целой и дробной части суммы должна быть точка. Может быть не указанно при бронировании стола

|- currency

guid+

guid валюты (см. например список валют из PayOrder)


|- cardCode

string-

Карта лояльности, к которой привязана валюта 


|- promised

bool-

false - обещанный платеж, true - предоплата 


guestTypeId3int-Идентификатор типа гостя. Если не указан, берется из настроек Параметры создания заказа на ресторане 
discountIds2,3int[]/ object[]-

Массив идентификаторов кассовых скидок. GetRefData(DISCOUNTS).Ident

Только с версии агента 2.7.3.20 


|- idint
Идентификатор скидки
|- valuedecimal
Значение скидки. Указывается сумма или процент. 0 — полное применение скидки. Можно задавать как положительное, так и отрицательные значения
sourcestring-Расширенное свойство Источник заказа GetRefData(ENUMSTYPESDATAS).EnumValue
platformstring-
Только для заказов из Я.Се. Тип платформы (YA, DC), откуда пришел заказ 

yandexPromosarray-
Список промоакций сервиса Яндекс.Еда для всего заказа. Обслуживается только мультиагентом доставки 

|- typestring+Тип промо (GIFT/PERCENTAGE/FIXED/COFINANCE)
|- discountnumber+Значение промо скидки
|- partnerDiscountnumber-
поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE 

|- yandexDiscountnumber-
поля partnerDiscount и yandexDiscount появляются, если тип скидки COFINANCE 

payMethodstring-
Способ оплаты 

deliveryManagerstring-
Менеджер доставки — менеджер, который является основным менеджером по заказу 

deliveryOperatorstring-
Доставка - оператор — оператор КЦ, который является основным оператором по заказу 

isDeferredstring-
Отложенный заказ — это признак в явном виде того, что заказ является отложенным 

sitestring-
Место расчета 

isCalcInInternetboolean-
Признак расчета в интернете 

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
  }
}
CODE

Успешный ответ, заказ не принят на кассе

Успешный ответ, заказ не принят на кассе

{
  "taskResponse": {
     "order": {
        "status": {
            "value": "string"
        },
        "rejectingReason": {
            "code": "string",
            "message": "string"
        }
      }
  },
  "responseCommon": {
    "taskGuid": "string",
    "taskType": "CreateOrder",
    "objectId": number
  }
}
CODE
ПараметрТип параметраОбязательныйОписание
orderGuidguid+Полученный из r_keeper Guid созданного заказа
tableCodeint+Код стола
statusobject+
  |- valuestring+Статус заказа
  |- isBillPrintedbool-Флаг, показывающий, распечатан ли пречек заказа.
substatestring+Расширенный статус заказа
waiterIdnumber-Код официанта
rejectingReason
-
  |- codestring-Код отмены на кассе .
  | -messagestring-Причина отмены заказа на кассе
errorstring enum-Контейнер ошибок, см Описание ошибок

queuePosition

string?-

Номер очереди, который генерирует RK7. WSA 2.7.7.1, RK7 7.06.05.459. Формируется по правилу: код кассы транслируется латинскую букву + последние цифры номера заказа  

modifierStopList  -


-dishesarray
Массив модификаторов в стоп-листе.
  – idinteger
Идентификатор блюда
  – namestring
Название блюда
  – typestring
Тип товара.  ingredient

Ответ с ошибкой

Ответ с ошибкой

{
  "responseCommon": {
    "taskGuid": "string",
    "taskType": "CreateOrder",
    "objectId": number
  },
  "error": {
    "wsError": {
      "code": "string",
      "desc": "string"
    },
    "agentError": {
      "code": string,
      "desc": "string"
    }
  }
}
CODE
ПараметрТипОписание
taskGuidguidУникальный код этой задачи используется при получении задачи через очередь
taskTypestringТип задачи
objectIdintКод ресторана в системе лицензирования
errorstring enumКонтейнер ошибок, см Описание ошибок


wsError
Ошибка от сервера
agentError
Ошибка от агента



ПРИМЕРЫ СТРУКТУРЫ ЗАПРОСОВ

Примеры структуры вопросов

{
    "taskType": "CreateOrder",
    "params": {
        "sync": {
            "objectId": "199990246",
            "timeout": 120
        },
        "order": {
            "booking":{
                "time": "2026-03-26T21:00:00",
                "duration":{
                    "hours": 2,
                    "minutes": 50
                }
            },
            "tableCode": 247,
            "personsQuantity": 1
        }
    }
}


{
  "taskType": "CreateOrder",
  "params": {
    "sync": {
      "objectId": 199995826,
      "timeout": 120
    },
    "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": "string",
          "name": "string",
          "price": "string",
          "quantity": 0,
          "ingredients": [
            {
              "id": "string",
              "name": "string",
              "quantity": 0,
              "price": "string"
            },
            {
              "id": "string",
              "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": "199990377",
            "timeout": 120
        },
        "order": {
            "originalOrderId": "string",
            "customer": {
                "name": "string",
                "phone": "string"
             },
            "pickup": {
                "courier": {
                    "name": "string",
                    "phone": "string"
                 },
                "expectedTime": "{{currentdate}}T21:00:00+03:00",
                "taker": "customer"
            },
            "payment": {
                "type": "online"
            },
            "expeditionType": "pickup",
            "delivery": {
                "expectedTime": "2022-06-07T21: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"
                     }
                }
            },
            "products": [
                {
                    "id": "string",
                    "name": "string",
                    "price": number,
                    "quantity": "string"
                 }
            ],
            "comment": "Тестовый заказ. Оплата онлайн. Предоплата",
            "price": {
                "total": number
             },
            "personsQuantity": 0,
            "orderCategoryCode": 0,
            "orderTypeCode": 0
        }
    }
}


{
    "taskType": "CreateOrder",
    "params": {
        "sync": {
            "objectId": "199990377",
            "timeout": 120
        },
        "order": {
            "originalOrderId": "string",
            "customer": {
                "name": "string",
                "phone": "string"
            },
            "pickup": {
                "courier": {
                    "name": "string",
                    "phone": "string"
                },
                "expectedTime": "{{currentdate}}T21:00:00+03:00",
                "taker": "customer"
            },
            "payment": {
                "type": "card"
            },
            "expeditionType": "pickup",
            "delivery": {
                "expectedTime": "2022-06-07T21:00:00+03:00",
                "address": {
                    "fullAddress": "string",
                    "subway": "string",
                    "region": "53",
                    "city": {
                        "name": "string"
                    },
                    "street": {
                        "name": "string"
                    },
                    "houseNumber": "string",
                    "flatNumber": "string",
                    "entrance": "string",
                    "intercom": "string",
                    "floor": "string",
                    "coordinates": {
                        "latitude": "string",
                        "longitude": "string"
                    }
                }
            },
            "products": [
                {
                    "id": "string",
                    "name": "string",
                    "price": number,
                    "quantity": 1
                }
            ],
            "comment": "Тестовый заказ. Оплата картой",
            "price": {
                "total": number
            },
            "personsQuantity": 1,
            "orderCategoryCode": 1,
            "orderTypeCode": 4
        }
    }
}