+7 (843) 212-62-17 - Казань
+7 (843) 212-62-17 - Казань

API модуля бонусной системы

Информация для разработчиков, и интеграторов

Для вывода бонусов в любом месте, необходимо:

Подключение модуля:
Старый вариант:

CModule::IncludeModule('logictim.balls');
Вариант для D7:
use Bitrix\Main\Loader;
Loader::includeModule("logictim.balls"); 

 

Получить количество бонусов пользователя

$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" - массив для передачи любых переменных в почтовый шаблон

 

Списание бонусов у пользователя
Метод списывает бонусы у пользователя, и создает операцию в истории
Метод учитывает доступность бонусной системы для пользователя, и настройки модуля (дополнительные проверки не требуются)
Возвращает ID операции, или текст ошибки.

//Пример списания 10-ти бонусов
$arFields = array(
                  "MINUS_BONUS" => 10,
                  "USER_ID" => 1,
                  "OPERATION_TYPE" => 'USER_BALLANCE_CHANGE',
                  "OPERATION_NAME" => 'Списание для теста',
                  "ORDER_ID" => '',
                  "DETAIL_TEXT" => 'Описание',
                  "MAIL_EVENT" => array(
                                      "EVENT_NAME" => "КОД ПОЧТОВОГО СОБЫТИЯ БИТРИКС",
                                      "CUSTOM_FIELDS" => array(
                                                              "TEST_1" => 'Тестовое поле 1',
                                                              "TEST_2" => 'Тестовое поле 2',
                                                              )
                                        )
				);

logictimBonusApi::MinusBonus($arFields);

Описание параметров:
"MINUS_BONUS" - Сколько бонусов списать
"USER_ID" - ID пользователя, у которого списать бонусы
"OPERATION_NAME" - Название для сохранения операции.
"OPERATION_TYPE" - Тип операции (код значения свойства "Тип операции"  из инфоблока "История операций бонусной системы"). Можно добавлять свои значения, при обновлении модуля изменения не затрутся.
"ORDER_ID" - ID заказа, за который списываются бонусы. Не обязательный параметр. Указывается в случае списания по конкретному заказу.
"DETAIL_TEXT" - Детальное описание операции начисления
"MAIL_EVENT" - Массив для создания почтового события после начисления бонусов (если есть параметр, то производится отправка сообщения о начислении)
"EVENT_NAME" - Код почтового события
"CUSTOM_FIELDS" - массив для передачи любых переменных в почтовый шаблон

 

Событие для возможности изменения начисляемых по заказу бонусов.
Событие позволяет вклиниться в расчет бонусов, которые будут начислены за заказ, и изменить начисляемую сумму.
Срабатывает после расчета бонусов, исходя из настроек модуля:
- на странице корзины
- на странице оформления заказа
- при начислении бонусов по заказу

Пример события, при котором от суммы товаров в заказе начисляются дополнительные бонусы (код вставлять в init.php):

\Bitrix\Main\EventManager::getInstance()->addEventHandler("logictim.balls", "AfterCalculateOrderBonus", "Test");
function Test(\Bitrix\Main\Event $event)
{
$arBonus = $event->getParameters();
//echo '<pre>'; print_r($arBonus); echo '</pre>';
if($arBonus["ORDER_INFO"]["CART_SUM"] >= 1500 && $arBonus["ORDER_INFO"]["CART_SUM"] < 3000)
$arBonus["ALL_BONUS"] = $arBonus["ALL_BONUS"] + 150;
elseif($arBonus["ORDER_INFO"]["CART_SUM"] >= 3000 && $arBonus["ORDER_INFO"]["CART_SUM"] < 7000)
$arBonus["ALL_BONUS"] = $arBonus["ALL_BONUS"] + 300;
elseif($arBonus["ORDER_INFO"]["CART_SUM"] >= 7000 && $arBonus["ORDER_INFO"]["CART_SUM"] < 15000)
$arBonus["ALL_BONUS"] = $arBonus["ALL_BONUS"] + 700;
elseif($arBonus["ORDER_INFO"]["CART_SUM"] >= 15000)
$arBonus["ALL_BONUS"] = $arBonus["ALL_BONUS"] + 1500;

$result = new Bitrix\Main\EventResult($event->getEventType(), $arBonus);
return $result;

}

В приведенном примере, к сумме бонусов, начисляемых по заказу, прибавляется дополнительный бонус в зависимости от суммы корзины.
Имеющиеся параметры можно посмотреть, выведя массив $arBonus. В указанном массиве все интуитивно понятно.
Если требуются дополнительные параметры, сообщайте в тех поддержку, добавим при наличии технической возможности.