Как синхронизировать товары из Joomla с Битрикс24
При ведении интернет-магазина на Joomla часто возникает необходимость дублировать номенклатуру в CRM Битрикс24 для учёта и продаж. Разберём, как автоматизировать этот процесс с помощью событий и REST API.
Событие добавления товара в Joomla
В Joomla можно перехватить момент сохранения товара через системные плагины группы onContentAfterSave. Этот триггер срабатывает после того, как запись (товар) успешно сохранена в базу данных. Для этого создайте собственный плагин для компонента com_content или com_virtuemart (если используете VirtueMart). В методе плагина вы получите объект статьи или товара, включая название, цену, описание и артикул.
Создание товара в Битрикс24 через REST API
Битрикс24 предоставляет мощный REST API для работы с сущностями CRM. Чтобы создать товар (элемент каталога), отправьте POST-запрос на метод crm.product.add. В теле запроса передайте поля: NAME (название), PRICE (цена), CURRENCY_ID (валюта) и DESCRIPTION (описание). Перед вызовом API необходимо авторизоваться - используйте Webhook или OAuth-токен, полученный в настройках вашего портала Битрикс24.
Пошаговая реализация интеграции
Шаг 1. Создание плагина Joomla
- Создайте файл плагина в папке
/plugins/content/. - В методе
onContentAfterSaveпроверьте, что контекст соответствует товару (например,com_virtuemart.product). - Извлеките данные товара:
$article->title,$article->priceи т.д.
Шаг 2. Настройка вызова API Битрикс24
- Получите Webhook URL:
https://yourdomain.bitrix24.ru/rest/1/TOKEN/. - Сформируйте массив полей товара в формате JSON.
- Используйте cURL в PHP для отправки запроса к
crm.product.add.
Шаг 3. Обработка ошибок и логирование
- Проверяйте HTTP-статус ответа (200 - успех).
- При ошибке записывайте лог в файл или базу данных для отладки.
- Убедитесь, что товар не дублируется - используйте уникальный артикул (поле XML_ID).
Пример кода для отправки товара в Битрикс24
Ниже приведён упрощённый фрагмент PHP-кода, который можно разместить в плагине Joomla:
function onContentAfterSave($context, $article, $isNew) {
if ($context != 'com_virtuemart.product' || !$isNew) return;
$data = [
'fields' => [
'NAME' => $article->title,
'PRICE' => $article->price,
'CURRENCY_ID' => 'RUB',
'DESCRIPTION' => $article->description
]
];
$webhookUrl = 'https://yourdomain.bitrix24.ru/rest/1/YOUR_TOKEN/crm.product.add';
$ch = curl_init($webhookUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
}Важные нюансы синхронизации
Убедитесь, что у вас настроена валюта в Битрикс24 (по умолчанию RUB). Если товар уже существует, используйте метод crm.product.update с идентификатором из ответа. Для массовой синхронизации рассмотрите использование фоновых задач (очередей) - это снизит нагрузку на сервер при одновременном добавлении многих товаров.
Заключение
Перехват события добавления товара в Joomla и вызов REST API Битрикс24 - надёжный способ автоматической синхронизации. Реализовав плагин с обработчиком onContentAfterSave и корректным вызовом crm.product.add, вы избавите себя от ручного ввода данных и минимизируете ошибки.