Разработка функционала рассрочки на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка функционала рассрочки на 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • 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С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка функционала рассрочки на 1С-Битрикс

Рассрочка — это возможность клиента оплатить товар частями без процентов (в отличие от кредита). Финансовую сторону обеспечивает банк или сам магазин (собственная рассрочка). С технической стороны в 1С-Битрикс нужно реализовать расчёт, отображение условий, оформление и контроль выплат.

Два варианта рассрочки

1. Банковская рассрочка (через банковский виджет). Банк (Тинькофф, Халва, Сбербанк BNPL) предоставляет SDK/виджет — покупатель оформляет рассрочку прямо на сайте. Магазин получает полную сумму сразу, банк взимает комиссию. Техническая задача — интеграция с API банка и встраивание кнопки «Купить в рассрочку».

2. Собственная рассрочка магазина. Магазин сам разбивает платёж на части и контролирует выплаты. Сложнее технически, но нет комиссий банку. Нужно хранить график платежей и напоминать клиентам.

Интеграция банковской рассрочки

Рассмотрим на примере Тинькофф Рассрочка («Долями»):

Шаг 1: Кнопка на карточке товара.

// Виджет Тинькофф
TinkoffCredit.request({
    shopId: '12345',
    showcaseId: '67890',
    items: [{
        name: productName,
        quantity: 1,
        price: productPrice,
    }],
    sum: productPrice,
    orderNumber: 'PRE-' + Date.now(),
});

Шаг 2: Оформление заказа в Битрикс. При успешном решении банка — создать заказ через \Bitrix\Sale\Order::create(), привязать платёжную систему «Тинькофф Рассрочка», сохранить loan_id от банка в свойстве заказа.

Шаг 3: Webhook от банка. Банк уведомляет о финальном решении (одобрено/отклонено) и о выплате магазину. Обработчик webhook обновляет статус заказа.

Для интеграции Халвы (Совкомбанк), Сплита ВТБ — аналогичная схема, но другой API.

Собственная рассрочка: архитектура

Хранение данных. Таблица 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',
        ]);
    }
}

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

На странице товара — блок «Купить в рассрочку»:

Стоимость: 30 000 руб.
Рассрочка на 6 месяцев:
├── Первый взнос: 5 000 руб. (сегодня)
└── 5 платежей по 5 000 руб. каждые 30 дней

Динамический расчёт при выборе количества месяцев — через AJAX-запрос к эндпоинту расчёта:

// /local/ajax/installment_calc.php
$price = (float)$_POST['price'];
$months = (int)$_POST['months'];
$downPercent = 0.2; // 20% первый взнос
$down = round($price * $downPercent, 2);
$monthly = round(($price - $down) / ($months - 1), 2);
echo json_encode(['down' => $down, 'monthly' => $monthly]);

Контроль платежей и просрочки

Агент или 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/ показывает:

  • Активные рассрочки с прогрессом выплат.
  • График предстоящих платежей.
  • Историю оплаченных частей.
  • Ссылку на оплату ближайшего платежа.

Сроки разработки

Вариант Состав Срок
Интеграция банковского виджета Тинькофф или Халва, кнопка + webhook 3-5 дней
Собственная рассрочка Хранение, график, ЛК, уведомления 8-12 дней
Полная система Банковская + своя + аналитика просрочек 12-16 дней