For the complete documentation index, see llms.txt. This page is also available as Markdown.

Розділення рахунку (Split Bill)

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

Процес розділення рахунку

Для індикації того що конкретний рахунок можна розділити, при передачі /callback/getBill параметр "splitAvailable" має містити значення true. Для коректної роботи сервісу при передачі /callback/getBill також має бути вказаний параметр "positionId": "string"

За замовчуванням для ресторану ця функціональність вимкенна.

Для її активації зверніться до аккаунт-менеджера що веде ресторан.


При розділенні рахунку, Expirenza надсилатиме наступне повідомлення:

splitOrder
{
  
    "operation": "splitOrder",
    "rID": "manual16",
    "billId":"4afc3774-cc50-4e07-ad81-dd65f166244a",
    "controlSum":  1080.6,
    "positions": [
        {"id": "8e2ad560-938b-4972-ba60-8098aac99f8b", "quantity": 1},
        {"id": "c53e1948-7ffe-4dea-8e25-9e6773fa8768", "quantity": 1},
        {"id": "0e857f96-d53b-4649-bae0-0674c6d59496", "quantity": 1}
    ]
}

При створенні нового рахунку необхідно:

  1. Перенести потрібні позиції

  2. Скопіювати знижки (за наявності) в створене замовлення

  3. Скопіювати деталі оригінального замовлення:

    • Номер столу

    • Офіціант

    • Тип замовлення

У відповідь в коллбек ми очікуємо 2 рахунки (orders): 1) "Parent" - нова версія рахунку після відокремлення страв 2) Дочірній об'єкт - те що обрав юзер при розділенні рахунку.

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

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

post
Header parameters
restoIdstringRequired

restoId

Body
errorCodestringOptional

Код помилки, якщо операція не успішна

errorMessagestringOptional

Текст помилки, якщо операція не успішна

rIDstringOptional

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

Example: Look for payload example: /callback/splitOrder
statestring · enumRequired

Стан

Possible values:
substatestringOptional

Підхід. TABLE_NOT_FOUND|ORDER_NOT_FOUND

Pattern: TABLE_NOT_FOUND|ORDER_NOT_FOUND
tableNumberinteger · int32Optional

Номер столу

Responses
200

OK

No content

postcallback/splitOrder
POST callback/splitOrder HTTP/1.1
Host: api.shaketopay.com.ua/
restoId: text
Content-Type: application/json
Accept: */*
Content-Length: 885

{
  "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",
              "linked": true,
              "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",
      "billAmountForTips": 123.35
    }
  ],
  "rID": "Look for payload example: /callback/splitOrder",
  "state": "FAIL",
  "substate": "text",
  "tableNumber": 1
}

No content

Payload example: /callback/splitOrder
F.A.Q

Q. Як відпрацьовується ситуація, коли одну і ту ж позицію забрали різні гості?

A. Хто перший забрав позицію - той і оплачує. Решта гостей отримають помилку.


Q. Чи можна поділити блюдо по 0.5 на гостя? Приклад: Один салат розділити на двох.

A. На цей час це зробити не можливо

Last updated