Как использовать WooCommerce REST API для управления заказами

Зачем использовать WooCommerce REST API для заказов

WooCommerce предоставляет мощный REST API для управления заказами из внешних систем или скриптов. Это позволяет автоматизировать обработку заказов, интегрировать CRM, складские системы и создавать кастомные панели управления без необходимости заходить в админку WordPress.

Диагностика: как проверить доступность REST API WooCommerce

Перед началом убедитесь, что REST API WooCommerce активен и работает корректно:

  • Убедитесь, что включена поддержка REST API (WooCommerce версии 2.6+ поддерживают его по умолчанию).
  • Проверьте, что URL https://your-site.com/wp-json/wc/v3/orders возвращает данные (требуется авторизация).
  • Настройте ключи API в WooCommerce: в админке WooCommerce перейдите WooCommerce > Настройки > Продвинутые > REST API, создайте ключи с нужными правами.

Пошаговое решение: создание, получение и обновление заказов через REST API

1. Генерация ключей API

В админке WooCommerce создайте ключи с правами чтения/записи:

  1. Перейдите WooCommerce > Настройки > Продвинутые > REST API.
  2. Нажмите "Добавить ключ".
  3. Назовите ключ, выберите пользователя и права — Read/Write.
  4. Сохраните и скопируйте Consumer Key и Consumer Secret.

2. Пример запроса для получения списка заказов (PHP c cURL)

$url = 'https://your-site.com/wp-json/wc/v3/orders';
$consumer_key = 'ck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$consumer_secret = 'cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $consumer_key . ":" . $consumer_secret);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$orders = json_decode($response, true);
print_r($orders);

3. Создание нового заказа через API

Пример запроса POST для создания заказа с обязательными параметрами:

$url = 'https://your-site.com/wp-json/wc/v3/orders';
$data = [
    'payment_method' => 'bacs',
    'payment_method_title' => 'Direct Bank Transfer',
    'set_paid' => true,
    'billing' => [
        'first_name' => 'Иван',
        'last_name' => 'Иванов',
        'email' => 'ivan@example.com',
        'phone' => '79991234567',
        'address_1' => 'ул. Ленина, 10',
        'city' => 'Москва',
        'postcode' => '101000',
        'country' => 'RU'
    ],
    'line_items' => [
        [
            'product_id' => 123,
            'quantity' => 2
        ]
    ]
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $consumer_key . ":" . $consumer_secret);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);

$order = json_decode($response, true);
print_r($order);

4. Обновление статуса заказа

Для обновления заказа по ID используйте PUT-запрос:

$order_id = 456;
$url = 'https://your-site.com/wp-json/wc/v3/orders/' . $order_id;
$data = ['status' => 'completed'];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $consumer_key . ":" . $consumer_secret);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);

$updated_order = json_decode($response, true);
print_r($updated_order);

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

  • Получите список заказов через API и убедитесь, что он возвращает актуальные данные.
  • Создайте новый заказ через API, проверьте его отображение в админке WooCommerce.
  • Обновите статус существующего заказа и проверьте изменение в WooCommerce.
  • Проверьте ошибки и статус HTTP-ответов (200, 201 для успешных запросов).

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

  • 401 Unauthorized: Проверьте правильность ключей Consumer Key и Secret, а также права пользователя, под которым они созданы.
  • 403 Forbidden: Убедитесь, что REST API не заблокирован на сервере или в .htaccess, и что плагин безопасности не блокирует запросы.
  • 400 Bad Request: Проверьте формат данных JSON, обязательные поля (например, billing, line_items), корректность product_id.
  • Ошибки CORS при вызове из браузера: лучше использовать серверный код для API-запросов или настроить заголовки CORS на сервере.

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

  • Используйте HTTPS для защиты данных и аутентификации.
  • Ограничьте права ключей API только необходимыми (например, только чтение или запись, если нужно).
  • Ротация ключей: периодически обновляйте ключи API.
  • Кешируйте ответы при частом чтении заказов, чтобы снизить нагрузку.
  • Логируйте ошибки и ответы API для отладки и мониторинга.

Сравнение способов работы с заказами WooCommerce

МетодПлюсыМинусы
Админка WooCommerceПростота, визуальный контрольНет автоматизации, ручной труд
REST API (код)Автоматизация, интеграция, гибкостьТребует навыков программирования
Плагины интеграцииУпрощают интеграцию, готовые решенияМогут быть тяжелыми, ограничены функционалом
Как удалить редиректы в WordPress: полное практическое руководство
04.11.2025
Как создать динамический фильтр по пользовательским меткам в WordPress
31.01.2026
Как автоматизировать удаление оставленных товаров из корзины в WooCommerce
17.05.2026
Как создать автоматические записи с обновляемым контекстом в WordPress
02.04.2026
Как избежать конфликтов между плагинами в WordPress
25.12.2025