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

Диагностика проблемы с возвратом денег после отмены заказа в WooCommerce

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

Проверка текущей ситуации:

  • Перейдите в WooCommerce > Заказы и выберите отменённый заказ.
  • Проверьте статус возврата платежа — если возврат не проведён, значит автоматизации нет.
  • Убедитесь, что платёжный шлюз поддерживает API возвратов (например, Stripe, PayPal).

Как настроить автоматический возврат средств при отмене заказа в WooCommerce

1. Проверка поддержки возвратов у платёжного шлюза

Для автоматизации возвратов необходимо, чтобы шлюз поддерживал вызовы API для возврата средств. Популярные шлюзы, такие как Stripe и PayPal, предоставляют такую возможность.

2. Использование хука woocommerce_order_status_cancelled для запуска возврата

Добавим код, который будет автоматически создавать возврат через API платёжного шлюза при смене статуса заказа на «Отменён».

Пример для Stripe (с использованием официального PHP SDK):

add_action('woocommerce_order_status_cancelled', 'auto_refund_on_cancelled_order', 10, 1);
function auto_refund_on_cancelled_order($order_id) {
    $order = wc_get_order($order_id);
    if (!$order) return;

    // Получаем ID транзакции платежа
    $transaction_id = $order->get_transaction_id();
    if (!$transaction_id) return;

    // Подключаем Stripe SDK
    require_once 'path/to/stripe-php/init.php';
    
    \Stripe\Stripe::setApiKey('your_stripe_secret_key');

    try {
        $refund = \Stripe\Refund::create([
            'charge' => $transaction_id,
        ]);

        // Добавляем заметку с информацией
        $order->add_order_note('Автоматический возврат средств выполнен. ID возврата: ' . $refund->id);

    } catch (Exception $e) {
        $order->add_order_note('Ошибка автоматического возврата: ' . $e->getMessage());
    }
}

Для PayPal или других шлюзов код будет иным, но идея схожа: использовать API для создания возврата при смене статуса.

3. Обработка ошибок и ведение логов

В коде выше при ошибке создаётся заметка в заказе. Это поможет выявить проблемы с API или некорректными данными.

Проверка результата после внедрения автоматического возврата

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

Частые ошибки при автоматизации возврата и их исправление

  • Отсутствие ID транзакции платежа в заказе
    Решение: убедитесь, что платёжный шлюз сохраняет ID транзакции. Если нет – настройте сохранение через хуки woocommerce_payment_complete.
  • Некорректный ключ API или неправильная инициализация SDK
    Проверьте правильность ключей и пути подключения SDK.
  • Платёжный шлюз не поддерживает автоматические возвраты через API
    В этом случае придется использовать ручные возвраты или искать другой шлюз.
  • Код вызывается при каждом изменении статуса
    Добавьте проверку, чтобы возврат запускался только один раз.

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

  • Храните API-ключи вне публичного доступа, например, в wp-config.php через define-константы.
  • Ограничьте вызов возвратов: проверяйте, что возврат по этому заказу ещё не выполнялся.
  • Для больших магазинов используйте очередь задач (WP-Cron или внешние очереди), чтобы не блокировать основной поток.
  • Регулярно проверяйте логи возвратов и ошибки, чтобы избегать накопления проблем.

Сравнение способов автоматизации возврата средств

МетодПлюсыМинусыКому подходит
Ручной возврат в админке WooCommerce Простота, нет кода Трудозатратно, ошибки человека Малые магазины
Код с вызовом API платёжного шлюза (пример Stripe) Автоматизация, экономия времени Нужны знания API, поддержка API Средние и крупные магазины
Плагины для автоматического возврата Упрощённая настройка Может быть платным, ограниченная настройка Все, кто хочет готовое решение
WooCommerce: автоматическое удаление отменённых и неактивных заказов
09.07.2026
Как добавить автоматическое удаление отсутствующих вложений в Telegram каналах WordPress
22.01.2026
WooCommerce: как автоматически удалять заказы со статусом «Отменено»
19.05.2026
Как удалить неиспользуемые термины таксономий в WordPress
17.04.2026
Как отключить автообновление плагинов WordPress: практическое руководство
13.04.2026