WooCommerce: установка и настройка подтверждения заказа с помощью Webhook

Что такое Webhook в WooCommerce и зачем он нужен

Webhook — это механизм, позволяющий WooCommerce автоматически отправлять уведомления о событиях (например, о новом заказе) на внешний URL. Это удобно для интеграции с CRM, ERP, системами учета и другими сервисами, где требуется оперативно получить информацию о заказах.

Встроенная поддержка Webhook в WooCommerce позволяет настроить передачу данных без дополнительного кода, но для тонкой настройки и обработки данных иногда требуется добавить пользовательские фильтры и обработчики.

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

Если Webhook не срабатывает или данные приходят некорректно, проверьте следующее:

  • Правильно ли указан URL получателя Webhook в настройках WooCommerce.
  • Доступен ли внешний сервер и корректно ли обрабатывает POST-запросы.
  • Нет ли ошибок в логах WooCommerce (включить "Логирование Webhook" в разделе WooCommerce > Настройки > Расширенные > Webhook).
  • Не блокирует ли Webhook ваш сервер безопасности (firewall, mod_security).
  • Верно ли настроены права и формат отправляемых данных (JSON по умолчанию).

Пошаговое решение: как создать и настроить Webhook для подтверждения заказа

1. Создание Webhook в админке WooCommerce

Перейдите в WooCommerce > Настройки > Расширенные > Webhook и нажмите "Добавить Webhook".

Заполните поля:

  • Имя: Подтверждение заказа
  • Статус: Активен
  • Событие: order.created (создание заказа) или order.updated (обновление заказа)
  • Адрес доставки: URL вашего сервера, который будет принимать POST-запрос
  • Формат: JSON

2. Обработка Webhook на стороне сервера

Пример простого PHP-скрипта, который принимает Webhook и записывает данные в файл для проверки:

<?php
// webhook-handler.php
$input = file_get_contents('php://input');
$data = json_decode($input, true);

// Логируем данные для отладки
file_put_contents('webhook.log', date('Y-m-d H:i:s') . "\n" . print_r($data, true), FILE_APPEND);

// Отвечаем WooCommerce
header('HTTP/1.1 200 OK');
echo json_encode(['success' => true]);
?>

3. Добавление дополнительной проверки подписи (рекомендуется)

WooCommerce позволяет настроить секретный ключ, который можно использовать для проверки подлинности Webhook. Чтобы проверить подпись, используйте заголовок X-WC-Webhook-Signature.

<?php
$secret = 'ваш_секретный_ключ';
$signature = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'] ?? '';
$computed_signature = base64_encode(hash_hmac('sha256', $input, $secret, true));

if (!hash_equals($computed_signature, $signature)) {
    header('HTTP/1.1 403 Forbidden');
    exit('Invalid signature');
}
// Дальше обработка данных...
?>

Как проверить, что Webhook работает корректно

  • Создайте тестовый заказ в WooCommerce.
  • Проверьте, что ваш сервер получил POST-запрос и в логах появились данные.
  • Убедитесь, что WooCommerce не показывает ошибок в разделе Webhook (логи).
  • Проверьте HTTP-статус ответа сервера — должен быть 200.

Частые ошибки при настройке Webhook и их решение

  • Ошибка 404 или 500 на стороне приемника: проверьте URL и работоспособность сервера, убедитесь, что скрипт доступен.
  • Webhook не срабатывает: убедитесь, что Webhook активен, событие выбрано правильно, и URL записан без ошибок.
  • Данные не соответствуют ожиданиям: проверьте формат payload и используйте json_decode с проверкой ошибок.
  • Webhook блокируется firewall: настройте исключения в безопасности сервера.

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

  • Используйте проверку подписи Webhook для защиты от подделки запросов.
  • Обрабатывайте Webhook асинхронно, чтобы не задерживать ответ WooCommerce.
  • Регистрируйте логи только в режиме отладки, чтобы не засорять диск.
  • Ограничьте доступ к URL Webhook по IP серверам WooCommerce (согласно документации).

Сравнение способов интеграции WooCommerce с внешними системами

МетодПлюсыМинусы
WebhookМгновенная реакция, простота настройки, стандартизованный JSONТребует надежного приемника, возможны проблемы с безопасностью без проверки подписи
REST API WooCommerceПолный контроль, возможность запрашивать любые данныеТребует периодического опроса (polling), нагрузка на сервер
Плагины интеграцииГотовые решения, часто с поддержкой популярных CRMМогут быть тяжелыми, зависимыми от обновлений
WooCommerce: решение проблемы, когда не отображаются способы оплаты при оформлении заказа
07.05.2026
WooCommerce не отображает способы оплаты при оформлении заказа: пошаговое решение
04.05.2026
Как создать настройку для автоматического удаления старых медиафайлов в WordPress
02.04.2026
Как использовать хуки WordPress для расширения функционала сайта
22.12.2025
WooCommerce: как автоматически отключать неиспользуемые способы оплаты
23.05.2026

Ресурс в разработке, скоро здесь будет сайт по вордпресс