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

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

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

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

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

  • 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С-Бітриксі потрібно реалізувати розрахунок, відображення умов, оформлення та контроль виплат.

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

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 оновлює статус замовлення.

Для інтеграції Халви (Совкомбанк), Splitu ВТБ — аналогічна схема, але інший 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 днів