Разработка функционала рассрочки на 1С-Битрикс: от банковского виджета до собственного модуля
Клиенты всё чаще отказываются от покупки, если нет рассрочки. Стандартные инструменты Битрикс не дают такого функционала — приходится разрабатывать собственный модуль или интегрировать банковский виджет. Мы предлагаем оба варианта: от быстрой встройки Тинькофф или Халвы до полноценной системы с гибким графиком и контролем просрочек. В этой статье — архитектура, типовой код и практические рекомендации для разработчика.
Типичные боли при разработке: некорректное округление платежей, отсутствие синхронизации с 1С через CommerceML, просрочки без уведомлений. Мы закрываем каждую из них проверенными решениями. Например, округление корректируется переносом копеек на последний платёж — точная математика без потерь. После внедрения рассрочки конверсия в покупку растёт на 15–25%, а средний чек увеличивается на 30%. Наши решения прошли нагрузочное тестирование на каталогах до 200 000 товаров — система стабильно работает под пиковыми нагрузками.
Как разработать функционал рассрочки на 1С-Битрикс?
Сравним два подхода. Банковский виджет (3-5 дней) подходит для быстрого старта и не требует сложной бухгалтерии. Собственная рассрочка (8-12 дней) — для магазинов с оборотом от $90k–130k./мес, где комиссия банка становится существенной (часто 5-7%). Собственная система окупается за 2-3 месяца за счёт отсутствия комиссий. Экономия на комиссиях может достигать 7% от оборота — при обороте $90k–130k это сотни тысяч в год.
Как интегрировать банковскую рассрочку?
Рассмотрим интеграцию с Тинькофф Рассрочка (сервис «Долями»). Банк предоставляет JavaScript-виджет, который встраивается в карточку товара. После оплаты банк присылает webhook с результатом.
Пример кода для обработки webhook на PHP:
$input = json_decode(file_get_contents('php://input'), true); if ($input['status'] === 'approved') { $orderId = (int)$input['orderReference']; $loanId = (int)$input['loanId']; \Bitrix\Sale\Order::load($orderId)->setField('STATUS_ID', 'PAID')->save(); } Процесс интеграции состоит из следующих шагов:
- Установите кнопку на карточку товара с помощью JavaScript-виджета.
- При успешном ответе банка создайте заказ через
\Bitrix\Sale\Order::create(), привяжите платёжную систему и сохранитеloan_idот банка в свойстве заказа. - Настройте обработку webhook от банка для обновления статуса заказа.
Что такое собственная рассрочка и как её реализовать?
Собственная рассрочка не требует банка — магазин сам разбивает сумму на части. Для хранения данных нужны две таблицы.
Таблица b_local_installment_plan:
| Поле | Описание |
|---|---|
| ID | Первичный ключ |
| ORDER_ID | Привязка к заказу Битрикс |
| USER_ID | Клиент |
| TOTAL_AMOUNT | Полная сумма |
| DOWN_PAYMENT | Первый взнос |
| INSTALLMENTS_COUNT | Количество частей |
| INSTALLMENT_AMOUNT | Сумма каждой части |
| CURRENCY | Валюта |
| STATUS | ACTIVE, COMPLETED, OVERDUE, CANCELLED |
Таблица b_local_installment_payment — график платежей:
| Поле | Описание |
|---|---|
| PLAN_ID | Ссылка на план |
| PAYMENT_NUMBER | Номер платежа (1, 2, 3...) |
| DUE_DATE | Дата платежа |
| AMOUNT | Сумма |
| STATUS | PENDING, PAID, OVERDUE |
| PAID_AT | Фактическая дата оплаты |
Как рассчитать график платежей?
function createInstallmentSchedule(int $planId, float $totalAmount, float $downPayment, int $installmentsCount): void { $remainingAmount = $totalAmount - $downPayment; $installmentAmount = round($remainingAmount / $installmentsCount, 2); // Корректировка округления на последний платёж $lastPaymentAmount = $remainingAmount - ($installmentAmount * ($installmentsCount - 1)); for ($i = 1; $i <= $installmentsCount; $i++) { $dueDate = (new DateTime())->modify('+' . ($i * 30) . ' days'); InstallmentPaymentTable::add([ 'PLAN_ID' => $planId, 'PAYMENT_NUMBER' => $i, 'DUE_DATE' => $dueDate, 'AMOUNT' => ($i === $installmentsCount) ? $lastPaymentAmount : $installmentAmount, 'STATUS' => 'PENDING', ]); } } Отображение в карточке товара и корзине
На странице товара показываем блок с условиями:
Стоимость: $270–390. Рассрочка на 6 месяцев: ├── Первый взнос: $45–65. (сегодня) └── 5 платежей по $45–65. каждые 30 дней Динамический расчёт при выборе количества месяцев — через AJAX. Эндпоинт вычисляет первый взнос (20%) и сумму ежемесячного платежа, возвращает JSON.
Контроль платежей и просрочки
Агент или cron ежедневно проверяет просроченные платежи:
$overdue = InstallmentPaymentTable::getList([ 'filter' => ['STATUS' => 'PENDING', '<DUE_DATE' => new DateTime()], ])->fetchAll(); foreach ($overdue as $payment) { InstallmentPaymentTable::update($payment['ID'], ['STATUS' => 'OVERDUE']); // Уведомить клиента sendOverdueNotification($payment); // Если просрочка > 30 дней — эскалация менеджеру } Личный кабинет клиента
Страница /personal/installments/ показывает:
- Активные рассрочки с прогрессом выплат.
- График предстоящих платежей.
- Историю оплаченных частей.
- Ссылку на оплату ближайшего платежа.
Что входит в работу (deliverables)
- Техническое задание и архитектурная документация.
- Исходный код модуля с комментариями.
- Инструкция по эксплуатации для администратора.
- Обучение менеджеров работе с рассрочкой (30 мин).
- 2 недели технической поддержки после запуска.
- Нагрузочное тестирование на вашем каталоге.
Сроки разработки
| Вариант | Состав | Срок |
|---|---|---|
| Интеграция банковского виджета | Тинькофф или Халва, кнопка + webhook | 3-5 дней |
| Собственная рассрочка | Хранение, график, ЛК, уведомления | 8-12 дней |
| Полная система | Банковская + своя + аналитика просрочек | 12-16 дней |
Преимущества работы с нами
Мы — сертифицированные партнёры 1С-Битрикс с опытом более 5 лет. Наши решения прошли нагрузочное тестирование на каталогах до 200 000 товаров. Средний срок интеграции — 4 дня. Конверсия в покупку растет на 15-25% после внедрения рассрочки. Банковский виджет в 3 раза быстрее внедряется, но собственная рассрочка даёт полный контроль над деньгами.
Согласно документации CommerceML, это стандарт обмена данными с 1С. Наши модули корректно синхронизируют платежи и статусы рассрочки через этот протокол.
Закажите консультацию по внедрению рассрочки уже сегодня. Пишите — оценим ваш проект за один рабочий день. Мы выполнили более 50 проектов по рассрочке, и средний срок интеграции составляет 4 дня. Свяжитесь с нами, чтобы обсудить ваш проект.







