💟
Expirenza
На головнуДо кабінету
  • Про Expirenza
  • Підключення закладу
    • Подати заявку
    • Приєднання до оферти
    • Технiчне підключення
      • r_keeper
        • Останні зміни
      • Poster
      • Syrve
        • Оновлення плагіна
        • Друк QR-коду на пречеку
        • Програма лояльності Expirenza
        • Останні зміни
      • SmartTouch
      • BarBoss
      • SkyService
      • Інші POS-системи
    • Операційна готовність
    • Тестова оплата
    • Підготовка до запуску
  • Налаштування роботи
    • Додавання офіціанта
      • В Poster
      • В Syrve
      • В r_keeper
      • В SmartTouch
      • B BarBoss
      • В SkyService
      • В інші POS-системи
    • Доставка
      • Налаштування Syrve Office / Syrve HQ
      • Налаштування r_keeper
      • Налаштування Poster
    • 🆕Самовивіз
    • Розділення рахунку (Split Bill)
    • Бронювання столика
    • Expirenza Гості (CRM)
    • Замовляй та плати
    • Програма Лояльності
    • Таємні Бокси
  • Підтримка POS-систем
  • API для інших POS-систем
    • Інтеграція нових POS-систем
      • Підготовка до інтеграції
      • Технічна інтеграція
      • Тестування технічної інтеграції
    • Схема роботи з AПІ
    • Авторизація
    • Операції між Expirenza і POS системою
      • Отримання рахунку за номером стола
      • Оплата рахунку і закриття замовлення
      • Отримання списку персоналу
      • Отримання категорій
      • Отримання інформації про столи ресторану
      • Отримання переліку залів у ресторані
      • Отримання налаштувань для відображення QR на ПреЧек
      • Замовлення в меню
      • Розділення рахунку (Split Bill)
      • Отримання стоп-листів
      • Повідомлення у POS-систему
      • Кешування рахунків
      • Результати інших повідомлень від POS системи
    • Підключення за допомогою Postman
    • Поширені питання (FAQ)
  • ПУБЛІЧНЕ АПІ
    • Webhook отримання оновлень по Боксам
  • Корисні посилання
    • Instagram
    • Telegram
    • Youtube
  • Підтримка
    • Telegram
Powered by GitBook
On this page
  1. API для інших POS-систем
  2. Операції між Expirenza і POS системою

Оплата рахунку і закриття замовлення

PreviousОтримання рахунку за номером столаNextОтримання списку персоналу

Last updated 2 months ago

Повідомлення для фіскалізації

payBill
{
    "rID" : "2021-03-13 00:32:04.942046#UP57RxE",
    "operation" : "payBill",
    "billId" : "5B100B39-CE42-4F3D-8770-807A28CA0500",
    "sum" : 129.20,
    "tips" : 19.24,
    "fiscalData":[
      {
         "key":"ЕКВАЙЕР",
         "value":"Universal Bank"
      },
      {
         "key":"ТЕРМІНАЛ",
         "value":"XPZ10101010"
      },
      {
         "key":"КОМІСІЯ",
         "value":"N грн."
      },
      {
         "key":"ВИД ОПЕРАЦІЇ",
         "value":"Оплата"
      },
      {
         "key":"ЕПЗ",
         "value":"123456******12"
      },
      {
         "key":"ПС",
         "value":"МС|VISA"
      },
      {
         "key":"RRN",
         "value":"1234567890"
      },
      {
         "key":"КОД. АВТ",
         "value":"1234"
      },
      {
         "key":"ФОРМА ОПЛАТИ",
         "value":"БЕЗГОТІВКОВА"
      },
      {
         "key":"ЗАСОБ ОПЛАТИ",
         "value":"ПЕРЕКАЗ ЧЕРЕЗ QR-КОД"
      }
   ],
}
❗️ Обов'язкові елементи запиту: rID, operation, billId, sum. 
  fiscalData - Блок інформації щодо транзакції для друку на фіскальному чеку.

Відповідь

Відповідь обробки операції необхідно надіслати в наступному вигляді:

Payload example:/callback/payBill
JSON
{
  "billId": "string"
  "guests": [
    {
      "dishes": [
        {
          "category": "Кухня",
          "categoryId": "18afdzgu53a",
          "checkNumber": "string",
          "count": 1.3,
          "dishId": "string",
          "linkedTo": "string",
          "name": "Шаурма царська",
          "orderNumber": 12365,
          "positionId": "string",
          "sum": 34.56,
          "taxCategory": "налоги",
          "taxCategoryId": "18afdzgu534",
          "type": "modifier"
        }
      ],
      "name": "Гость 1"
    }
  ],
  "orderNumber": 235,
  "rID": "2021-04-01 09:39:06.021078#BpOI0gO",
  "stackTraceMessage": "string",
  "state": "SUCCESS",
  "substate": "string",
  "waiter": "Петро",
  "waiterId": "f14da21a-5be9-4736-9ece-420bd310bc8a"
}

Результатом закриття замовлення у POS-системі можуть бути 2 статуси - FAIL та SUCCESS. Для статусу FAIL існують суб-статуси, які дозволяють правильно комунікувати проблему співробітникам закладу.

Важливим є реалізація усіх підстатусів, тому як Expirenza має знати у якому суб-статусі знаходиться замовлення, а ресторан має знати що саме пішло не так.

Якщо наведені вище сценарії не покривають всіх потреб вашої інтеграції, будь ласка, зверніться до аккаунт-менеджера ресторану з детальним описом потреби вашої інтеграції.

Ми розглянемо можливість додавання додаткового суб-статусу в Expirenza API.

Підстатуси FAIL

WRONG_REQUEST_SUM

Description:

Сума, що прийшла у запиті для оплати, більша або менша від суми замовлення в POS-системі.

Така ситуація може виникнути, якщо замовлення було відредаговано у проміжку між отриманням оплати від гостя та закриттям замовлення у POS-системі.

Обробка substate:

  1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”;.

  2. Система надішле персоналу повідомлення в бот з рекомендацією повернути замовлення у початковий стан (скасувати зміни), щоб розблокувати закриття замовлення, або повернути оплату гостю та попросити оплатити заново.

  3. Система повторюватиме спроби закрити замовлення з певним інтервалом.


CASHIERS_SHIFT_CLOSED

Description:

Неможливо закрити замовлення через те, що в POS-системі закрита касова зміна.

Обробка substate:

  1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.

  2. Система відправить персоналу повідомлення у бот з рекомендацією відкрити касову зміну, щоб розблокувати закриття замовлення у POS-системі.

  3. Система повторюватиме спроби закрити замовлення з певним інтервалом.


PRINTER_ERROR

Description:

Неможливо закрити замовлення через проблему з фіскальним принтером.

Обробка substate:

  1. Система спише оплату з гостя та покаже повідомлення "Оплата успішна".

  2. Система надішле персоналу повідомлення у бот з рекомендацією виправити проблему з фіскальним принтером, щоб розблокувати закриття замовлення у POS-системі.

  3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

CLOSE_ORDER_BLOCKED

Description:

Закриття замовлення заблоковано відкладеною подачею страв.

Наприклад: У замовленні є нероздрукований “бігунок” на кухню або бар.

Обробка substate:

  1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.

  2. Система надішле персоналу повідомлення в бот з рекомендацією видалити бігунки або передати на кухню нероздруковані “бігунки”, щоб розблокувати закриття замовлення у POS-системі.

  3. Система повторюватиме спроби закрити замовлення з певним інтервалом.


BILL_IN_USE

Description:

Замовлення заблоковане іншим модулем POS-системи.

Наприклад:На даний час замовлення відкрито на касовій станції та редагується офіціантом.

Обробка substate:

  1. Система спише оплату з гостя та покаже повідомлення "Оплата успішна".

  2. Система відправить персоналу повідомлення у бот з рекомендацією вийти з режиму редагування замовелння на робочій станції, щоб розблокувати закриття замовлення у POS-системі.

  3. Система повторюватиме спроби закрити замовлення з певним інтервалом.


OTHER_ERROR

Description:

Інші помилки під час закриття замовлення.

Обробка суб-статусу:

  1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.

  2. Система надішле персоналу повідомлення у бот з рекомендацією звернутися до служби підтримки постачальника POS-системи для закриття замовлення.

  3. Система не робитиме повторних спроб закрити таке замовлення, а здійснить виплату ресторану за даними замовелння отриманими перед оплатою.

  • Повідомлення для фіскалізації
  • Відповідь
  • POSTСервіс передачі результату закриття замовлення
  • Підстатуси FAIL
  • WRONG_REQUEST_SUM
  • CASHIERS_SHIFT_CLOSED
  • PRINTER_ERROR
  • CLOSE_ORDER_BLOCKED
  • BILL_IN_USE
  • OTHER_ERROR

Сервіс передачі результату закриття замовлення

post
Header parameters
restoIdstringRequired

Ідентифікатор ресторану

signaturestringRequired

Підпис запиту

Body
billIdstringOptional

Ідентифікатор рахунку у ресторані

orderNumberstringOptional

Номер замовлення

Example: 235
rIDstringOptional

Ідентифікатор запиту в системі Shake To Pay

Example: 2021-04-01 09:39:06.021078#BpOI0gO
stackTraceMessagestringOptional

Деталірування проблеми, що виникла

statestring · enumRequired

Результат виконання оплати

Example: SUCCESSPossible values:
substatestringOptional

substate

waiterstringOptional

Ім'я (ПІБ) офіціанта

Example: Петро
waiterIdstringOptional

Ідентифікатор офіціанта

Example: f14da21a-5be9-4736-9ece-420bd310bc8a
Responses
200
Запит прийнято та оброблено успішно
400
Помилка у запиті
application/json
500
Внутрішня помилка сервісу
application/json
post
POST /callback/payBill HTTP/1.1
Host: api.shaketopay.com.ua
restoId: text
signature: text
Content-Type: application/json
Accept: */*
Content-Length: 545

{
  "billId": "text",
  "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"
    }
  ],
  "orderNumber": 235,
  "rID": "2021-04-01 09:39:06.021078#BpOI0gO",
  "stackTraceMessage": "text",
  "state": "SUCCESS",
  "substate": "text",
  "waiter": "Петро",
  "waiterId": "f14da21a-5be9-4736-9ece-420bd310bc8a"
}

No content