Новий інвойс після правки замовлення не оплачується — де рветься ланцюжок

ocStore 3, шаблон Upstore. Менеджер додає доставку до вже оформленого замовлення, формує новий інвойс — клієнт платить, але кошти не списуються і чека в Checkbox немає.

Шлях оплати і дві точки, де він зазвичай ламається

1
Клієнт оформлює замовлення в кошикуСтворюється order з сумою товарів. Модуль оплати запам'ятовує номер замовлення і суму для першого платежу.
2
Менеджер додає доставку в адмінціЗмінюється order_total, але запис про попередню спробу оплати лишається прив'язаним до старого номера й старої суми.
3
Формується новий інвойсточка AЯкщо інвойс іде в платіжку з тим самим номером замовлення, шлюз бачить повтор уже використаного ідентифікатора і відхиляє платіж, не списуючи кошти.
4
Підпис і сума рахункуточка BЯкщо підпис рахується від старої суми (з кешу чи сесії), а в запиті вже нова — перевірка підпису не проходить.
5
Callback від платіжки → статус → CheckboxЛише після успішного callback замовлення отримує статус «оплачено» і відправляє дані на фіскалізацію. Немає callback — немає чека.

Що перевіряю і що виправляю

Діагностика на копії сайту

  1. Відтворюю сценарій: замовлення → правка суми → новий інвойс → оплата.
  2. Дивлюсь, з яким номером і сумою інвойс реально йде в шлюз.
  3. Читаю лог callback і відповідь платіжки.
  4. Перевіряю, чи оновлюється статус і що йде в Checkbox.

Виправленнярезультат

  1. Новий інвойс отримує унікальний ідентифікатор платежу, прив'язаний до того ж замовлення.
  2. Сума і підпис рахуються від фінального order_total.
  3. Callback оновлює статус саме цього замовлення.
  4. Чек у Checkbox формується на фінальну суму з доставкою.

Схема діагностики під конкретну задачу. Точну точку збою видно після перегляду модуля оплати на вашому сайті. GuardLabs.