Настройка начисления кэшбэка за покупки 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка начисления кэшбэка за покупки 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка начисления кэшбэка за покупки 1С-Битрикс

Начисление кэшбэка — это один из компонентов кэшбэк-системы, который можно настроить даже без полноценной кастомной разработки. Битрикс имеет встроенный механизм бонусных баллов через модуль sale. Если требования простые (фиксированный процент на все покупки, без категорийных правил), это можно запустить через стандартный инструментарий.

Встроенный механизм бонусов Битрикс

Битрикс хранит бонусные баллы в таблицах:

  • b_sale_user_account — счёт пользователя
  • b_sale_account_user_balance — баланс по счёту

Управление через \Bitrix\Sale\PersonalBonus (D7) или CSaleUserAccount (старое API).

Настройка в административной панели: Магазин → Накопительные скидки → Бонусы.

Начисление через событие оплаты заказа

Если стандартный механизм не устраивает, программное начисление:

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnSaleOrderPaid',
    function (\Bitrix\Main\Event $event) {
        $order   = $event->getParameter('ENTITY');
        $userId  = $order->getUserId();
        $total   = $order->getPrice();

        // Процент кэшбэка из настроек
        $percent = (float)\Bitrix\Main\Config\Option::get(
            'local.cashback', 'base_percent', '3'
        );

        $cashback = round($total * $percent / 100, 2);
        if ($cashback <= 0) {
            return;
        }

        \Local\Cashback\AccountManager::earn(
            $userId,
            $cashback,
            "Кэшбэк {$percent}% за заказ #{$order->getId()}",
            $order->getId()
        );
    }
);

Начисление только для подтверждённых заказов

Чтобы не начислять кэшбэк за возвращённые заказы, используем двухшаговое начисление:

  1. При создании заказа — транзакция со статусом pending
  2. При переводе в статус «Выполнен» — подтверждение (статус confirmed)
  3. При отмене — аннулирование pending-транзакций
// Подтверждение начисления при выполнении заказа
$em->addEventHandler('sale', 'OnSaleOrderStatusChange', function ($event) {
    $order = $event->getParameter('ENTITY');
    if ($order->getField('STATUS_ID') === 'F') {
        \Local\Cashback\AccountManager::confirmByOrderId($order->getId());
    } elseif ($order->getField('STATUS_ID') === 'X') {
        \Local\Cashback\AccountManager::cancelByOrderId($order->getId());
    }
});

Отображение кэшбэка на карточке товара

Покупатель видит «Вы получите 45 руб. кэшбэка» до оформления заказа — это увеличивает конверсию.

// В шаблоне карточки товара
$price   = \CPrice::GetBasePrice($elementId);
$percent = (float)\Bitrix\Main\Config\Option::get('local.cashback', 'base_percent', '3');
$cashbackPreview = $price ? round($price['PRICE'] * $percent / 100, 0) : 0;
<?php if ($cashbackPreview > 0): ?>
<div class="cashback-preview">
    Кэшбэк: <strong><?= $cashbackPreview ?> руб.</strong>
</div>
<?php endif; ?>

Исключения из начисления

Товары, категории или бренды, на которые кэшбэк не начисляется (уже акционные позиции, товары с нулевой маржей):

function isExcludedFromCashback(int $productId): bool
{
    $props = \CIBlockElement::GetProperty(
        CATALOG_IBLOCK_ID, $productId,
        [], ['CODE' => 'CASHBACK_EXCLUDED']
    )->Fetch();

    return $props && $props['VALUE'] === 'Y';
}

Свойство CASHBACK_EXCLUDED типа «Да/Нет» добавляется в каталог и выставляется менеджером вручную или при импорте из 1С.

Сроки настройки

Обработчик события оплаты с начислением, двухшаговое подтверждение, отображение кэшбэка на карточке товара, исключения — 1–2 рабочих дня.