Pending payment и On hold в WooCommerce: почему нельзя одинаково обрабатывать неоплаченные заказы
Как различать ожидание платежа и подтверждения в WooCommerce, проверять остаток и не отменять вручную заказ с фактически полученной оплатой.
Содержание статьи
Pending payment и On hold в WooCommerce обозначают разные состояния платёжного процесса. В первом случае заказ ожидает оплату, во втором — подтверждение, причём остаток может уже быть уменьшен. Обрабатывать обе очереди одним правилом отмены опасно: платёжный провайдер и магазин могут обновляться не одновременно.
Проверьте платёж до изменения статуса
Откройте заказ, заметки и сведения провайдера. Сравните номер операции, сумму и время. Если деньги подтверждены вне магазина, сначала разберите, почему статус не изменился. Повторная просьба оплатить или автоматическая отмена могут создать новую проблему, не устранив исходную потерю подтверждения.
Не определяйте факт оплаты по наличию письма. В WooCommerce уведомление связано с событиями заказа, а его отсутствие может иметь собственную причину. Для этого существует отдельная проверка транзакционного журнала. Платёж и доставка уведомления должны иметь независимые подтверждения.
Учитывайте поведение остатка
Официальное описание статусов указывает: On hold ожидает подтверждения оплаты, но запас уже уменьшен; Processing означает получение оплаты и ожидание исполнения. При включённом Hold Stock подходящие Pending payment-заказы могут отменяться после заданного времени с освобождением резерва. Это не универсальный таймер для всех статусов.
Для отмены или неуспешного платежа проверяйте фактическое восстановление остатка с учётом версии и используемого шлюза. Документация текущей версии описывает возврат ранее уменьшенного запаса при Failed. Не переносите это поведение на старую или изменённую интеграцию без контрольной проверки.
Организуйте разные очереди разбора
Для Pending payment уточняйте, завершал ли покупатель платёжный шаг и не истёк ли установленный срок. Для On hold проверяйте подтверждение выбранного метода и ожидаемую задержку. Назначьте ответственного за исключения, чтобы заказ не переходил между менеджером и бухгалтерией без решения.
Сопоставьте складской результат с правилами backorders. Разрешение купить отсутствующий товар не объясняет случайно удержанный запас. Если магазин продаёт последнюю единицу сразу в нескольких каналах, сохраните отдельный контроль физического наличия: статус одного заказа не решает всю задачу общего учёта.
Проверьте завершённый маршрут на примерах
Используйте допустимые тестовые сценарии успешной оплаты, отказа и задержанного подтверждения. Для каждого запишите ожидаемый статус, изменение остатка и уведомление. Не тестируйте исправление массовой сменой состояний реальных заказов: это может запустить письма и другие действия, которые команда не планировала.
После изменения настроек проверьте новый заказ и один исторический проблемный случай отдельно. Если деньги нужно вернуть, используйте процесс возврата, а не только изменение статуса. Приёмка завершена, когда состояние платежа, доступный остаток и действие менеджера согласованы, а спорные случаи имеют понятную очередь. Главное — не заменить проверку денег удобным, но недостоверным цветом строки в кабинете.
Для задержанного подтверждения отдельно запишите допустимое время ожидания по используемому способу оплаты и порядок передачи случая ответственному сотруднику.
Материал отражает сведения на указанную дату. Правила и условия работы площадок могут измениться. Редакционные принципы