Описание

НазначениеСоздать заказ в ресторане по objectId
Тип запросаАсинхронный/синхронный
Поддерживаемая версия агентаv1, v2
PluggetSystemTypeRKMid

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

{
  "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
-Синхронный вызов метода (либо синхронный, либо асинхронный)
timeoutint-Время ожидания ответа от агента в секундах120 секунд
objectIdintдаКод ресторана в системе лицензирования
systemNamestringнетУказание конкретной подключенной системы для которой выполняется запрос
order
да

withRkId

GUID-

Если указан, то заказ создается в r_keeper с заданным значением guid. Только с версии агента 2.5.4.10+


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

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

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

  1. Начало можно посмотреть в главе Порядки подачи. 
  2.  Ещё такой же параметр в Параметрах отображения заказа.

|-timedateTime+Время начала брони в формате ГГГГ-ММ-ДДTЧЧ:ММ:СС 
|-durationobject+Продолжительность брони 
   |-hoursnumber+Продолжительность в часах 
   |-minutesnumber+Продолжительность в минутах 
expectedStartTimestring-Плановое время начала приготовления заказа. Необязательный. Сохраняется в r_keeper в одноименное расширенное поле
paymentobject-

  |- type

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

  |- nettingPayment

boolean-Если True, то заказ по взаиморасчету от Яндекс
  |- deliveryFeedecimal-Стоимость доставки. Только для мультиагента доставки
customerobject-Гость
  |- namestring-Имя гостя
  |- phonestring-Телефон гостя
  |- email3string-Email гостя
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-Цена
      |- ingredientsarray-Массив модификаторов для комбо-компонентов. Только с версии агента 2.7.9.1
          |- idintдаИдентификатор модификатора
          |- namestring-Название модификатора
          |- quantitymoney-Количество
          |- pricemoney-Цена
tableCode3int-Код стола (только агент v2)
extraTableCodes3int[]-Дополнительные столы для бронирования (только агент v2)
orderCategoryCode4int-Код категории заказа (только агент v2). Если не указан, берется из настроек по умолчанию
orderTypeCode4int-Код типа заказа (только агент v2). Если не указан, берется из настроек по умолчанию
prePaymentsarray-

 Массив данных по предоплате (необязательный). Только с версии агента 2.6.7.3.

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

- amount

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

- currency

guid+

guid валюты


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-Способ оплаты. С версии 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
ПараметрТипОписание
taskGuidguidУникальный код этой задачи используется при получении задачи через очередь
taskTypestring enumТип задачи
objectIdintКод ресторана в системе лицензирования
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

Описание параметров

Параметр

Тип параметра

Обязательный

Описание

orderGuidguid-Полученный из r_keeper Guid созданного заказа
tableCodeint-Код стола
statusobject-
  |- valuestring-Статус заказа. Вернется RestaurantCancelled, если заказ отменен в ресторане
  |- isBillPrintedboolдаФлаг, показывающий, распечатан ли пречек заказа
rejectingReason
-
  |- codestring-Код отмены на кассе
  | -messagestring-Причина отмены заказа на кассе
errorstring 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