Как синхронизировать заказы WooCommerce со сторонними складскими системами

Диагностика проблемы: почему нужна синхронизация заказов WooCommerce

В интернет-магазинах на WooCommerce часто возникает задача автоматически передавать данные о заказах в сторонние складские и ERP-системы. Без правильной синхронизации склад не видит новых заказов, что приводит к задержкам в обработке и ошибкам учета.

Основные признаки отсутствия или некорректной синхронизации:

  • Заказы не появляются в складской системе или появляются с задержкой;
  • Некорректные статусы заказов в ERP;
  • Отсутствие информации о товарах или количестве;
  • Ошибки при массовой обработке заказов.

Пошаговое решение: как настроить синхронизацию заказов WooCommerce через REST API

1. Подготовка WooCommerce для передачи данных

WooCommerce предоставляет REST API, через который можно получить данные о заказах. Для начала нужно создать ключи API с правами чтения заказов:

1. В админке WordPress перейдите WooCommerce > Настройки > Расширенные > REST API
2. Нажмите "Добавить ключ"
3. Введите описание, выберите пользователя с правами администратора
4. Установите права "Чтение"
5. Сохраните и запишите Consumer Key и Consumer Secret

2. Обработка вебхуков для моментальной передачи заказов

Чтобы передавать данные сразу при создании заказа, используйте вебхуки WooCommerce:

add_action('woocommerce_order_status_completed', 'send_order_to_warehouse_system', 10, 1);
function send_order_to_warehouse_system($order_id) {
    $order = wc_get_order($order_id);
    $data = [];

    // Формируем данные заказа
    $data['id'] = $order->get_id();
    $data['date_created'] = $order->get_date_created()->date('c');
    $data['total'] = $order->get_total();
    $data['items'] = [];
    foreach ( $order->get_items() as $item ) {
        $product = $item->get_product();
        $data['items'][] = [
            'product_id' => $product->get_id(),
            'name' => $product->get_name(),
            'quantity' => $item->get_quantity(),
            'total' => $item->get_total(),
        ];
    }

    // Отправка данных в склад через POST-запрос
    $response = wp_remote_post('https://api.warehouse.example.com/orders', [
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer YOUR_API_TOKEN',
        ],
        'body' => json_encode($data),
        'timeout' => 10
    ]);

    if (is_wp_error($response)) {
        error_log('Ошибка отправки заказа в складскую систему: ' . $response->get_error_message());
    }
}

3. Настройка обратной синхронизации статусов заказов

Для обновления статусов заказов из складской системы используйте WP-CLI или создайте cron-задачу, которая периодически запрашивает статусы и обновляет заказы:

function update_order_status_from_warehouse() {
    $response = wp_remote_get('https://api.warehouse.example.com/orders/statuses', [
        'headers' => [
            'Authorization' => 'Bearer YOUR_API_TOKEN'
        ]
    ]);

    if (is_wp_error($response)) {
        error_log('Ошибка получения статусов заказов: ' . $response->get_error_message());
        return;
    }

    $statuses = json_decode(wp_remote_retrieve_body($response), true);

    foreach ($statuses as $order_id => $status) {
        $order = wc_get_order($order_id);
        if ($order) {
            // Пример перевода статусов
            $status_map = [
                'shipped' => 'completed',
                'processing' => 'processing',
                'cancelled' => 'cancelled'
            ];
            if (isset($status_map[$status])) {
                $order->update_status($status_map[$status], 'Статус обновлен из складской системы');
            }
        }
    }
}
add_action('wp_scheduled_update_order_status', 'update_order_status_from_warehouse');
// Планировщик cron
if (!wp_next_scheduled('wp_scheduled_update_order_status')) {
    wp_schedule_event(time(), 'hourly', 'wp_scheduled_update_order_status');
}

Проверка результата

Чтобы убедиться, что синхронизация сработала, проверьте следующие моменты:

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

Частые ошибки и как их исправить

  • Ошибка 401 Unauthorized при запросах к API склада: проверьте правильность токена и заголовков авторизации.
  • Отсутствие данных в webhook: убедитесь, что хук woocommerce_order_status_completed срабатывает, и заказ действительно меняет статус на «завершен».
  • Проблемы с таймаутами при отправке данных: увеличьте параметр 'timeout' в wp_remote_post или оптимизируйте payload.
  • Дублирование заказов в складской системе: добавьте проверку уникальности заказа по ID перед отправкой.

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

  • Используйте HTTPS для всех запросов к API склада.
  • Храните токены доступа в wp-config.php или в настройках, а не в коде.
  • Реализуйте логирование ошибок и успешных запросов для мониторинга.
  • Оптимизируйте передачу данных — отправляйте только необходимые поля.
  • Для больших магазинов рассмотрите пакетную отправку заказов по 10-20 штук, чтобы снизить нагрузку.

Сравнение вариантов интеграции WooCommerce с складом

МетодПлюсыМинусы
Вебхуки (hook + wp_remote_post)Моментальная отправка, простота реализацииНе всегда надежно при больших нагрузках, проблемы с повторной отправкой
Периодический запрос API (cron)Контроль и повторная синхронизация, меньше сбоевЗадержка обновления, нагрузка на сервер
Использование готовых плагинов интеграцииМного функций из коробки, поддержкаСтоимость, зависимость от разработчика, возможные ограничения
Как сделать автоматическую синхронизацию оповещений WordPress между сайтами
24.03.2026
Автоматическая синхронизация оповещений WordPress между сайтами
30.01.2026
Как синхронизировать пользовательские роли и права в WordPress между сайтами
05.12.2025
Как избавиться от проблем с переадресацией в WordPress при использовании WooCommerce
07.05.2026
Автоматическая синхронизация отзывов WooCommerce между сайтами WordPress
02.03.2026