Что такое WC REST API и зачем он нужен для управления заказами
WooCommerce REST API — это программный интерфейс, который позволяет внешним приложениям взаимодействовать с вашим магазином на WordPress. Через API можно создавать, изменять, удалять и получать заказы, товары, клиентов и пр. Автоматизация управления заказами с помощью WC REST API позволяет интегрировать магазин с ERP-системами, CRM, автоматизировать обработку заказов и обновление статусов без ручного вмешательства.
Диагностика: как понять, что REST API настроен неправильно для заказов
Если вы пытаетесь работать с заказами через API и получаете ошибки, например 401 Unauthorized или 403 Forbidden, либо данные не обновляются, значит, либо ключи доступа не настроены, либо права доступа недостаточны.
- Проверьте, включен ли REST API и правильно ли сгенерированы ключи в WooCommerce → Настройки → Расширенные → REST API.
- Убедитесь, что пользователь, для которого созданы ключи, имеет роль с правами редактирования заказов (обычно администратор или менеджер магазина).
- Проверьте URL запросов — должен использоваться правильный endpoint
/wp-json/wc/v3/orders.
Пошаговое решение: базовые операции с заказами через WC REST API
1. Создание API ключей
Перейдите в админке WordPress в WooCommerce → Настройки → Расширенные → REST API. Нажмите "Добавить ключ", выберите пользователя с нужными правами, задайте описание, установите права "Чтение/Запись" и сохраните. Сохраните сгенерированные Consumer key и Consumer secret.
2. Пример запроса получения заказов на PHP с использованием WP_Http
$url = 'https://example.com/wp-json/wc/v3/orders';
$consumer_key = 'ck_xxxxxxxxxxxxxxxxxxx';
$consumer_secret = 'cs_xxxxxxxxxxxxxxxxxxx';
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
],
];
$request = new WP_Http();
$response = $request->get($url, $args);
if (!is_wp_error($response)) {
$orders = json_decode($response['body'], true);
print_r($orders);
} else {
echo 'Ошибка запроса API: ' . $response->get_error_message();
}
3. Создание нового заказа через API
Для создания заказа отправьте POST-запрос с данными в JSON формате. Минимальный набор данных:
{
"payment_method": "bacs",
"payment_method_title": "Direct Bank Transfer",
"set_paid": true,
"billing": {
"first_name": "Иван",
"last_name": "Иванов",
"email": "ivan@example.com",
"phone": "1234567890",
"address_1": "ул. Ленина, д.1",
"city": "Москва",
"postcode": "101000",
"country": "RU"
},
"line_items": [
{
"product_id": 123,
"quantity": 2
}
]
}
4. Пример создания заказа на PHP
$url = 'https://example.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' => '1234567890',
'address_1' => 'ул. Ленина, д.1',
'city' => 'Москва',
'postcode' => '101000',
'country' => 'RU',
],
'line_items' => [
[
'product_id' => 123,
'quantity' => 2,
],
],
];
$args = [
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Basic ' . base64_encode($consumer_key . ':' . $consumer_secret),
],
'body' => json_encode($data),
];
$request = new WP_Http();
$response = $request->post($url, $args);
if (!is_wp_error($response)) {
$order = json_decode($response['body'], true);
echo 'Создан заказ с ID: ' . $order['id'];
} else {
echo 'Ошибка создания заказа: ' . $response->get_error_message();
}
Проверка результата после внедрения
- В админке WooCommerce перейдите в раздел "Заказы" и убедитесь, что созданные через API заказы появились.
- Используйте Postman или curl для тестирования запросов к API и проверяйте ответы с кодами 200 и корректными данными.
- Для отладки можно включить логирование REST API в WooCommerce: добавьте в
wp-config.phpdefine('WP_DEBUG', true); define('WP_DEBUG_LOG', true);и проверяйте файлwp-content/debug.log.
Частые ошибки и как их исправить
- Ошибка 401 Unauthorized: неверные ключи API или пользователь не имеет достаточных прав. Проверьте правильность Consumer key/secret и роль пользователя.
- Ошибка 403 Forbidden: доступ к API заблокирован сервером (например, модулем безопасности). Проверьте настройки .htaccess и firewall.
- Проблемы с CORS: если API вызывается с фронтенда, настройте заголовки в сервере или используйте серверный прокси.
- Неправильный формат данных: при создании заказа убедитесь, что JSON валидный, обязательные поля заполнены (например, billing, line_items).
Практические советы по безопасности и производительности
- Используйте HTTPS для всех запросов к API, чтобы защитить ключи и данные.
- Ограничьте права API-ключей только необходимыми (чтение или запись по необходимости).
- Ротация ключей: периодически меняйте ключи для безопасности.
- Кэшируйте часто запрашиваемые данные заказов на стороне приложения, чтобы снизить нагрузку на сервер.
- Для массовой обработки заказов используйте пакетные запросы с пагинацией, чтобы не перегружать сервер.
Сравнение вариантов взаимодействия с заказами WooCommerce
| Метод | Описание | Преимущества | Недостатки |
|---|---|---|---|
| WC REST API | Официальный API WooCommerce для работы с заказами | Стандартизован, поддерживается, подходит для интеграций | Нужна настройка ключей, возможны ограничения хостинга |
| PHP-функции WooCommerce | Работа с заказами через PHP-код внутри WordPress | Глубокая интеграция, нет необходимости в ключах | Требует написание плагинов/тем, сложно для внешних систем |
| Плагины автоматизации | Готовые решения для интеграции и управления заказами | Простота использования, готовые интерфейсы | Могут быть платными, менее гибкие |