Сервер QR меню хранит очередь событий за некоторый промежуток времени ( по умолчанию 5 минут ). Старые события автоматически удаляются из очереди.
Сторонний клиент может обратиться к серверу по API и получить список новых событий.
Для того, чтобы получить список событий необходимо отправить GET запрос на /api/v4/events.
Пример запроса:
GET https://ip:port/api/v4/events?hash=hash token: token
hash - это идентификатор события, благодаря которому сервер QR меню понимает, какие события клиент уже получил и какие для него являются новыми. Передается query параметром.
Для того чтобы получить все события в качестве hash передается значение none.
token - это ключ доступа к серверу QR меню. Передается внутри заголовка token.
Пример ответа:
{ "result": true, "data": { "updates": [ { "hash": "0xd8833dd3", "code": "waiter_call", "table": 1000028, "invoice": null, "order": null, "table_repr": { "id": 1000028, "name": "6", "max_guests": 50 } } ] } }
В ключе 'updates' содержится список из событий в хронологическом порядке.
Каждое событие представляет собой:
hash - идентификатор события
code - название события
table - идентификатор стола
invoice - текущий счет (id, id стола, сумма к оплате, информация о добавленных блюдах)
order - полное представление заказа (сумма, информация об официанте, столе, скидках и блюдах)
table_repr - информация о столе(id, имя, максимальное кол-во гостей)
Далее сторонний клиент самостоятельно отправляет оповещения в нужный канал. Например, на электронную почту.
{ "hash": "0xd11f09a7", "code": "save_order", "table": 1000028, "invoice": { "id": 121, "order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "table_id": 1000028, "unpaid_sum": 186.0, "session_id": 121, "status": 0, "error": null, "session": { "items": [ { "id": 1000041, "type": "dish", "count": 1.0, "modifiers": [], "name": "Блюдо с модификатором" }, { "id": 1000062, "type": "dish", "count": 3.0, "modifiers": [], "name": "Блюдо" } ], "payments": null } }, "order": { "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "sum": 186.0, "pricelist_sum": 186.0, "table": { "id": 1000028, "name": "6" }, "waiter": { "id": 9001, "name": "Система" }, "discounts": [], "payments": [], "dishes": [ { "id": 1000041, "type": "dish", "name": "Блюдо с модификатором", "price": 150.0, "count": 1.0, "sum": 150.0, "modifiers": [] }, { "id": 1000062, "type": "dish", "name": "Блюдо", "price": 12.0, "count": 3.0, "sum": 36.0, "modifiers": [] } ] } }
{ "result": true, "data": { "updates": [ { "hash": "0xd8833dd3", "code": "waiter_call", "table": 1000028, "invoice": null, "order": null, "table_repr": { "id": 1000028, "name": "6", "max_guests": 50 } } ] } }
{ "hash": "0xb22ce428", "code": "additional_order", "table": 1000028, "invoice": { "id": 122, "order_guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "table_id": 1000028, "unpaid_sum": 336.0, "session_id": 122, "status": 0, "error": null, "session": { "items": [ { "id": 1000041, "type": "dish", "count": 1.0, "modifiers": [], "name": "Блюдо с модификатором" } ], "payments": null } }, "order": { "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "sum": 336.0, "pricelist_sum": 336.0, "table": { "id": 1000028, "name": "6" }, "waiter": { "id": 9001, "name": "Система" }, "discounts": [], "payments": [], "dishes": [ { "id": 1000041, "type": "dish", "name": "Блюдо с модификатором", "price": 150.0, "count": 1.0, "sum": 150.0, "modifiers": [] }, { "id": 1000062, "type": "dish", "name": "Блюдо", "price": 12.0, "count": 3.0, "sum": 36.0, "modifiers": [] }, { "id": 1000041, "type": "dish", "name": "Блюдо с модификатором", "price": 150.0, "count": 1.0, "sum": 150.0, "modifiers": [] } ] } }
Вся информация о добавленных в заказ блюдах содержится в ключе «invoice» - «session».
{ "hash": "0xa1fb9fc1", "code": "online_payment", "table": 1000028, "invoice": null, "order": { "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "sum": 186.0, "pricelist_sum": 186.0, "table": { "id": 1000028, "name": "6" }, "waiter": { "id": 9001, "name": "Система" }, "discounts": [], "payments": [], "dishes": [ { "id": 1000041, "type": "dish", "name": "Блюдо с модификатором", "price": 150.0, "count": 1.0, "sum": 150.0, "modifiers": [] }, { "id": 1000062, "type": "dish", "name": "Блюдо", "price": 12.0, "count": 3.0, "sum": 36.0, "modifiers": [] } ] }, "table_repr": { "id": 1000028, "name": "6", "max_guests": 50 } }
{ "hash": "0xa1fb9fc1", "code": "bill_request", "table": 1000028, "invoice": null, "order": { "guid": "{F4CE1102-50DC-48F7-A8E0-74DD68A7D8C1}", "sum": 186.0, "pricelist_sum": 186.0, "table": { "id": 1000028, "name": "6" }, "waiter": { "id": 9001, "name": "Система" }, "discounts": [], "payments": [], "dishes": [ { "id": 1000041, "type": "dish", "name": "Блюдо с модификатором", "price": 150.0, "count": 1.0, "sum": 150.0, "modifiers": [] }, { "id": 1000062, "type": "dish", "name": "Блюдо", "price": 12.0, "count": 3.0, "sum": 36.0, "modifiers": [] } ] }, "table_repr": { "id": 1000028, "name": "6", "max_guests": 50 } }
Чтобы узнать свой токен, необходимо зайти на главную страницу QR меню, выбрать раздел «Параметры системы» - «Регистрация на сервере приложений» и скопировать значение из поля «Секретный ключ». Это и есть ваш токен.
Раздел наполняется, информация будет доступна в ближайшее время.