Jupiter.JPOS API
Формат заказа ORDER_JSON
{
"uid": "e52e8d81-631e-4615-b35f-c16cf7cc29ca", // Уникальный ID заказа
"num": "4", // Внутренний или порядковый номер заказа
"date": "2019-09-02 15:19:30", // Дата рабочего дня
"open_date": "2019-09-02 15:19:30", // Дата/время открытия заказа
"close_date": "", // Дата/время закрытия заказа (только если заказ закрыт)
"vid": "Обычный заказ", // Вид заказа: "Доставка", "На вынос", "Обычный заказ".
"type": "Заказ", // Тип заказа. "Заказ" или "Возврат"
"name": "5", // Имя заказа. Например номер стола.
"source": "Телефон", // Имя источника заказа
"waiter": "Трофимова В.А.", // Имя официанта
"cashier": "Пикаров Б.К.", // Имя кассира
"sum_rozn": "300", // Розничная сумма заказа. Подитог. Сумма ДО всех скидок\наценок
"sum_fakt": "270", // Фактическая сумма заказа. Итог. Сумма ПОСЛЕ всех скидок\наценок
"sum_skidki": "30", // Сумма всех скидок\наценок
"address": "Дмитров, мкр.Маркова, д.19, кв.1", // Адрес клиента
"coordinates": "37.527624 56.34734", // Координаты дома
"block_change": "0", // Признак "Товарная часть документа, закрыта для изменений". 1 - да, 0 - нет
"guest_count": "2", // Количество гостей в заказе
"status": {
"uid": "13828139[58720265]", // UID статуса в Юпитере. Список статусов см. в Таблице № 1
"name": "Новый" // Название статуса
},
"table_uid": "4:3:0:299512", // Уникальный UID стола внутри Юпитера
"build_number": "1", // Номер сборки (присваивается после отправки заказа в работу)
"client": { // Информация по клиенту
"uid": "4:1:0:10221", // Уникальный UID клиента внутри Юпитера
"id": "8765456", // Код клиента
"name": "Святослав", // Имя клиента
"phone": "89993332211", // Номер телефона клиента
"card": "1234", // Номер карты клиента
"bonus": "100" // Кол-во бонусов на счете клиента
},
"order_line": [
{
"uid": "183", // Уникальный ID строки
"product_uid": "3:77:0:6286", // UID товара
"product_code": "3233", // Код товара
"product_tax": "0", // Ставка НДС (20,10,0)
"product": "ПИЦЦА 4 СЫРА", // Имя товара
"price_rozn": "250", // Розничная цена товара. Цена ДО всех скидок\наценок. Без учета стоимости модификаторов.
"price_fakt": "225", // Фактическая цена товара. Цена ПОСЛЕ всех скидок\наценок. Без учета стоимости модификаторов.
"quantity": "1", // Количество по строке
"sum_rozn": "250", // Розничная сумма по строке. Сумма ДО всех скидок\наценок. Без учета суммы модификаторов.
"sum_fakt": "225", // Фактическая сумма по строке. Сумма ДО всех скидок\наценок. Без учета суммы модификаторов.
"block_change": "1", // Признак "Строка отправлена в производство". 1 - да, 0 - нет
"guest": 1, // Привязка строки к гостю. null если привязки нет
"course": 1, // Курс приготовления. null если курс не задан
"comment": "Без рикотты", // Комментарий к товарной строке
"selected_modifiers": [ // Если у строки есть модификаторы, то в массиве перечислены все строки модификаторов.
{ // Формат строки модификаторов идентичен формату строки заказа.
"uid": "184",
"product_uid": "3:77:0:9999",
"product": "ДОП СЫР",
"price_rozn": "50",
"price_fakt": "45",
"quantity": "1", // Количество по строке модификатора. Указывается без учета кол-ва в базовой строке.
"sum_rozn": "50",
"sum_fakt": "45"
}
]
}
],
"order_discounts": [ // Скидки\наценки по заказу
{
"name": "Скидка 10%", // Наименование скидки\наценки
"sum": "30.00" // Сумма скидки\наценки. Если наценка, то со знаком -
}
],
"order_payment": [ // Оплаты по заказу
{
"id": "1", // Номер оплаты в чеке
"name": "РУБЛИ ЗАЛ", // Имя вида оплаты
"pay_type_uid": "2:1:0:24", // UID вида оплаты
"sum": "270.00", // Сумма оплаты (без сдачи)
"change": "30.00" // Сумма сдачи
}
]
}
Таблица 1. Статусы заказов
| UID | Название |
| 13828139[58720265] | Новый |
| 13828139[58720262] | Оформлен |
| 13828139[58720268] | Пришел на точку |
| 13828139[36831244] | Выполняется |
| 13828139[64487425] | Выполняется частично |
| 13828139[13828099] | Готов к передаче клиенту |
| 13828139[58720259] | Распечатан счет |
| 13828139[36831242] | Назначен курьеру |
| 13828139[36831243] | Передан клиенту |
| 13828139[66912257] | Заказ закрыт |
| 13828139[57344001] | Корректировка |
| 13828139[58720266] | Удален |
Получить информацию по клиенту get_client
Описание
Находит клиента по номеру телефона и возвращает его данные.
При создании нового заказа в JPOS пользователь может указать клиента в заказе. Для этого пользователь вводит номер телефона клиента и нажимает кнопку "Добавить". JPOS передает введенный номер телефона в Юпитер (запрос get_client). Юпитер выполняет поиск клиента по номеру телефона, и если находит, то возвращает в JPOS информацию по клиенту.
При создании нового заказа (запрос add_new_order), если JPOS передаст сlient.uid, Юпитер создаст заказ с указанным клиентам применив все его скидки. При обновлении существующего заказа сlient.uid игнорируется. Изменять клиента в существующем заказе следует отдельным запросом add_client_to_order.
Примеры
Запрос
{
"command": "get_client",
"serverId": "25162093",
"user_id": "4:1:0:14", // ID сотрудника в Юпитере. Получается командой get_user_id.
"phone": "89993332211" // Номер телефона по которому будет выполнятся поиск клиента
}
Ответ успех
{
"status": "ok",
"client": { // Информация по клиенту
"uid": "4:1:0:10221", // Уникальный UID клиента внутри Юпитера
"id": "8765456", // Код клиента
"name": "Святослав", // Имя клиента
"phone": "89993332211", // Номер телефона клиента
"card": "1234", // Номер карты клиента
"bonus": "100" // Кол-во бонусов на счете клиента
}
}
Ответ ошибка
{
"status": "error",
"message": "Клиент не найден"
}
Добавить клиента в заказ add_client_to_order
Описание
Находит клиента по номеру телефона, добавляет клиента в заказ. Применяет к заказу скидки клиента по дисконтной схеме.
Используется когда нужно изменить или указать клиента в ранее созданном заказе.
Примеры
Запрос
{
"command": "add_client_to_order",
"user_id": "4:1:0:14", // ID сотрудника в Юпитере. Получается командой get_user_id.
"serverId": "25162093", // SERVER_ID с которого отправляется запрос.
"phone": "89993332211", // Номер телефона клиента, которого нужно добавить в заказ
"order_uid": "ac09d9d8-c206-4291-bd3f-e59c46f71b42" // UID заказа, в который нужно добавить клиента
}
Ответ успех
{
"status": "ok",
"order": {} // Заказ в формате ORDER_JSON
}
Ответ ошибка
{
"status": "error",
"message": "Клиент не найден"
}
Создать новый заказ add_new_order
Описание
- JPOS отправляет в Юпитер все заказы.
- Юпитер принимает данные, определяет это новый заказ или нет.
- Если заказ не новый, то Юпитер обновляет данные заказа. Добавляет в заказ, те строки, которых у него нет. Проверка какие строки есть выполняется по id строк.
- Если заказ новый, то Юпитер создает его и применяет к нему все возможные автоматические скидки.
- Печатает заказ на кухню.
- 2019-10-17 Добавил загрузку закрытого заказа. Если в запросе add_new_order в поле close_date стоит дата, то заказ считается закрытым и Юпитер выполняет у себя необходимые действия по закрытию заказа. ВАЖНО перед тем как присылать в Юпитер закрытый заказ, JPOS должен хотя бы 1 раз отправить запрос add_new_order пока заказ открыт. Это нужно, чтобы к заказу применились скидки и он распечатался на кухню.
- 2026-04-02 Если JPOS передаст сlient.uid, Юпитер создаст заказ с указанным клиентом применив все его скидки. Получить сlient.uid можно отдельным запросом get_client. При обновлении существующего заказа сlient.uid игнорируется. Изменять клиента в существующем заказе следует отдельным запросом add_client_to_order.
Примеры
Запрос
{
"command": "add_new_order",
"serverId": "25162093", // SERVER_ID с которого отправляется запрос
"user_id": "4:1:0:14", // UID сотрудника
"unit_id": "4:3:0:11", // UID торгового зала
"order": {} //Заказ в формате ORDER_JSON
}
Ответ успех
{
"status": "ok",
"order": {} // Заказ в формате ORDER_JSON
}
Ответ ошибка
{
"status": "error",
"message": "Не найден открытый рабочий день"
}
Получить список заказов get_closed_orders
Описание
- На вход получает массив id всех заказов, которые есть в JPOS.
- Находит серди них те заказы, которые были закрыты в Юпитере и возвращает массив с их id.
- 2019-11-26 Теперь возвращает еще и список всех открытых заказов (open_orders), которые есть в Юпитере, для сотрудника указанного в запросе (user_id)
- 2026-02-03 Возвращает список всех открытых заказов, а не только текущего сотрудника. Какие заказы доступны пользователю JPOS определяет сам (T171928).
- 2026-03-03 Теперь открытые заказы возвращаются формате ORDER_JSON (T174456).
Примеры
Запрос
{
"command": "get_closed_orders",
"serverId": "25162093",
"user_id": "4:1:0:14",
"unit_id": "4:3:0:11", // UID торгового зала
"orders": [ // Список ID заказов, которые есть в JPOS. Они будут проверенные на закрытие и удаление в Юпитере
"ac09d9d8-c206-4291-bd3f-e59c46f71b4c",
"ac09d9d8-c206-AS291-bd3f-e59c46f71b4c"
]
}
{
"status": "ok", // Статус обработки запроса
"closed_orders": [ // Список ID заказов, которые есть в JPOS и были закрыты в Юпитере
"ac09d9d8-c206-4291-bd3f-e59c46f71b4c",
"ac09d9d8-c206-AS291-bd3f-e59c46f71b4c"
],
"open_orders": [ // Список всех открытых заказов в текущем рабочем дне в формате ORDER_JSON
]
}
Получение настроек (меню)
Описание
JPOS получает настройки торговой точки (меню) с облачного сервера. Для этого:
- JPOS периодически обращается к серверу, для проверки необходимости обновить настройки.
- Если сервер сообщает, что есть данные для обновления, то JPOS посылает запрос на получение настроек
- В настройках есть "дата настроек", которую JPOS сохраняет и использует в запросах проверки обновлений
- POST запросы на адрес https://jupiter.report/jpos/index.php
- В меню передается иерархическое дерево раскладок, как в Юпитере. В раскладке может быть два вида кнопок, кнопка с товаром и кнопка для перехода на другую раскладку
Проверка обновления checkUpdate
Запрос
{
"command":"checkUpdate", // Константа
"server_id":"12345678", // server_id JPOS
"date_from_request":"date_from_request", // Дата настроек в JPOS
}
Ответ успех. Есть данные для обновления:
{
"status": "ok", // Признак успешного выполнения запроса
"update": "yes" // Признак, что есть данные для обновления
}
Ответ успех. Обновление не требуется.
{
"status": "ok", // Признак успешного выполнения запроса
"update": "no" // Признак, что обновление не требуется
}
Ответ ошибка
{
"status": "error", // Признак, что при выполнении запроса была ошибка
"message": "SERVER_ID не зарегистрирован" // Описание ошибки
}
Запрос настроек getTT
Запрос
{
"command": "getTT",
"serverId": "25162093"
}
Ответ успех
{
"status": "ok", // Признак успешного выполнения запроса
"settingsDate": "2026-04-20 15:37:28",
"data": { // Параметры торговой точки
"id": 170, // id торговой точки в облаке
"name": "Торговая точка", // Название торговой точки
"print_header": null, // Строка (заголовок) для печати в чеке\счете
"jup_end_date": "2026-04-30", // Дата окончания действия лицензии. Лицензия действует до этой даты включительно
"limit_jpos": 1, // Количество лицензий на JPOS
"places": [ // Список торговых залов торговой точки
{
"uid": "4:3:0:11", // UID торгового зала в Юпитере
"name": "Торговый зал", // Название торгового зала
"menu": { // Меню торгового зала
"menuSections": [ // Список раскладок меню
{
"uid": "5:3:0:856761", // UID раскладки в Юпитере
"name": "Раздел", // Название раскладки
"is_main": true, // Признак, что это главная (начальная) раскладка
"is_modifier": false, // Признак, что это группа модификаторов
"is_header": false, // Признак, что это раскладка в заголовке
"buttons": [ // Список кнопок раскладки
{
"uid": "5:3:0:1207", // UID объекта на кнопке. Либо другой раскладки, либо товара
"name": "Подраздел", // Надпись на кнопке
"is_button": false, // Признак, что это кнопка с товаром. Если false, значит это кнопка с раскладкой
"options": { // Параметры объекта на кпноке
"image": "6-3-0-5101202.jpg" // Имя файла с картинкой
}
},
{
"uid": "3:3:0:139601", // UID объекта на кнопке. Либо другой раскладки, либо товара
"name": "Товар", // Надпись на кнопке
"is_button": true, // Признак, что это кнопка с товаром. Если false, значит это кнопка с раскладкой
"options": { // Параметры объекта на кпноке
"code": "1461", // Код товара
"price": 620, // Цена товара
"tax": "no_tax", // Ставка НДС (10,20,no_tax)
"quantity": 1, // Количество товара
"modifiers": [ // Список групп модификаторов
"5:3:0:11821"
],
"show_modifiers_always": false, // Признак, что нужно всегда предлагать выбор модификаторов
"max_weight_summ": null, // Максимальный общий вес модификаторов
"image": "1461.jpg", // Имя файла с картинкой
"description": null // Описание для меню из карточки ТМЦ
}
}
]
},
{
"uid": "5:3:0:1207",
"name": "Подраздел",
"is_main": false,
"is_modifier": false,
"is_header": false,
"buttons": [
{
"uid": "3:3:0:139222",
"name": "Товар 2",
"is_button": true,
"options": {
"code": "222",
"price": 100,
"tax": "10",
"quantity": 1,
"modifiers": [
"5:3:0:11821"
],
"show_modifiers_always": true,
"max_weight_summ": 1,
"image": "1461.jpg",
"description": "Описание для меню"
}
}
]
}
]
}
}
],
"modifiersSections": [ // Список групп модифиаторов
{
"uid": "5:3:0:11821",
"name": "Группа модификаторов",
"is_modifier": true,
"is_auto_modifier": false, // Признак, что это группа модификаторов для автоматического применения
"weight_min": 1, // Минимальный вес модификаторов для выбора
"weight_max": 5, // Максимальный вес модификаторов для выбора
"buttons": [
{
"uid": "3:3:0:6021",
"name": "Модификатор",
"is_button": true,
"options": {
"code": "М1",
"price": 20,
"tax": "no_tax",
"quantity": 1,
"modifiers": [],
"show_modifiers_always": false,
"max_weight_summ": null,
"image": null,
"description": null,
"weight": 1 // Вес модификатора
}
}
]
}
]
},
"payment": [ // Список видов оплат
{
"uid": "2:3:0:191", // UID вида оплаты в Юпитере
"name": "Карта", // Название вида оплаты
"cash": "no", // Признак наличной оплаты (yes\no)
"fiscal_num": "2", // Номер фискального вида оплаты. 0 - нефискальная оплата
"type": "paymentAutoSumm" // Тип добавления оплаты. paymentAutoSumm - сумма ставится автоматически, paymentInputSumm - ввод полученной суммы, paymentBonus - оплата бонусами
}
],
"tables": [ // Список столов
{
"uid": "4:3:0:303001", // UID стола в Юпитере
"name": "001" // Имя стола
}
]
}
Ответ ошибка
{
"status": "error",
"message": "SERVER_ID не зарегистрирован"
}
Авторизация сотрудника get_user_id
Описание
- JPOS запрашивает у пользователя код авторизации и передает его в Юпитер.
- Юпитер выполняет поиск сотрудника по полученному коду авторизации. Поиск происходит по коду+паролю и дорожке магнитной карты.
- Если сотрудник найден, то Юпитер возвращает его UID
Примеры
Запрос
{
"command": "get_user_id",
"serverId": "5123123",
"password": "11112" // Пароль который вводится пользователем в JPOS
}
Ответ успех
{
"status": "ok",
"user_id": "4:1:0:14"
}
Ответ ошибка
{
"status": "error",
"message": "Пользователя с таким паролем не существует"
}
Блокировка заказа lock_order
Описание
- Перед тем как открыть заказ на редактирование JPOS отправляет в Юпитер запрос lock_order
- Юпитер проверяет можно ли открыть заказ на редактирование и если можно, то устанавливает блокировку на заказ.
Проверяет:
- Что заказ не закрыт
- Что в заказе не закрыта товарная часть (еще не печатали счет)
- Что заказ не редактируется на другом рабочем месте (именно другом!)
Особенности блокировки:
- В качестве рабочего места записывается UID сотрудника (4:1:0:14)
- В расширенном протоколе запись о блокировке помечается, что блокировка от JPOS
- Если в системе нет заказа с переданным id, то вернет успех
Если заказ можно открыть на редактирование, то Юпитер возвращает заказ в формате ORDER_JSON.
Особенности возврата заказа:
- Если в заказ не прописан id заказа JPOS, то возвращает uid заказа из Юпитера
- В поле kod передает внутренний код заказа в Юпитере
- В поле status передает closed если заказ закрыт, во всех других случаях open
- Т.к. формат не предусматривает передачи модификаторов, модификаторы передаются как обычные товарные строки
- В поле summa для оплаты попадает сумма оплаты без сдачи. Чтобы рассчитать сумму полученных денег нужно сложить summa и change
Примеры
Запрос
{
"command":"lock_order",
"user_id":"4:1:0:14",
"order_uid":"ac09d9d8-c206-4291-bd3f-e59c46f71b42"
}
Ответ успех
{
"status" : "ok",
"order" : {Заказ в формате ORDER_JSON}
}
Ответ ошибка
{
"status" : "error",
"message" : "Пользователь с таким id не существует"
}
Печать счета print_bill
Описание
Делает тоже самое что и add_new_order, только еще печатает счет
Запрос и ответы точно такие же как и в add_new_order (только command = print_bill)
Разблокировка заказа unlock_order
Описание
- Перед выходом из заказа, JPOS отправляет в Юпитер запрос unlock_order.
- Если переданный заказ заблокирован указанным сотрудником, то Юпитер снимает блокировку с заказа.
Примеры
Запрос
{
"command":"unlock_order",
"user_id":"4:1:0:14",
"order_uid":"ac09d9d8-c206-4291-bd3f-e59c46f71b42"
}
Ответ успех
{
"status" : "ok"
}
Ответ ошибка
{
"status" : "error",
"message" : "Пользователь с таким id не существует"
}
Изменить имя счета в заказе update_order_name
Описание
Используется когда нужно изменить или указать имя счета в ранее созданном заказе.
Примеры
Запрос
{
"command": "update_order_name",
"user_id": "4:1:0:14", // ID сотрудника в Юпитере. Получается командой get_user_id.
"serverId": "25162093", // SERVER_ID с которого отправляется запрос.
"name": "Веселые ребята в гавайках", // Новое имя счета
"order_uid": "ac09d9d8-c206-4291-bd3f-e59c46f71b42" // UID заказа, в который нужно изменить имя счета
}
Ответ успех
{
"status": "ok",
"order": {} // Заказ в формате ORDER_JSON
}
Ответ ошибка
{
"status": "error",
"message": "Заказ не найден"
}
Система JUPITER www.jupiter.systems (с) 2024г.
Нет комментариев