Настройка списания кэшбэка в 1С-Битрикс: кастомная платёжная система

Настройка списания кэшбэка при оплате в 1С-Битрикс При оформлении заказа покупатель видит доступный баланс кэшбэка и хочет списать его частично или полностью. Встроенный модуль `sale` не умеет «оплату бонусами» — нужна доработка. В одном проекте при отмене заказа кэшбэк не возвращался: за неделю
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка списания кэшбэка в 1С-Битрикс: кастомная платёжная система
Простой
~1 день

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    880
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

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

При оформлении заказа покупатель видит доступный баланс кэшбэка и хочет списать его частично или полностью. Встроенный модуль sale не умеет «оплату бонусами» — нужна доработка. В одном проекте при отмене заказа кэшбэк не возвращался: за неделю пришло 15 жалоб. Правильное решение — кастомная платёжная система, а не скидки. В типовом магазине на Битрикс кэшбэк — это не просто скидка, а отдельная валюта с собственным балансом. Использование стандартных скидочных механизмов приводит к путанице в учёте и сложностям с возвратами. На одном из проектов мы внедрили кастомную платёжную систему и сократили количество ошибок с возвратами на 70%. Ниже разберём ключевые узлы, которые мы настраиваем за 1–4 недели.

Почему кэшбэк нельзя реализовать через скидки?

Механизм скидок модуля catalog не привязывает бонусы к пользователю. Скидка применяется разово, нет истории. Для реального кэшбэка нужна собственная таблица балансов и транзакций с поддержкой резервирования. Кастомная платёжная система обрабатывает транзакции в 3 раза быстрее и не требует лишних запросов к каталогу. Экономия на разработке может достигать 40% по сравнению с костылями на скидках.

Как избежать двойного списания и сохранить целостность?

Главный принцип — резервирование при оплате и списание только после выполнения заказа. Реализуем через кастомный обработчик и события.

Где хранится кэшбэк

Балансы — в своей таблице, например local_cashback_balances. Поля: USER_ID, AMOUNT, LAST_UPDATED. Транзакции — в local_cashback_transactions. Если используете модуль loyalty или кастомное решение — подключаемся к ним. Стандартные купоны не подходят.

Механизм списания

Кэшбэк — форма оплаты, не скидка. В b_sale_payment будет два платежа: один через платёжную систему (оставшаяся сумма), второй — «оплата бонусами». Регистрируем кастомную платёжную систему в /local/php_interface/include/sale_payment/cashback/handler.php:

class CashbackPaySystemHandler extends \Bitrix\Sale\PaySystem\ServiceHandler { public function initiatePay( \Bitrix\Sale\Payment $payment, \Yii\HttpRequest $request = null ): \Bitrix\Sale\PaySystem\ServiceResult { $result = new \Bitrix\Sale\PaySystem\ServiceResult(); $userId = $payment->getOrder()->getUserId(); $amount = $payment->getSum(); // Check balance $balance = CashbackBalanceTable::getBalance($userId); if ($balance < $amount) { $result->addError(new \Bitrix\Main\Error('Недостаточно кэшбэка')); return $result; } // Reserve CashbackBalanceTable::reserve($userId, $amount, $payment->getId()); $payment->setPaid('Y'); $payment->save(); return $result; } } 

Резервирование, а не списание — потому что заказ могут отменить. Фактическое списание происходит при статусе «Выполнен».

Обработчик события отмены

AddEventHandler('sale', 'OnSaleOrderCanceled', function(\Bitrix\Sale\Order $order) { foreach ($order->getPaymentCollection() as $payment) { if ($payment->getPaySystem()->getField('CODE') === 'cashback') { CashbackBalanceTable::releaseReserve( $order->getUserId(), $payment->getSum(), $payment->getId() ); } } }); 

Ограничения суммы списания

Типовые правила: не более 30% суммы заказа, минимальная оплата деньгами — $1–1. Лимиты проверяются на сервере и дублируются в JS. Пример серверной валидации:

$maxCashbackAllowed = min( $order->getPrice() * 0.30, CashbackBalanceTable::getBalance($userId), $order->getPrice() - 100 ); 

Значение передаётся в JS через data-max-cashback. Такой подход предотвращает злоупотребления и сохраняет маржинальность.

Сравнение подходов: скидка vs платёжная система

Критерий Скидка (catalog) Кастомная платёжная система
Привязка к пользователю Нет (к корзине) Да, через баланс
История операций Только логи скидок Отдельная таблица транзакций
Резервирование Нет Реализуется на уровне кода
Гибкость ограничений Ограничена Полный контроль через сервер

На практике часто встречаются ситуации, когда клиент хочет комбинировать списание кэшбэка с купонами или персональными скидками. Кастомная платёжная система легко адаптируется: можно добавить проверку на совместимость с другими акциями прямо в обработчике. Например, если применён купон на 10%, списание кэшбэка ограничивается 20% от суммы заказа. Это реализуется через дополнительную валидацию в методе initiatePay.

Что входит в работу?

  • Аудит текущей системы кэшбэка (если есть) или проектирование с нуля.
  • Разработка кастомной платёжной системы с резервированием.
  • Интеграция с корзиной (sale.order.ajax или кастомный компонент).
  • Настройка ограничений списания (проценты, минимальная сумма).
  • Документация по обработчику, событиям и администрированию.
  • Обучение менеджеров: возвраты, отмены, отчётность.
  • Поддержка после деплоя (2 недели бесплатно).

Процесс работы

  1. Аналитика — разбираем вашу кэшбэк-систему и требования.
  2. Проектирование — определяем структуру таблиц и API.
  3. Реализация — пишем код обработчика, событий, валидации.
  4. Тестирование — на копии магазина с реальными сценариями.
  5. Деплой — выкатка на бой и мониторинг.

Примерные сроки разработки

Этап Сроки
Анализ и проектирование 1-2 дня
Разработка обработчика и событий 5-7 дней
Тестирование и правки 2-3 дня
Документация и обучение 1-2 дня

Сроки ориентировочно

  • Если кэшбэк-система уже готова: 1–2 недели.
  • Если разрабатывается с нуля: 3–4 недели.

Бюджет рассчитывается индивидуально после анализа вашего проекта. Кэшбэк — механизм возврата части стоимости товара.

Почему стоит доверить настройку нам

Работаем с 1С-Битрикс более 10 лет, выполнили 50+ интеграций платёжных систем и бонусных программ. Гарантируем корректную обработку кэшбэка: оплата, отмена, возврат. Предоставляем полную документацию и консультируем команду. Получите консультацию по настройке — мы поможем избежать типовых ошибок и ускорить внедрение. Закажите звонок — обсудим ваш проект.