Зачем использовать 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 создайте ключи с правами чтения/записи:
- Перейдите WooCommerce > Настройки > Продвинутые > REST API.
- Нажмите "Добавить ключ".
- Назовите ключ, выберите пользователя и права —
Read/Write. - Сохраните и скопируйте
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 (код) | Автоматизация, интеграция, гибкость | Требует навыков программирования |
| Плагины интеграции | Упрощают интеграцию, готовые решения | Могут быть тяжелыми, ограничены функционалом |