Создание заказа
Last updated
Last updated
Заказ состоит из 1 или нескольких позиций. Каждая позиция - это блюдо(+вариант порции и выбранные добавки) или товар.
Цены в заказе можно указывать свои, следовать ценам, заданным в программе не обязательно. Таким образом на вашем интернет-магазине могут быть отличные цены от тех, что указаны в кассовой программе.
POST
https://api.ytimes.ru/ex/order/save
Создание заказа с выбранными позициями. Данный метод можно вызывать не чаще 60 раз в час. Структура данных заказа (она используется в запросе и она же возвращается в ответ):
//Данные заказа OrderRecord { guid: string, (при заказа оставляем пустым, используется в ответе, чтобы идентифицировать созданный заказ и отслеживать его статус по данному guid) status: string, (при заказе оставляем пустым, в ответе показывает, в каком статусе создался заказ: CREATED или ACCEPTED) shopGuid: string, (идентификатор торговой точки, на которой создаем заказ) type: string, (тип заказа, возможны варианты: TOGO (на вынос), IN (заказ в зале), DELIVERY (заказ на доставку)) client: OrderClient, (контактные данные клиента, могут отсутствовать) itemList: OrderItem[], (позиции заказа, должна быть хотя бы 1 позиция, максимум 40 позиций в одном заказе) comment: string, (комментарий к заказу, например адрес доставки) paidValue: double, (оплаченная сумма, если клиент уже оплатил заказ. Или 0, если оплата в кафе) usedPoints: integer, (сколько бонусов списать с этим заказом. При этом цены за позиции в заказе должны быть без учета списания бонусов) printFiscalCheck: boolean, (требуется или нет автоматически распечатать фискальный чек на кассе кафе при подтверждении заказа) printFiscalCheckEmail: string (если требуется распечатать фискальный чек, то в данном поле можно указать email покупателя для отправки электронного фискального чека) } //Данные клиента. Обязательно указание или телефона или номера существующей карты клиента OrderClient { name: string, (имя клиента, без фамилии) cardNumber: int, (номер существующей карты гостя из CRM, если гостю выдавали скидочную карту) phoneCode: string, (международный код номера телефона страны, только цифры. Для РФ это "7") phone: string, (номер телефона без международного кода, только цифры. Для РФ это 10 цифр, например "9001235533") email: string (электронная почта клиента) } //Данные позиции. Для заказа блюда указать идентификатор блюда и порции menuItemGuid и menuTypeGuid. Для заказа товара указать идентификатор товара: goodsItemGuid. OrderItem { guid: string, (идентификатор позиции. Задать пустое значение, используется в ответе) menuItemGuid: string, (идентификатор блюда) menuTypeGuid: string, (идентификатор порции) supplementList: Map<string, int> (список идентификаторов выбранных добавок и их количество) goodsItemGuid: string, (идентификатор товара) priceWithDiscount: double, (цена 1 позиции с учетом скидки) quantity: int (количество одинаковых позиций, например 2 капучино) }
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
Name | Type | Description |
---|---|---|
account
string
Имя аккаунта
Authorization
string
Ключ авторизации
json body
string
в теле запроса отправляется JSON OrderRecord, пример заполнения заказа из 2-х позиций (блюда с добавками и товара): { "shopGuid" : "773feebe-747d-40b8-8480-cac2bb3f25da", "type" : "DELIVERY", "client" : { "name" : "Федор", "cardNumber" : null, "phoneCode" : "+7", "phone" : "9001112233", "email" : "example@ytimes.ru" }, "itemList" : [ { "menuItemGuid" : "f7595624-e026-4720-9bde-22a3daf51a1b", "menuTypeGuid" : "48022c7e-8aab-4151-a219-7cf7f024820f", "supplementList" : { "58da5f2a-8730-417d-9bfb-546aecf01df4" : 1, "574f342a-83ab-4344-8aee-d2beffde1eb2" : 2 }, " goodsItemGuid" : null, "priceWIthDiscount" : 105.0, "quantity" : 2 }, { "guid" : null, "menuItemGuid" : null, "menuTypeGuid" : null, "supplementList" : null, "goodsItemGuid" : "14e760be-5b16-48b0-936e-ea3d33449bd2", "priceWIthDiscount" : 110.0, "quantity" : 1 } ], "comment" : "Комментарий к заказу", "paidValue" : 320.0, "printFiscalCheck" : true, "printFiscalCheckEmail" : "email@ytimes.ru" }