Взаимодействие торгового каталога и магазина

Взаимодействие торгового каталога и магазина

До версии 12.5 взаимодействие интернет-магазина и торгового каталога строилось на функциях обратного вызова. Теперь взаимодействие осуществляется через новый интерфейс IBXSaleProductProvider. В корзину добавлено одно новое поле PRODUCT_PROVIDER_CLASS, каталог записывает в это поле имя класса CCatalogProductProvider.

После выхода версии 12.5 функции обратного вызова задействуются только в том случае, если не задан провайдер (поле PRODUCT_PROVIDER_CLASS пусто).

Функции обратного вызова:

Для поддержки актуальности корзины

Функция обратного вызова вызывается (если установлена) при каждом чтении корзины для обновления параметров содержащихся в корзине товаров. Например, если после добавления товара в корзину изменилась его цена или товар сняли с продажи, то использование функции обратного вызова позволяет соответственно обновить данные в корзине. В поле CALLBACK_FUNC записывается только имя функции обратного вызова. Для некоторых модулей функции обратного вызова уже написаны (например, для модуля catalog функция обратного вызова называется CatalogBasketCallback($PRODUCT_ID, $QUANTITY = 0, $renewal = "N", $intUserID = 0, $strSiteID = false) )

Функция обратного вызова должна возвращать массив той же структуры, что и входной массив метода CSaleBasket::Add(array arFields). Если функция возвращает пустой массив, то это означает, что данный товар не доступен для покупки.

Параметры функции обратного вызова Название Описание PRODUCT_ID Код товара, находящегося в корзине. QUANTITY Количество товаров в корзине. renewal Равен "Y", если функция вызывается для продления подписки, и "N" в остальных случаях. $intUserID* ID пользователя. Если не задан, то берется текущий. $strSiteID* Сайт, для которого идет работа с корзиной. Если параметр равен false, то берется текущий сайт.

* - параметры доступны, начиная с версии 12.0.

Пример создания функции обратного вызова Для оформления заказа

Функция обратного вызова для оформления заказа вызывается (если установлена) в момент оформления заказа на данный товар. Например, если отслеживается количество оставшихся в магазине единиц товара, то использование функции обратного вызова заказа позволяет соответственно уменьшить количество оставшихся в магазине единиц товара. В поле ORDER_CALLBACK_FUNC записывается только имя функции обратного вызова заказа. Для некоторых модулей функции обратного вызова заказа уже написаны (например, для модуля catalog функция обратного вызова заказа называется CatalogBasketOrderCallback($PRODUCT_ID, $QUANTITY, $renewal = "N", $intUserID = 0, $strSiteID = false) )

Функция вызывается на каждый товар в заказе. В случае если функция возвращает не пустой массив считается, что товар можно купить он попадает в заказ, если возвращает пустой массив, товар в заказ не попадает. Если функция ничего не возвращает или возвращает не массив, товар также попадает в заказ.

Параметры функции обратного вызова заказа Название Описание PRODUCT_ID Код товара, находящегося в корзине. QUANTITY Количество товаров в корзине. renewal Равен "Y", если функция вызывается для продления подписки, и "N" в остальных случаях. $intUserID* ID пользователя. Если не задан, то берется текущий. $strSiteID* Сайт, для которого идет работа с корзиной. Если параметр равен false, то берется текущий сайт.

* - параметры доступны, начиная с версии 12.0.

Пример создания функции обратного вызова заказа Для отмены заказа

Функция обратного вызова для отмены заказа вызывается при отмене или удалении заказа. Она служит как правило для возвращения в продажу зарезервированого для заказа количества товара. В поле CANCEL_CALLBACK_FUNC записывается только имя функции обратного вызова заказа. Для некоторых модулей функции обратного вызова заказа уже написаны (например, для модуля catalog функция обратного вызова заказа называется CatalogBasketCancelCallback($PRODUCT_ID, $QUANTITY, $bCancel) )

Функция не возвращает значений.

Параметры функции обратного вызова заказа.

PRODUCT_ID равен true, если отменяется заказ, и false, если отменяется.

Название Описание PRODUCT_ID Код товара, находящегося в корзине. QUANTITY Количество товаров в корзине. bCancel true, если отменяется заказ, и false, если отменяется.

Пример создания функции обратного вызова заказа При разрешении доставки

Функция обратного вызова при разрешении доставки вызывается при разрешении доставки заказа. Она может служить для привязки пользователя к каким-либо группам пользователей, для начисления на счет пользователя каких-либо сумм и для других действий, которые должны произойти в момент выполнения заказа. В поле PAY_CALLBACK_FUNC записывается только имя функции обратного вызова. Для некоторых модулей функции обратного вызова заказа уже написаны (например, для модуля catalog функция обратного вызова заказа называется CatalogPayOrderCallback($productID, $userID, $bPaid, $orderID) )

📎📎📎📎📎📎📎📎📎📎