Режим «Оплата по столу» (Pay by Table)
Гость оплачивает свой заказ из зала ресторана онлайн. Заказ уже создан в iiko — клиент ищет его по номеру стола и оплачивает картой или наличными.
Как это работает
Активация
Включается модулем PayByTable (секция Tables).
| Настройка | Назначение | По умолчанию |
|---|---|---|
pay_by_table_enable | Включить оплату по столу | no |
table_online_gateway | Онлайн-шлюз оплаты | — |
table_cache_gateway | Шлюз для наличных | — |
table_discount_gateway | Шлюз для групповой скидки | — |
table_correct_discount | Коррекция скидки (−1 рубль) | no |
table_enable_spend_bonuses_blocking | Блокировка бонусов после оплаты (1 час) | no |
Настройки режима pay_by_table
| Настройка | Назначение | По умолчанию |
|---|---|---|
iiko_enable_pay_by_table | Включить режим | yes |
iiko_enable_table_orders | Заказы по столу | yes |
iiko_enable_table_payment | Оплата по столу | yes |
iiko_enable_table_management | Управление столами | yes |
iiko_pay_by_table_require_phone | Требовать телефон | yes |
iiko_pay_by_table_auto_confirm | Автоподтверждение платежа | no |
Виртуальная страница /pay
Pay by Table создаёт виртуальную страницу /pay (перехват parse_request). На ней:
- Гость вводит/выбирает номер стола.
- Сайт запрашивает заказы из iiko по столу.
- Гость видит свой заказ, сумму, выбирает скидку и способ оплаты.
- После оплаты — экран успеха/ожидания/ошибки.

Скидки
Pay by Table поддерживает алгоритм выбора предпочтительной скидки:
bonuses— бонусные скидки.bonuses_fixed— фиксированная бонусная скидка.category— групповая скидка по категории.
Расчёт: PayByTableDiscountMath::applyDiscount() (percent или fixed). Возможна коррекция скидки (−1 рубль) через table_correct_discount.
Бонусы
- Бонусы учитываются через интеграцию с модулем
Bonuses/BonusesFront. - При
table_enable_spend_bonuses_blocking = yesсписание бонусов блокируется на 1 час после первой оплаты (через user metablocking_bonuses_payment, TTL 1 час).
Что видит администратор
- В списке заказов WC — колонки
table(стол),order_num(номер заказа),discounts(скидки). - В карточке заказа — 5 кастомных действий:
try_table_payment— попытать платёж.try_table_customer— отправить гостя.refresh_order_info— обновить из iiko.force_send_payment— принудительно отправить платёж.clear_this_from_queue— убрать из очереди.
Отправка платежа в iiko
Платеж и гость отправляются в iiko через фоновую очередь (BackgroundSendPayment, очередь payments_queue, cron WP_Cron_Runner('pay_by_table')).
Это значит:
- Экран успеха показывается сразу после оплаты банком.
- Отправка в iiko идёт асинхронно (надёжно, без таймаутов для гостя).
- При сбое — ретраи.
SMS-авторизация гостя
Pay by Table интегрируется с SMS-авторизацией — гость идентифицируется по телефону (для бонусов).