Интеграция с «1С», «ERP», CRM-системами и CommerceAPI
Автоматический экспорт при заказе / Отправка POST данных о заказе в JSON формате
Автоматический экспорт при заказе вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, в том числе и контактные данные заказчика, и перечень товаров. Контактные данные и информация о заказе будет передаваться в JSON формате, POST запросом.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»
Если после отправки запроса, ваш сервис вернет JSON данные, с содержанием «Number» или «crm_order_id», то к заказу будет добавлен внешний номер заказа.
Автоматический экспорт статистики продаж / Отправка POST данных о заказе в JSON формате
Автоматический экспорт статистики продаж вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, которые изменяются в Статистике продаж. Информация будет передаваться POST запросом в JSON формате.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»
Кроме того вы можете включить внешний доступ к вашей статистике, указав «Ключ для доступа к статистике продаж».
Доступ к статистике продаж / JSON
Укажите ключ для доступа к статистике продаж в настройках, во вкладке «Магазин». Если вам необходимо получить доступ к статистике продаж внешним приложением, то вы можете выполнить (POST/GET или AJAX) запрос по адресу «
/ajax.php?statistic_sell» При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «
202cb962ac59075b964b07152d234b70».В таком случае запрос будет выглядеть так: «
/ajax.php?statistic_sell&key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки или поиска (GET/POST параметры), которые можно взять на вашей странице статистики продаж в админ-центре (
/page.php?p=statistic_sell&mystat). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «&sort_dateperiod=1week» означает, что будет отображаться статистика продаж за неделю. Данные отображаются в JSON формате.
Обратите внимание, что если вы используете открытые для посетителей запросы странице, то при помощи вашего ключа они смогут получить доступ к вашей статистике продаж.
Доступ к прайсу магазина / Полная выгрузка прайса в CSV
Укажите ключ для доступа к прайсу магазина в настройках, во вкладке «Магазин». Полная выгрузка прайса находится по адресу «/csv_export_products.csv»
При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «
202cb962ac59075b964b07152d234b70».В таком случае запрос будет выглядеть так: «
/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки и выборке полей, которые можно взять на вашей странице экспорта в админ-центре (/page.php?p=submit_catalog_page&subpage&export_from_shop). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «
&export_product_access=export_product_access» означает, что будет выгружать поле с данными о доступе к товару. Данные отображаются в CSV формате.
Файл выгрузки кешируется для уменьшения нагрузки и обновляется раз в сутки. Удалить кеш можно при помощи кнопки «Очистить кеш XML/CSV выгрузок».
Пример: https://templatedemo437544.hotlist.biz/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70
Дополнительно реализован механизм обмена данными через API, схожий с WooCommerce API. API позволяет получать и обновлять инофмация о заказах и товарах, а также категориях. Инструкции и настройки в разделе «Магазин» - «Обмен данными JSON Commerce API».
Commerce API (Products/Categories/Sales Statistics)
Commerce API — Краткий мануал по методам
Ключ доступа
Для работы с API нужен ключ доступа (Consumer Secret), который вы создаете в резделе «Настройка», «Магазин», «Доступ к статистике продаж». Ключ формируется на основе Ключа для доступа к статистике продаж.
Методы API (HTTP)
Все запросы идут на базовый URL вашего сайта, например: https://site.com/api/commerce/ или https://site.com/wp-json/wc/v3/
1. Статистика продаж
| Метод | URL | Описание |
|---|---|---|
GET |
/orders |
Получить статистику заказов |
GET |
/orders/{id} |
Получить статистику отдельного заказа по ID |
GET |
/crm_orders/{id} |
Получить статистику отдельного заказа по внещнему CRM ID |
DELETE |
/orders/{id} |
Удалить заказ по ID |
DELETE |
/crm_orders/{id} |
Удалить заказ по внещнему CRM ID |
POST |
/orders |
Добавить новый заказ |
UPDATE |
/orders/{id} |
Обновить заказ по ID (PATCH/PUT/UPDATE) |
UPDATE |
/crm_orders/{id} |
Обновить заказ по внещнему CRM ID (PATCH/PUT/UPDATE) |
2. Товары
| Метод | URL | Описание |
|---|---|---|
POST |
/products |
Массовое добавление и обновление товаров |
GET |
/products |
Получить список товаров |
GET |
/products/{id} |
Просмотр отдельного товара по ID |
GET |
/products/sku/{sku} |
Просмотр отдельного товара по SKU (коду товара) |
UPDATE |
/products/{id} |
Обновить товар по ID (PATCH/PUT/UPDATE) |
UPDATE |
/products/sku/{sku} |
Обновить товар по SKU (коду товара) (PATCH/PUT/UPDATE) |
UPDATE |
/products |
Массовое обновление нескольких товаров (PATCH/PUT/UPDATE) |
DELETE |
/products/{id} |
Удалить товар по ID |
DELETE |
/products/sku/{sku} |
Удалить товар по SKU (коду товара) |
3. Категории магазина
| Метод | URL | Описание |
|---|---|---|
POST |
/products/categories |
Массовое добавление и обновление категорий |
GET |
/products/categories |
Получить список категорий товаров |
GET |
/products/categories/{id} |
Получить категорию по ID |
GET |
/products/categories/id/{id} |
Получить категорию по ID (альтернативный вариант) |
GET |
/products/categories/name/{name} |
Получить категорию по имени |
UPDATE |
/products/categories |
Массовое обновление нескольких категорий (PATCH/PUT/UPDATE) |
UPDATE |
/products/categories/{id} |
Обновить категорию по ID (PATCH/PUT/UPDATE) |
UPDATE |
/products/categories/id/{id} |
Обновить категорию по ID (альтернативный вариант) |
UPDATE |
/products/categories/name/{name} |
Обновить категорию по имени |
Параметры родительских категорий
| Параметр | Тип | Описание |
|---|---|---|
category_parent_id |
int | ID родительской категории. Используется в первую очередь, если задан. |
category_parent_name |
string | Латинское имя (alias / slug) родительской категории. Используется, если category_parent_id не задан. |
category_lang |
string | Язык категории. Применяется для разрешения коллизий в именах. |
Принцип работы:
- Сначала проверяется
category_parent_id. - Если он не задан – используется
category_parent_name. - При совпадении имён – добавляется проверка по
category_lang.
Особое правило:
Чтобы добавить категорию в корневую (основную) категорию, необходимо указать category_parent_name = "main" и обязательно задать параметр category_lang.
Обновление и удаление:
update_exists (bool) – если true, обновляет категорию при повторном добавлении.
delete (bool) – если true, категория будет удалена.
4. Производители
| Метод | URL | Описание |
|---|---|---|
POST |
/products/producers |
Массовое добавление и обновление производителей |
GET |
/products/producers |
Получить список производителей |
GET |
/products/producers/{id} |
Получить производителя по ID |
GET |
/products/producers/id/{id} |
Получить производителя по ID (альтернативный вариант) |
GET |
/products/producers/name/{name} |
Получить производителя по имени |
UPDATE |
/products/producers |
Массовое обновление нескольких производителей (PATCH/PUT/UPDATE) |
UPDATE |
/products/producers/{id} |
Обновить производителя по ID (PATCH/PUT/UPDATE) |
UPDATE |
/products/producers/id/{id} |
Обновить производителя по ID (альтернативный вариант) |
UPDATE |
/products/producers/name/{name} |
Обновить производителя по имени |
Параметры привязки производителей
| Параметр | Тип | Описание |
|---|---|---|
producer_parent_id |
int | ID родительского производителя (группы). Используется в первую очередь. |
producer_parent_name |
string | Латинское имя (alias / slug) родительского производителя. |
producer_lang |
string | Язык производителя для разрешения коллизий имен. |
Принцип работы:
- Сначала проверяется
producer_parent_id. - Если он не задан – используется
producer_parent_name. - При совпадении имён – добавляется проверка по
producer_lang.
Особое правило:
Чтобы добавить производителя в корневую (основную) группу производителей, необходимо указать producer_parent_name = "main" и обязательно задать параметр producer_lang.
Обновление и удаление:
update_exists (bool) – если true, обновляет производителя при повторном добавлении (по умолчанию false).
delete (bool) – если true, производитель будет удалён.
5. Коллекции
| Метод | URL | Описание |
|---|---|---|
POST |
/products/collections |
Массовое добавление и обновление коллекций |
GET |
/products/collections |
Получить список коллекций |
GET |
/products/collections/{id} |
Получить коллекцию по ID |
GET |
/products/collections/id/{id} |
Получить коллекцию по ID (альтернативный вариант) |
GET |
/products/collections/name/{name} |
Получить коллекцию по имени |
UPDATE |
/products/collections |
Массовое обновление нескольких коллекций (PATCH/PUT/UPDATE) |
UPDATE |
/products/collections/{id} |
Обновить коллекцию по ID (PATCH/PUT/UPDATE) |
UPDATE |
/products/collections/id/{id} |
Обновить коллекцию по ID (альтернативный вариант) |
UPDATE |
/products/collections/name/{name} |
Обновить коллекцию по имени |
Параметры привязки коллекций
| Параметр | Тип | Описание |
|---|---|---|
collection_parent_id |
int | ID родительской коллекции. Используется в первую очередь. |
collection_parent_name |
string | Латинское имя (alias / slug) родительской коллекции. |
collection_lang |
string | Язык коллекции для разрешения коллизий имен. |
Принцип работы:
- Сначала проверяется
collection_parent_id. - Если он не задан – используется
collection_parent_name. - При совпадении имён – добавляется проверка по
collection_lang.
Особое правило:
Чтобы добавить коллекцию в корневую (основную) коллекцию, необходимо указать collection_parent_name = "main" и обязательно задать параметр collection_lang – язык родительской коллекции.
Обновление и удаление:
update_exists (bool) – если true, обновляет коллекцию при повторном добавлении (по умолчанию false).
delete (bool) – если true, коллекция будет удалена.
6. Сортировка и пагинация
Для методов /orders и /products доступны параметры для постраничного вывода и сортировки:
Параметры пагинации
| Параметр | Тип | Описание |
|---|---|---|
page |
int | Номер страницы (по умолчанию 1) |
per_page |
int | Кол-во элементов на страницу (по умолчанию 90, максимум 2000) |
Параметры сортировки
| Параметр | Тип | Допустимые значения | Описание |
|---|---|---|---|
orderby |
string | id, title, price, date, views |
Поле для сортировки |
order |
string | asc, desc |
Направление сортировки |
Параметры языка
| Параметр | Тип | Допустимые значения | Описание |
|---|---|---|---|
l |
string | ru, ua, en, de, fr, es, it, pl |
Язык отображения значений |
Дополнительно для заказов
Можно фильтровать заказы по дате и статусу:
?after=YYYY-MM-DD— Начальная дата (в формате ISO)?before=YYYY-MM-DD— Конечная дата?status=pending|processing|on-hold|completed|cancelled|0|1|2|3|5|6|7|8— Статус заказа0— Не обработанные (pending)1— Заказ в обработке (processing)7— Заказ в обработке, ожидает поставки (on-hold)3— Обработанные (completed)8— Обработанные и завершённые (completed)2— Отменённые (cancelled)5— Отменённые: нет в наличии (cancelled)6— Отменённые: отказ (cancelled)?show_deleted=1— Показать скрытые заказы
Примеры
GET /orders?page=2&per_page=100&after=2024-06-01&before=2024-06-30
GET /products?orderby=price&order=asc&per_page=50
Пример авторизации в запросе
В запросе передаются ключи:
?consumer_secret=ВАШ_СЕКРЕТ (внимание не публикуйте ключ в общий доступ!)
Или через заголовок Authorization с OAuth 1.0a.
Добавить новый заказ (POST /orders)
Чтобы создать новый заказ через API, нужно отправить POST-запрос на /orders с JSON-телом.
Обязательно должно быть указано минимум:
email— Email покупателя (обязательно!)line_items— Список добавляемых товаров
Параметры заказа
При создании заказа можно указывать дополнительные поля, например:
{
"first_name": "Name",
"last_name": "Soname",
"email": "alex@example.com",
"phone": "+380671112233",
"address": "Full address of not used address eform",
"buyer_address_eform1": "State",
"buyer_address_eform2": "City",
"buyer_address_eform3": "Street",
"buyer_address_eform4": "house number",
"buyer_address_eform5": "flat",
"postcode": "01001",
"total": "999",
"status": "processing",
"status_for_customer": "processing",
"line_items": [ ... ]
}
Описание поля total:
-
total— финальная сумма заказа (строка или число). Если это поле указано, оно будет использовано как итоговая цена заказа. - Если
totalне указано, сумма заказа будет автоматически пересчитана по сумме добавленных товаров вline_items. - Поле
totalне является обязательным и может быть использовано для заказов без товаров.
Формат line_items
Параметр line_items — это массив товаров, каждый товар задаётся объектом со следующими полями:
"line_items": [
{
"product_id": 478734,
"quantity": 1,
"price": 100,
"currency": "USD"
},
{
"product_id": 478268,
"quantity": 10,
"variation": "51"
},
{
"product_id": 478266,
"quantity": 1,
"variation_id": 735302
}
]
- product_id — ID товара (обязательно!).
- quantity — Количество единиц товара (обязательно!).
- price — (необязательно) Если указана цена — берётся именно эта цена и не вычисляется по данным сайта.
-
currency — (необязательно) Валюта конкретного товара (например,
USDилиUAH). Если указана и отличается от общей валюты заказа (currency), система сконвертирует цену автоматически. - variation_id — ID разновидности (вариации товара) — способ указать разновидность, если она есть.
-
variation — Название или код разновидности — используется если нет
variation_id. Если указаны оба — приоритет уvariation_id.
Важно: Если общая валюта заказа (currency) не указана — будет использоваться валюта по умолчанию для сайта.
Если валюта товара отличается от общей валюты — цена конвертируется автоматически.
Обновление товаров
Обновление товара осуществляется через HTTP-метод UPDATE (или PATCH/PUT) по URL с указанием ID товара или его SKU (кода товара), либо сразу нескольких товаров одним запросом:
/products/{id}— обновление товара по ID/products/sku/{sku}— обновление товара по коду (SKU)/products— массовое обновление нескольких товаров (до 5000 за один запрос)
При массовом обновлении путь /products не содержит ID или SKU. В этом случае необходимо передавать массив объектов товаров в параметре products. Каждый элемент массива должен содержать хотя бы id или sku. Если указан id, он имеет приоритет и может использоваться для замены кода товара (sku). Если id не указан, поиск осуществляется по sku - коду товара.
При обновлении передается полный набор данных товара в формате JSON. Все переданные данные заменяют существующие значения, включая:
- Основные свойства товара (название, описание, цены, статус и др.)
- Атрибуты (характеристики)
- Вариации (разновидности товара)
- Изображения
- Категории и теги
- Дополнительные настройки и мета-поля
Обновление вариаций происходит с использованием следующего алгоритма для каждой вариации из массива variations:
- Если в вариации указан
id, обновление производится по нему. - Если
idотсутствует, но указанsku(код вариации), поиск и обновление происходит по нему. - Если нет ни
id, ниsku, но естьtitle(название вариации), поиск и обновление производится по названию. - Если вариация не найдена по указанным критериям, создается новая вариация с заданными параметрами.
Обновление по SKU удобно, когда ID вариации неизвестен, но известен уникальный код.
При обновлении все поля, указанные в JSON, заменят текущие значения товара; чтобы оставить какое-то поле без изменений, просто не включайте его в запрос.
- Дубликаты разновидностей: если в массиве разновидностей встречаются повторяющиеся по коду (SKU) и названию (title), такие разновидности будут пропущены — одна и та же комплектация не добавится дважды.
- Главное изображение: в массиве
imagesглавным считается то, что под индексом0. Еслиimages[0]отсутствует или не загружено, главным станет первое успешно загруженное изображение. - Максимум изображений: для одного товара можно загрузить не более 10 изображений. Если попытаться загрузить больше, лишние файлы будут проигнорированы.
-
Работа с изображениями:
- Удаление изображений: чтобы удалить изображение по индексу, укажите для элемента массива
imagesзначение"delete". Например,images[2] = "delete"удалит файл с индексом 2. Можно удалять и загружать одновременно, указывая несколько ключей:images[3] = "delete",images[1] = "https://...". - Пропуски индексов изображений: если указать пустую строку или
false, этот индекс будет пропущен без ошибок. - Перезапись изображений: параметр
images_replace: еслиtrue, система перезапишет существующие файлы изображений по переданным индексам (удалит старый файл и кеш). Еслиfalseили не указан — перезапись запрещена. - Пропуск занятых индексов: параметр
images_skip_index: еслиtrue, то при занятом индексе и запрещённой перезаписи система найдёт следующий свободный индекс и сохранит файл туда. Еслиfalseили не указан — индекс берётся строго как передан. - Сохранение под новым индексом при конфликте: параметр
images_replace_new_index: еслиtrue, то при занятом индексе и отключённых перезаписи и автоматическом пропуске файл будет сохранён под новым свободным индексом. Если все три параметраfalseили не заданы и индекс занят — файл не будет загружен.
- Удаление изображений: чтобы удалить изображение по индексу, укажите для элемента массива
Параметры товара
Доступные значения вы можете посмотреть в коде примеров ниже. Также приведена дополнительная расшифровка некоторых значений, которая может быть полезна.
-
Доступные значения
price_forДля каждого товара можно указать параметр
price_for, который задаёт единицу измерения цены. Допустимо использовать числовой код или текст (например, «За 1 кг» или «Per 1 kg»). Вот полный список значений:Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.
-
Доступные значения
stock_statusДля каждого товара можно указать параметр
stock_status, который определяет статус доступности товара и его поведение на сайте. Можно использовать числовой код или ключевое слово — система распознает оба варианта.Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.
Если для товара выбран вариант
3, он будет скрыт из списков товаров на сайте. Если выбран вариант4, товар будет виден, но его нельзя будет добавить в корзину. Вариант5показывает покупателю, что наличие нужно уточнить. -
Акция и Доступные значения
promotion_expires_jobДля каждого товара можно указать параметр
promotion_expires_job, который управляет тем, что делать с акцией после истечения её срока.
Можно использовать числовой код или ключевое слово — система распознает оба варианта.Можно указывать как числовое значение, так и текст — система автоматически распознает и приведёт к нужному коду.
Важно: Для активации таймера акции обязательно укажите
promotionравным1— это означает, что акция активна.Также необходимо указать дату окончания акции в параметре
promotion_expires— она может быть задана как UNIX-время (например,time()), так и в форматеYYYY-MM-DDTHH:MM:SS+00:00(например,2025-06-28T00:00:00+00:00).
Добавление товаров
Этот метод позволяет добавить один или несколько товаров одним запросом (до 3000 за один запрос).
Формат запроса полностью совпадает с методом обновления: можно передавать массив products
или одиночный товар.
- Поиск по ID: при добавлении нового товара поле
idдолжно быть пустым или отсутствовать. Еслиidуказан и товар с таким ID уже существует, то система обновит этот товар вместо создания нового. - Поиск по коду (SKU): перед добавлением система проверяет, есть ли товар с таким SKU. Если такой товар найден, он будет обновлён, а не создан заново.
Вы можете добавить новые товары и обновить существующие одним запросом.
Это базовое описание основных методов для работы с Commerce API / WooCommerce API v3 по заказам, товарам и категориям.
Ниже расположены скрипты с примерами, которые помогут правильно использовать методы API на практике.