WooCommerce: как отключить автоматические попытки платежей при неудачном заказе

Что такое автоматические попытки платежей в WooCommerce и почему их отключают

WooCommerce по умолчанию может повторять попытки списания средств с клиента, если изначальный платеж не прошёл, особенно при использовании платежных шлюзов, поддерживающих подписки и отложенные платежи. Это может приводить к нежелательным автоматическим списаниям, путанице с заказами и жалобам клиентов.

В некоторых случаях требуется полностью отключить эти повторные попытки для определённых типов заказов или платежных шлюзов.

Диагностика проблемы с автоматическими попытками платежей

Чтобы понять, активны ли у вас автоматические повторные попытки платежей, нужно:

  • Проверить настройки платежного шлюза в WooCommerce (например, Stripe, PayPal, Mollie).
  • Посмотреть логи WooCommerce или платежного шлюза для повторных запросов на списание.
  • Убедиться, что используемые плагины подписок или отложенных платежей не запускают повторные попытки.

Пример команды для вывода последних записей лога WooCommerce через WP CLI:

wp wc --user=admin log list --limit=10

Как отключить автоматические повторные попытки платежей в WooCommerce

1. Отключение через настройки платежного шлюза

Первое, что нужно сделать — проверить панель настроек вашего платежного шлюза. Например, у Stripe есть опция управления повторными попытками списания.

2. Отключение через хук фильтра

Если в настройках нет нужных опций или вы хотите программно контролировать поведение, можно использовать хуки WooCommerce. Для отключения повторных попыток платежей для всех заказов добавьте следующий код в functions.php вашей темы или в отдельный плагин:

add_filter('woocommerce_payment_retry_enabled', '__return_false');

Этот фильтр отключает логику повторных попыток в WooCommerce для платежей.

3. Отключение для конкретных платежных шлюзов

Иногда нужно отключить автоматические попытки только для определённого метода оплаты. Для этого используйте условие:

add_filter('woocommerce_payment_retry_enabled', 'disable_retry_for_specific_gateway', 10, 2); function disable_retry_for_specific_gateway($retry_enabled, $order) {  $gateway_id = $order->get_payment_method();  if ($gateway_id === 'stripe') {    return false;  }  return $retry_enabled;}

Проверка результата после отключения повторных попыток

  • Сделайте тестовый заказ с ошибочным платежом, используя тестовые карты платежного шлюза.
  • Проверьте, что WooCommerce не делает повторных запросов списания.
  • Проверьте логи WooCommerce и платежного шлюза — повторных попыток быть не должно.
  • Убедитесь, что заказ остаётся в статусе «ожидает оплаты» или «неудачный», без повторных изменений.

Частые ошибки при попытке отключить повторные платежи

  • Настройки шлюза игнорируются: Некоторые плагины платежей имеют собственные механизмы повторных попыток, не связанные с WooCommerce. Их нужно отключать отдельно в настройках плагина.
  • Кэширование мешает применению фильтров: Если на сайте активировано кэширование (например, объектный кеш), изменения функций могут не применяться сразу. Очистите кэш.
  • Код добавлен в неподходящее место: Хуки должны быть добавлены в functions.php или в плагин, который загружается всегда. В админке тема может работать иначе.

Практические советы по безопасности и производительности

  • Безопасность: Не храните тестовые карты или данные платежей в коде или логах.
  • Производительность: Используйте минимальные изменения, чтобы не влиять на другие процессы оплаты.
  • Логирование: Временно включите подробное логирование платежей для отладки, потом отключите.

Сравнение способов отключения повторных попыток платежей

МетодСпособ реализацииПлюсыМинусы
Настройки шлюзаАдминка WooCommerce » ПлатежиПростота, не требует кодаНе всегда есть опция
Фильтр woocommerce_payment_retry_enabledPHP-код в functions.phpГибкость, можно отключать для конкретных шлюзовТребует навыков разработки
Отключение в плагинах подписокНастройки или код плагина подписокКонтроль подписокЗависит от плагина
Как использовать фильтры и хуки WooCommerce для изменения цены товара в корзине
03.05.2026
Автоматическое удаление невыкупленных товаров из корзины WooCommerce после оплаты
26.05.2026
WooCommerce: как исключить товары по атрибуту из поиска и фильтров
19.06.2026
Использование хука woocommerce_before_cart_table для вставки кода в корзину WooCommerce
22.06.2026
Исключение товаров по атрибуту из корзины WooCommerce: практическое решение
01.06.2026