Разработка калькулятора рассрочки на 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С-Битрикс

Рассрочка — маркетинговый инструмент, а не финансовый продукт. Принципиальное отличие от кредита: нет процентов для покупателя (они либо отсутствуют, либо компенсируются продавцом банку). Калькулятор рассрочки проще математически, но сложнее логически: нужно отразить разные периоды рассрочки, условия досрочного погашения, возможные комиссии за оформление.

Механика рассрочки

В классической рассрочке без переплаты:

Ежемесячный платёж = Стоимость товара ÷ Количество месяцев

Продавец компенсирует банку разницу за счёт своей маржи или специального договора с банком-партнёром.

В рассрочке «0-0-24» (0% первый взнос, 0% ставка, 24 месяца) — скрытые условия часто включают обязательное страхование или комиссию за ведение счёта. Калькулятор должен показывать реальную итоговую сумму.

PHP-реализация расчёта

namespace MyProject\Services;

class InstallmentCalculator
{
    /**
     * @param float  $amount      Стоимость товара/услуги
     * @param int    $months      Срок рассрочки
     * @param float  $downPayment Первоначальный взнос (0 если нет)
     * @param float  $bankRate    Реальная ставка банка (компенсируется продавцом)
     * @param float  $commission  Единовременная комиссия (0 если нет)
     */
    public static function calculate(
        float $amount,
        int   $months,
        float $downPayment = 0,
        float $bankRate    = 0,
        float $commission  = 0
    ): array {
        $loanAmount      = $amount - $downPayment;
        $commissionFixed = $amount * ($commission / 100);

        if ($bankRate == 0) {
            // Классическая беспроцентная рассрочка
            $monthlyPayment = $loanAmount / $months;
            $totalPayment   = $loanAmount + $commissionFixed;
            $overpayment    = $commissionFixed;
        } else {
            // Рассрочка с фактической ставкой (оплачивает продавец, не покупатель)
            $monthlyRate    = $bankRate / 12 / 100;
            $monthlyPayment = $loanAmount * $monthlyRate
                * pow(1 + $monthlyRate, $months)
                / (pow(1 + $monthlyRate, $months) - 1);
            $totalPayment   = $monthlyPayment * $months + $commissionFixed;
            $overpayment    = $totalPayment - $loanAmount;
        }

        return [
            'down_payment'    => round($downPayment, 2),
            'loan_amount'     => round($loanAmount, 2),
            'monthly_payment' => round($monthlyPayment, 2),
            'commission'      => round($commissionFixed, 2),
            'total_payment'   => round($totalPayment, 2),
            'overpayment'     => round($overpayment, 2),
            'months'          => $months,
            'is_zero_percent' => ($overpayment == 0 || $overpayment == $commissionFixed),
        ];
    }
}

Конфигурация вариантов рассрочки

Магазины работают с несколькими банками-партнёрами, каждый предлагает разные условия. Хранение в HL-блоке InstallmentPrograms:

Поле Описание
UF_BANK_NAME Банк-партнёр
UF_MONTHS Срок рассрочки
UF_DOWN_PAYMENT_PCT Минимальный первый взнос (%)
UF_COMMISSION_PCT Комиссия за оформление (%)
UF_MIN_AMOUNT Минимальная сумма покупки
UF_MAX_AMOUNT Максимальная сумма
UF_CATEGORIES Категории товаров (можно не везде)

При выборе суммы калькулятор автоматически отображает доступные программы рассрочки.

UX: отображение вариантов

Интерфейс показывает таблицу сравнения вариантов:

function renderInstallmentTable(programs, amount) {
    const rows = programs
        .filter(p => amount >= p.min_amount && amount <= p.max_amount)
        .map(p => {
            const calc = calcInstallment(amount, p.months, p.down_pct, p.commission_pct);
            return `
                <tr>
                    <td>${p.bank_name}</td>
                    <td>${p.months} мес.</td>
                    <td>${formatMoney(calc.down_payment)} (${p.down_pct}%)</td>
                    <td>${formatMoney(calc.monthly_payment)}/мес.</td>
                    <td>${calc.overpayment > 0 ? formatMoney(calc.overpayment) : '0 ₽'}</td>
                    <td><button onclick="selectProgram(${p.id})">Выбрать</button></td>
                </tr>
            `;
        });

    document.getElementById('installment-table').innerHTML = rows.join('');
}

Интеграция с корзиной Битрикс

Для интернет-магазинов калькулятор рассрочки встраивается в страницу товара и корзину. Выбранный вариант рассрочки сохраняется в свойствах заказа:

// Сохранение выбранной программы рассрочки в свойство заказа
$order = \Bitrix\Sale\Order::load($orderId);
$propertyCollection = $order->getPropertyCollection();

$installmentProp = $propertyCollection->getItemByOrderPropertyCode('INSTALLMENT_PROGRAM');
if ($installmentProp) {
    $installmentProp->setValue(json_encode([
        'bank'    => $bankName,
        'months'  => $months,
        'payment' => $monthlyPayment,
    ]));
}

$order->save();

Виджет рассрочки в карточке товара

Минимальный платёж показывается прямо на странице товара — это стандартная практика e-commerce:

// В шаблоне товара
$minMonthlyPayment = InstallmentCalculator::getMinMonthlyPayment(
    $arResult['ITEM_PRICES'][0]['PRICE'],
    $availablePrograms
);

if ($minMonthlyPayment) {
    echo "от {$minMonthlyPayment} ₽/мес. в рассрочку";
}

Сроки

Задача Срок
Базовый калькулятор рассрочки (1–2 программы, страница товара) 3–5 дней
Калькулятор с несколькими банками, таблицей сравнения, интеграцией в корзину 1.5–2 недели
Полная система рассрочки с онлайн-заявкой в банк через API 3–6 недель

Калькулятор рассрочки снижает психологический барьер перед крупными покупками. Вместо «120 000 рублей сразу» клиент видит «5 000 рублей в месяц» — и это разные решения.