Пропустить контент
Купить

Детали оплаты по столу

Подробности режима Pay by Table. Здесь — детали алгоритмов и админ-функций.

Алгоритм выбора скидки

При выборе скидки для заказа Pay by Table:

АлгоритмЧто значит
bonusesБонусные скидки (из баланса клиента).
bonuses_fixedФиксированная бонусная скидка.
categoryГрупповая скидка по категории товара.

Расчёт выполняется PayByTableDiscountMath::applyDiscount() — percent или fixed.

Коррекция скидки

Настройка table_correct_discount:

  • При yes сумма скидки уменьшается на 1 рубль.
  • Защита от округления iiko (чтобы заказ «прошёл»).

Блокировка бонусов

table_enable_spend_bonuses_blocking:

  • После первой оплаты списание бонусов блокируется на 1 час.
  • Хранится в user meta blocking_bonuses_payment (TTL 1 час).
  • Предотвращает повторное списание при повторной оплате/частичной оплате.

Действия заказа (admin)

В карточке заказа WC (pay-by-table) — 5 кастомных действий:

ДействиеНазначение
try_table_paymentПопытать платёж (повторить).
try_table_customerОтправить данные гостя в iiko.
refresh_order_infoОбновить информацию заказа из iiko.
force_send_paymentПринудительно отправить платёж в iiko.
clear_this_from_queueУбрать заказ из очереди платежей.

Колонки заказа (admin)

В списке заказов WC добавляются колонки:

  • table — номер стола.
  • order_num — номер заказа в iiko.
  • discounts — применённые скидки.

Фоновая отправка платежа

Платёж и гость отправляются в iiko асинхронно:

  • Очередь payments_queue.
  • BackgroundSendPayment (background process).
  • Cron WP_Cron_Runner('pay_by_table') (интервал iiko_pay_by_table_time).

Почему асинхронно

Экран успеха показывается гостю сразу после оплаты банком. Отправка в iiko идёт в фоне с ретраями — надёжно и быстро.

iiko API (для Pay by Table)

МетодНазначение
init_by_tableИнициализация по столу.
get_orders_by_tableПолучение заказов по столу.
add_payments_to_order_tableДобавление платежей.
add_customer_to_orderДобавление гостя.
get_status_commandСтатус.
get_deliveries_historyИстория доставок.

Meta заказа (Pay by Table)

MetaНазначение
tableUUID стола.
order_numНомер заказа iiko.
order_sumСумма.
discount, user_discountСкидки.
correlationId, correlationStatusКорреляция платежа.
CustomerCorrelationId, CustomerCorrelationStatusКорреляция гостя.
tryCounterСчётчик попыток.
posIdID POS-терминала.

Return URL

Фильтр woocommerce_get_return_url подменяет return URL после оплаты — гость возвращается на правильную страницу успеха Pay by Table.

См. также

WOO2IIKO © 2019 - 2026 Алексей Тихомиров.