Создание заказа
Введение
Перед созданием заказа системе необходимо:
- Убедиться, адрес клиента — в зоне доставке.
- Выбрать нужное заведение, которое доставляет по указанному адресу, если доставкой занимается несколько ресторанов.
Перед запросом на создание заказа, используйте запрос на поиск подходящего ресторана по координатам.
Запрос:
с параметрами:
- lat — ширина, на которой находится адрес клиента
- lon — долгота, на которой находится адрес клиента.
Полученный restaurantId используйте в теле запроса на создание заказа.
Запрос
POST https://delivery.ucs.ru/orders/api/v1/orders
Content-Type: application/json
Пример запроса
При передаче параметра expectedAt обязательно укажите временную зону
Ответ
Status code: 201
Параметр | Описание | Пример | |
---|---|---|---|
orderId | string | номер заказа |
CODE
|
Параметры
В зависимости от способа доставки: delivery (доставка курьером) или pickup (самовывоз) обязательность полей изменяется.
Чтобы система передавала заказы сразу, указывайте в запросе параметр Как можно скорее
и не указывайте в таком случае параметр expectedAt. В этом случае он не обязательный. Заказы Как можно скорее передаются на кассу с минимальной задержкой.
Параметр | Описание | Обязательный для delivery | Обязательный для pickup | Ограничения | |
---|---|---|---|---|---|
comment | string | комментарий к заказу | |||
restaurantId | string | id ресторана (формат GUID) из Delivery | да | да | формат GUID |
persons | int | количество персон | > 0, макс. 2147483647 | ||
dishList | array | состав заказа | да | да | |
-id | string | id блюда(формат GUID) из представления меню Delivery, которое используется для синхронизации с кассой | да, если не заполнен externalId | да, если не заполнен externalId | формат GUID |
-name | string | наименование блюда | - | ||
-price | double разделителем всегда будет точка - "." | цена блюда | 131072 цифр до разделителя целой и дробной части и 16383 цифра после разделителя | ||
-measure | мера | ||||
--value | double | размер порции | |||
--unit | string | единица измерения: кг, литр, шт. Значение не словарное | |||
-quantity | double разделителем всегда будет точка - "." | количество блюд | да | да | |
-ingredients | array | ингредиенты | |||
--id | string | id ингредиента (формат GUID) из представления меню Delivery, которое используется для синхронизации с кассой | формат GUID | ||
--name | string | наименование ингредиента | - | ||
--price | double разделителем всегда будет точка - "." | цена ингредиента | - | ||
--quantity | double разделителем всегда будет точка - "." | количество ингредиента | да | да | > 0 |
--ingredients | array | модификаторы | |||
---id | string | id модификатора (формат GUID) из представления меню Delivery, которое используется для синхронизации с кассой | формат GUID | ||
---name | string | наименование модификатора | - | ||
---price | double разделителем всегда будет точка - "." | цена модификатора | - | ||
---quantity | double разделителем всегда будет точка - "." | количество модификатора | да | да | > 0 |
expeditionType | string | id способа получения заказа:
| да | да | только pickup или delivery |
soonest | boolean | время передачи заказа "Как можно скорее" | только true или false | ||
expectedAt | DateTime | время к которому ожидается заказ | да\ нет, если передан параметр soonest | да | |
paymentTypeId | string | id способа оплаты:
| да | да | только cash, card или online |
paymentStatus | string | Укажите "prepaid" только в том случае, если заказ уже предоплачен онлайн на момент создания заказа, и только если способ оплаты "paymentTypeId": "online" | нет | нет | Только "prepaid" или отсутсвует (null) только в случае "paymentTypeId": "online". При остальных способах оплаты - не указывается. |
changeFrom | double разделителем всегда будет точка - "." | сдача с какой суммы | - | ||
guest | гость | да | да | ||
string | электронная почта гостя | ст. правила email | |||
-phone | string | номер телефона | да | да | телефонный номер |
-firstName | string | имя | - | ||
-lastName | string | фамилия | - | ||
address | адрес доставки | ||||
-postcode | string | почтовый индекс | - | ||
-street | string | улица | нет для адресов без улиц | - | |
-comment | string | комментарий к адресу | - | ||
-lat | double разделителем всегда будет точка - "." | широта | >= -90 и <=90 | ||
-lon | double разделителем всегда будет точка - "." | долгота | >= -180 и <=180 | ||
-cityId | string | id города | - | ||
-cityName | string | наименование города | да | - | |
-floor | int | этаж | макс. 2147483647 | ||
-houseNumber | string | номер дома | да | не более 200 символов | |
-apartmentNumber | string | номер квартиры | не более 20 символов | ||
-intercom | string | домофон | не более 20 символов | ||
-entrance | string | вход | не более 30 символов | ||
-subway | string | метро | не более 100 символов | ||
-fullAddress | string | полный адрес | да | не более 150 символов |
Для наполнения заказа блюдами, у которых в свойстве Добавление в заказ выбран вариант Отдельная строка для каждой порции, блюда должны отправляться по отдельности в составе блюд dishList. Например, не "quantity":"3", а 3 раза по "quantity":"1".
Создание заказа с несуществующим адресом
Курьерам ресторана будет сложно доставить заказ. Также такие заказы не сможет обработать сторонняя служба доставки, например, Яндекс.Доставка.
В быстрорастущих населенных пунктах адреса не успевают попадать в систему баз данных, к которой обращается r_k Delivery. Для таких ситуаций, а также если необходимо разрешить доставку в места без адресов, существует возможность создавать заказы без указания дома и координат.
Запрос:
POST https://delivery.ucs.ru/orders/api/v1/orders
Content-Type: application/json
Пример такого запроса:
Создание заказа с указанием номера стола
При использовании функционала доставки для работы с QR-menu в зале заведения можно указывать номер стола при создании заказа.
За номер стола отвечает необязательный параметр tableCode — код стола из менеджерской r_keeper. Его можно указывать при отправке запроса на создание заказа через r_k Delivery.
Пример