Как синхронизировать товары из 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, вы избавите себя от ручного ввода данных и минимизируете ошибки.

    Часто задаваемые вопросы