Отримання рахунку за номером стола
Для отримання рахунку, Expirenza надсилатиме наступне повідомлення:
Ідентифікатор ресторану
Підпис запиту
Код помилки, якщо операція не успішна
Текст помилки, якщо операція не успішна
Ідентифікатор запиту в системі Shake To Pay
Look for payload example: /callback/getBill
Стан. Enum: FAIL | SUCCESS
Підхід.Enum: TABLE_NOT_FOUND | ORDER_NOT_FOUND
TABLE_NOT_FOUND|ORDER_NOT_FOUND
Номер столу
POST /callback/getBill HTTP/1.1
Host: api.shaketopay.com.ua
restoId: text
signature: text
Content-Type: application/json
Accept: */*
Content-Length: 888
{
"errorCode": "text",
"errorMessage": "text",
"orders": [
{
"billId": "7A051331-1C99-4DD2-9543-1585A4E21DCA",
"bonusSum": 60.85,
"created": "yyyy.MM.dd HH:mm:ss",
"discounts": {},
"guests": [
{
"dishes": [
{
"category": "Кухня",
"categoryId": "18afdzgu53a",
"checkNumber": "text",
"count": 1.3,
"dishId": "text",
"linkedTo": "text",
"hidden": "false",
"name": "Шаурма царська",
"orderNumber": 12365,
"positionId": "text",
"sum": 34.56,
"taxCategory": "налоги",
"taxCategoryId": "18afdzgu534",
"type": "modifier"
}
],
"name": "Гость 1"
}
],
"isBanquetOrder": true,
"isDelivery": true,
"orderNumber": 256,
"paymentType": "text",
"pricingTime": "text",
"rawSum": 1,
"rootBillId": "text",
"splitAvailable": true,
"state": "text",
"tableId": "qc7-sdv9",
"totalSum": 123.35,
"waiter": "text",
"waiterId": "text",
"billAmountForTips": 123.35
}
],
"rID": "Look for payload example: /callback/getBill",
"state": "FAIL",
"substate": "text",
"tableNumber": null
}
Запит прийнято та оброблено успішно
No content
Таблиця можливих статусів.
❗❗ Для стану FAIL наявність суб-статусу є обов'язковим, суб-статус також не має бути = null.
Це потрібно для правильної комунікації із клієнтами ресторану.
Приклад: Замовлення не було знайдено, але не передано суб-статус - ORDER_NOT_FOUND. Клієнт бачить на боці Expirenza невідому помилку, замість помилки "Рахунок на столику не знайдено".
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"
}
Last updated