Для отримання рахунку, Expirenza надсилатиме наступне повідомлення:
getBill
❗️ Обов'язкові елементи запиту: rID,operation та tableNumber або billId.
❗️ Наразі інтеграція підтримує передачу параметру guests.dishes.dishId,
у якому dishId порожній.
❗️ Ми суворо рекомендуємо передавати dishId і не залишати його порожнім,так як
варіант с порожнім dishId невдовзі стане застарілим, і якщо ви його
не передавали у вас можуть виникнути проблеми з інтеграцією, та не буде
працювати оцінка блюд.
Переконайтесь, що ваша інтеграція підтримує всі можливі комбінації цих параметрів:
Сценарії :
Тільки з billId:
Сценарій з billId позначає що оплата буде здійснена по QR з пречеку.
positionId - id позиції в чеку. Позиція = строчка в чеку.
linkedTo - id Батьківської позиції в чеку.
*Якщо страва сама по собі є батьківською треба передавати linkedTo: null
Наприклад, клієнт замовив:
Біг Мак Меню
Що складається з:
Біг мак
Діпи:
- Сирний соус
Апельсиновий Сік
В POS системі Біг Мак Меню - це комбо страва.
Яка має 3 можливих складових:
Бургер - Біг Бак
Картопля на вибір Діпи/Картопля фрі (+ соус як модифікатор до картоплі).
❗❗ Для стану FAIL наявність суб-статусу є обов'язковим, суб-статус також не має бути = null.
Це потрібно для правильної комунікації із клієнтами ресторану.
Приклад: Замовлення не було знайдено, але не передано суб-статус - ORDER_NOT_FOUND.
Клієнт бачить на боці Expirenza невідому помилку, замість помилки "Рахунок на столику не знайдено".
state
substate
Description
SUCCESS
-
Рахунок знайдено
FAIL
TABLE_NOT_FOUND
Стіл переданий у пошук не існує в ресторані
FAIL
ORDER_NOT_FOUND
Рахунок на столику не знайдено
Застосування знижки
Застосувати знижку для замовлення можна використовуючи об'єкт discounts що знаходиться в структурі getBill.
"discounts":{"list":[{"id": "","name":"","sum":0}}
Знижки через discounts працюють тільки на відображення у чеку, це означає що знижку інтеграція має вираховувати самостійно на своєму боці та передавати у поля sum та totalSum суми страв вже з урахуванням знижки.
❗Сума кожної страви має враховувати знижки застосовані до чеку.
❗Сума знижки не має бути у від'ємних значеннях ( Приклад як не треба: sum:"-350")
Приклад використання знижки
До страви яка коштує 249 грн застосовується скидка 40 грн.
Страва:
{
"sum":249,
"name":"Індичка у вершковому соусі з грибами, томатами кімчі",
"count":1.0,
"guest":"guest",
"category":"Кухня",
"category_id":"b4e30148-b13e-11ea-80e8-d8d9ff6efa94",
"order_number":"000080526"
}
Знижка 40 грн:
"discounts":{
"list":[
{
"id":"id",
"name":"Індичка у вершковому соусі з грибами, томатами кімчі",
"sum":40
}
]
}
При застосуванні знижки до страви(страв), потрібно змінювати sum цієї страви(страв) і вираховувати totalSum відповідно до застосованих знижок.
Тобто сума після застосування знижки має виглядати так:
}
"name":"Індичка у вершковому соусі з грибами, томатами кімчі",
"count":1.0,
"guest":"guest",
"category":"Кухня",
"category_id":"b4e30148-b13e-11ea-80e8-d8d9ff6efa94",
"order_number":"000080526"
}
Приклад: НЕ правильна помилка, коли при status - Fail не був переданий substate.
Приклад: Правильна помилка, коли при status - Fail був переданий substate.
Сервіс передачі інформації про знайдений рахунок
post
/callback/getBill
Header parameters
restoIdstringrequired
Ідентифікатор ресторану
signaturestringrequired
Підпис запиту
Body
errorCodestring
Код помилки, якщо операція не успішна
errorMessagestring
Текст помилки, якщо операція не успішна
ordersIikoOrderResponse[]
Список замовлень
rIDstring
Ідентифікатор запиту в системі Shake To Pay
Example: Look for payload example: /callback/getBill