Отримання рахунку за номером стола
Для отримання рахунку, 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Номер столу
Запит прийнято та оброблено успішно
No content
POST /callback/getBill HTTP/1.1
Host: api.shaketopay.com.ua
restoId: text
signature: text
Content-Type: application/json
Accept: */*
Content-Length: 844
{
  "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",
              "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"
    }
  ],
  "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 грн.
{
   "sum":209,
   "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
      }
   ]
}Last updated