💟
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 системою

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

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

PreviousЗамовлення в менюNextОтримання стоп-листів

Last updated 2 months ago

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

Для індикації того що конкретний рахунок можна розділити, при передачі параметр "splitAvailable" має містити значення true. Для коректної роботи сервісу при передачі також має бути вказаний параметр "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:

Payload example: /callback/splitOrder
{
    "rID": "manual16",
    "state": "SUCCESS",
    "tableNumber": 1,
    "orders": [
        {
            "billId": "4afc3774-cc50-4e07-ad81-dd65f166244a",
            "orderNumber": 460,
            "totalSum": 720.4,
            "rawSum": 721.0,
            "discounts": {
                "list": [
                    {
                        "id": "4c1e2f7c-09b2-479e-90f9-5e4f67d2665d",
                        "name": "Знижка",
                        "sum": 0.6
                    }
                ]
            },
            "waiterId": "4f433631-2e15-4f05-8a70-e63eda55ce41",
            "waiter": "test",
            "guests": [
                {
                    "name": "Гость 1",
                    "dishes": [
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "aaa85a2d-8ea4-434a-a235-666bcc0c2d07",
                            "name": "Гриби",
                            "count": 2.0,
                            "sum": 0.0,
                            "orderNumber": 460,
                            "type": "dish",
                            "dishId": "f791662d-e104-4f24-a16a-643d392b7c51"
                        },
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "9319918b-3582-4de7-b678-4249be2acdcb",
                            "name": "Куриця",
                            "count": 3.0,
                            "sum": 0.0,
                            "orderNumber": 460,
                            "type": "dish",
                            "dishId": "5ea84688-bc1b-4cb1-a107-833f46cbf9cb"
                        },
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "d8bd2fd9-37ec-4017-9ba8-da686daf57cf",
                            "name": "*",
                            "count": 2.0,
                            "sum": 0.0,
                            "orderNumber": 460,
                            "type": "dish",
                            "dishId": "8edb5f44-969b-4a86-9a78-32c5a5dfba8f"
                        },
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "a1954115-dc8d-460a-8de5-e6973fe030d0",
                            "name": "Кукурудза",
                            "count": 2.0,
                            "sum": 19.4,
                            "orderNumber": 460,
                            "type": "dish",
                            "dishId": "cf56075a-c4a9-47a4-a279-2284e26afe0b"
                        },
                        {
                            "categoryId": "04e705cf-0f9f-36cd-0183-a2be58c00093",
                            "category": "Фіскальний",
                            "positionId": "d4d3e228-c093-4fc3-8101-d7f8fa8612be",
                            "name": "Kopke",
                            "count": 2.0,
                            "sum": 701.0,
                            "orderNumber": 460,
                            "type": "dish",
                            "dishId": "50391936-2733-48a1-980c-5b7a3c9635f6"
                        }
                    ]
                }
            ],
            "state": "New",
            "tableId": "aaabfb9b-ba7f-076e-0183-59bcbe5a0068",
            "isBanquetOrder": false,
            "isDelivery": false,
            "created": "2023.10.02 14:10:56",
            "bonusSum": 0.0
        },
        {
            "billId": "a11ecd3a-0fa3-4db1-88d6-975cf83da0fb",
            "orderNumber": 461,
            "totalSum": 360.2,
            "rawSum": 360.5,
            "discounts": {
                "list": [
                    {
                        "id": "4c1e2f7c-09b2-479e-90f9-5e4f67d2665d",
                        "name": "Знижка",
                        "sum": 0.3
                    }
                ]
            },
            "waiterId": "4f433631-2e15-4f05-8a70-e63eda55ce41",
            "waiter": "test",
            "guests": [
                {
                    "name": "Гiсть",
                    "dishes": [
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "8e2ad560-938b-4972-ba60-8098aac99f8b",
                            "name": "*",
                            "count": 1.0,
                            "sum": 0.0,
                            "orderNumber": 461,
                            "type": "dish",
                            "dishId": "8edb5f44-969b-4a86-9a78-32c5a5dfba8f"
                        },
                        {
                            "categoryId": "-1",
                            "category": "Блюдо без категорії",
                            "positionId": "c53e1948-7ffe-4dea-8e25-9e6773fa8768",
                            "name": "Кукурудза",
                            "count": 1.0,
                            "sum": 9.7,
                            "orderNumber": 461,
                            "type": "dish",
                            "dishId": "cf56075a-c4a9-47a4-a279-2284e26afe0b"
                        },
                        {
                            "categoryId": "04e705cf-0f9f-36cd-0183-a2be58c00093",
                            "category": "Фіскальний",
                            "positionId": "0e857f96-d53b-4649-bae0-0674c6d59496",
                            "name": "Kopke",
                            "count": 1.0,
                            "sum": 350.5,
                            "orderNumber": 461,
                            "type": "dish",
                            "dishId": "50391936-2733-48a1-980c-5b7a3c9635f6"
                        }
                    ]
                }
            ],
            "state": "New",
            "tableId": "aaabfb9b-ba7f-076e-0183-59bcbe5a0068",
            "isBanquetOrder": false,
            "isDelivery": false,
            "created": "2023.10.02 14:23:45",
            "bonusSum": 0.0
        }
    ]
}
F.A.Q

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

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


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

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

/callback/getBill
/callback/getBill
  • Процес розділення рахунку
  • POSTСервіс для отримання результатів розділення рахунку

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

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
201
Created
401
Unauthorized
403
Forbidden
404
Not Found
post
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