API модуля бонусной системы
Информация для разработчиков, и интеграторов
Для вывода бонусов в любом месте, необходимо:
- Подключить модуль бонусов.
- Получить информацию о бонусах, подключив метод модуля.
Для списка товаров это нужно делать вне цикла, чтобы не нагружать систему.
В класс подается массив с товарами, на выходе получаете массив с данными о бонусах для товаров.
- Вывести информацию в шаблоне.
Подключение модуля:
Старый вариант:
CModule::IncludeModule('logictim.balls');
Вариант для D7:
use Bitrix\Main\Loader;
Loader::includeModule("logictim.balls");
Вывод бонусов в списке товаров:
$arBonus = cHelperCalc::CatalogBonus($arResult); //Подключать вне цикла, чтобы не грузить сервер
$arBonus[$arItem["ID"]]["VIEW_BONUS"];
*$arItem["ID"] - ID товара
Код для быстрой вставки:
<? //Каталог товаров (catalog.section)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CatalogBonus($arResult);
?>
<? if($arBonus[$arItem["ID"]]["VIEW_BONUS"] > 0) {?>
<div class="bonus">+ <?=$arBonus[$arItem["ID"]]["VIEW_BONUS"]?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?></div>
<? }?>
Вывод бонусов в карточке товара:
$arBonus = cHelperCalc::CatalogBonus($arResult);
$arBonus[$arResult["ID"]]["VIEW_BONUS"];
Код для быстрой вставки:
<? //Карточка товара (catalog.element)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CatalogBonus($arResult);
?>
<? if($arBonus[$arResult["ID"]]["VIEW_BONUS"] > 0) {?>
<div class="bonus">+ <?=$arBonus[$arResult["ID"]]["VIEW_BONUS"]?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?></div>
<? }?>
Вывод бонусов в корзине:
$arBonus = cHelperCalc::CartBonus($arResult["ITEMS"]["AnDelCanBuy"]);
//За единицу товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];
//За все количество товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];
//За всю корзину
$arBonus["ALL_BONUS"];
Код для быстрой вставки:
<? //В корзине bitrix:sale.basket.basket
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CartBonus($arResult["ITEMS"]["AnDelCanBuy"]);
?>
<? //За единицу товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<? //За все количество товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<? //За всю корзину
if($arBonus["ALL_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ALL_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
Вывод бонусов на странице оформления заказа:
$arBonus = cHelperCalc::CartBonus($arResult["BASKET_ITEMS"]);
//За единицу товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];
//За все количество товара
$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];
//За всю корзину
$arBonus["ALL_BONUS"];
Код для быстрой вставки:
<? //На страницу оформления заказа (sale.order.ajax / шаблон / summary.php)
CModule::IncludeModule('logictim.balls');
$arBonus = cHelperCalc::CartBonus($arResult["BASKET_ITEMS"]);
?>
<?
//За единицу товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS_UNIT"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<?
//За все количество товара
if($arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ITEMS"][$arItem["PRODUCT_ID"]]["ADD_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
<?
//За всю корзину
if($arBonus["ALL_BONUS"] > 0) {?>
<div class="bonus">
+ <?=$arBonus["ALL_BONUS"];?> <?=COption::GetOptionString("logictim.balls", "TEXT_BONUS_FOR_ITEM", '')?>
</div>
<? }?>
Вывод бонусов в любом компоненте с товарами:
Осуществляется аналогично списку товаров.
Получить количество бонусов пользователя
$userBonus = cHelper::UserBallance($user_id);
$user_id - id пользователя. Может быть пустым, тогда вернет бонусы текущего пользователя.
В php 7.1 и выше обязательно передавать хотябы пустое значение, например так:
$userBonus = cHelper::UserBallance('');
Перед использованием класса не забывайте подключать модуль.
Определение доступности бонусной системы для пользователя, учитывая настройки
$userDostup = cHelper::UserBonusSystemDostup($user_id);
$user_id - id пользователя. Может быть пустым, тогда вернет информацию по текущему пользователю.
Возвращаемые значения: Y или N
В php 7.1 и выше обязательно передавать хотябы пустое значение, например так:
$userDostup = cHelper::UserBonusSystemDostup('');
Перед использованием класса не забывайте подключать модуль.
Добавление бонусов пользователю
Метод начисляет бонусы пользователи, и создает операцию начисления в истории
//Пример начисления 10-ти бонусов
$arFields = array(
"ADD_BONUS" => 10,
"USER_ID" => 1,
"OPERATION_TYPE" => 'USER_BALLANCE_CHANGE',
"OPERATION_NAME" => 'Начисление для теста',
"ORDER_ID" => '2',
"DETAIL_TEXT" => 'Описание',
"MAIL_EVENT" => array(
"EVENT_NAME" => "LOGICTIM_BONUS_FROM_REPOST",
"CUSTOM_FIELDS" => array(
"TEST_1" => 'Тестовое поле 1',
"TEST_2" => 'Тестовое поле 2',
)
)
);
logictimBonusApi::AddBonus($arFields);
Описание параметров:
"ADD_BONUS" - Сколько бонусов начислить
"USER_ID" - ID пользователя, которому начислить бонусы
"OPERATION_NAME" - Название для сохранения операции.
"OPERATION_TYPE" - Тип операции (код значения свойства "Тип операции" из инфоблока "История операций бонусной системы"). Можно добавлять свои значения, при обновлении модуля изменения не затрутся.
"ORDER_ID" - ID заказа, за который начисляются бонусы. Не обязательный параметр. Указывается в случае начисления по конкретному заказу.
"DETAIL_TEXT" - Детальное описание операции начисления
"MAIL_EVENT" - Массив для создания почтового события после начисления бонусов (если есть параметр, то производится отправка сообщения о начислении)
"EVENT_NAME" - Код почтового события
"CUSTOM_FIELDS" - массив для передачи любых переменных в почтовый шаблон
Если у вас используется не стандартный компонент, или шаблон оформления заказа: