Как получить цены и остатки товаров из товарного каталога Битрикс 24 по REST API?

Клиент ведёт учёт товаров с помощью складского учёта в Битрикс 24. Для того, чтобы актуальные цены и остатки товаров отображались на сайте Joomla нужно настроить получение этих данных по REST API Битрикс 24. 

Логика синхронизации следующая: на стороне Joomla настраивается таблица связей товаров магазина и товаров Битрикс 24. Так же в запросах к методам Битрикс 24 нужно указывать параметр iblockId - id товарного каталога. Его можно получить либо соответсвующими методами REST API, либо увидеть в карточке товара на стороне Битрикс 24.

PHP код для получения остатков товаров Битрикс 24 по REST API

Количество товаров можно получить методом catalog.product.list.

$resultBitrix24ProductQuantity      = CRest::call("catalog.product.list", [
          'select' => [
            'id', 'iblockId', 'name', 'quantity', 'xmlId'
          ],
          'filter' => [
            'id'       => $b24_product_id, // Фильтр по id Товара
            'iblockId' => $task_params->default_bitrix24_store_iblock_id // id товарного каталога
          ]
        ]);

В ответе приходит массив $resultBitrix24ProductQuantity['result']['products'] с товарами. Поскольку в нашем запросе мы указали фильтр по id конкретного товара - придёт один товар. Поэтому получить данные можно обратившись по индексу элемента массива - $resultBitrix24ProductQuantity['result']['products'][0]['quantity'];

Важно: Если в Битрикс 24 указана цена 0, то в ответе по REST API придёт ничего - пустота. Проверяйте данное значение на empty() самостоятельно, чтобы в базу данных уходил int 0, а не пустая строка.

Важно: в запросах к данным методам в массиве select запроса должны быть обязательные параметры id и iblockId. Иначе Битрикс 24 вернёт ошибку.

PHP код для получения цен товаров Битрикс 24 по REST API

Цену товара получаем методом catalog.price.list.

$resultBitrix24ProductPrice      = CRest::call("catalog.price.list", [
          'select' => [
            'price'
          ],
          'filter' => [
            'productId' => $b24_product_id, // Фильтр по id Товара
          ]
        ]);
// В ответе массив
$resultBitrix24ProductPrice['result']['prices'][0]['price'];

В моём случае товаров с нулевой ценой в каталоге не было, поэтому не могу сказать что приходит в ответе Битрикс 24 в этом случае, но, возможно, стоит применить empty() и здесь.

Готовый бесплатный плагин для обновления цен и остатков товаров из Битрикс 24 в JoomShopping по CRON находится здесь: WT JShopping Bitrix 24 PRO - CRON. Это плагин задачи для встроенного в Joomla 4.1+ планировщика задач, легко ставится на серверный CRON. Подробнее на странице расширения.

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

90 Всего расширений
11 Категорий
401 Выпущено версий
397349 Всего скачиваний
Корзина
Корзина пуста