Налаштування нарахування кешбеку за покупки 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування нарахування кешбеку за покупки 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування нарахування кешбеку за покупки 1С-Бітрікс

Нарахування кешбеку — це один із компонентів кешбек-системи, який можна налаштувати навіть без повноцінної кастомної розробки. 1С-Бітрікс має вбудований механізм бонусних балів через модуль sale. Якщо вимоги прості (фіксований відсоток на всі покупки, без категорійних правил), це можна запустити через стандартний інструментарій.

Вбудований механізм бонусів 1С-Бітрікс

1С-Бітрікс зберігає бонусні бали в таблицях:

  • 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 робочі дні.