Налаштування відображення умов розстрочки у картці товару 1С-Бітрікс

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

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

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

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

  • 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С-Бітрікс

Розстрочка на сторінці товару — це розрахунок щомісячного платежу та відображення умов партнера (банку або BNPL-сервісу) прямо в картці. Реалізується через зберігання параметрів розстрочки та розрахунок на фронтенді або сервері.

Звідки беруться умови розстрочки

Два основних сценарії:

Сценарій 1 — фіксовані партнери. У магазину договір з одним-двома банками, умови відомі заздалегідь (відсоток, строки, мінімальна сума). Дані зберігаються в налаштуваннях сайту або окремому інфоблоці.

Сценарій 2 — динамічні умови через API. Банк/BNPL-партнер надає API, звідки запитуються актуальні умови для конкретної суми. Приклад: Тінькофф Розстрочка, Халва, Сплит.

Зберігання умов партнерів у Бітріксі

Для фіксованих умов створюєте HL-інфоблок InstallmentPlans:

Поле Тип Опис
UF_PARTNER Рядок Назва партнера
UF_LOGO Файл Логотип
UF_MIN_AMOUNT Дробове Мінімальна сума товару
UF_MONTHS Рядок Доступні строки (6,10,12,24)
UF_RATE Дробове Ставка (0 для безвідсоткової)
UF_ACTIVE Прапор Чи активний план

Розрахунок щомісячного платежу

Для безвідсоткової розстрочки (rate = 0):

monthly = price / months

Для розстрочки з відсотковою ставкою (ануїтетний платіж):

monthly = price * (rate/12) / (1 - (1 + rate/12)^(-months))

PHP-реалізація розрахунку:

function calcInstallment(float $price, int $months, float $annualRate): float {
    if ($annualRate <= 0) {
        return $price / $months;
    }
    $r = $annualRate / 12 / 100;
    return $price * $r / (1 - pow(1 + $r, -$months));
}

JavaScript для динамічного перерахунку при зміні строку:

function calcInstallment(price, months, annualRate) {
    if (annualRate <= 0) return price / months;
    const r = annualRate / 12 / 100;
    return price * r / (1 - Math.pow(1 + r, -months));
}

document.querySelectorAll('.installment-months').forEach(btn => {
    btn.addEventListener('click', () => {
        const months = parseInt(btn.dataset.months);
        const rate = parseFloat(btn.dataset.rate);
        const price = parseFloat(document.querySelector('[data-price]').dataset.price);
        const monthly = calcInstallment(price, months, rate);
        document.querySelector('.monthly-payment').textContent =
            monthly.toFixed(2).replace('.', ',') + ' грн/міс.';
    });
});

Виведення блоку в картці товару

У шаблоні catalog.element додаєте блок після ціни:

// Завантажуємо плани розстрочки, що підходять за сумою
$price = (float)$arResult['CATALOG_PRICE_1'];

$plans = \Local\Installment\InstallmentPlanTable::getList([
    'filter' => [
        '=UF_ACTIVE' => true,
        '<=UF_MIN_AMOUNT' => $price,
    ],
    'order' => ['UF_MIN_AMOUNT' => 'ASC'],
])->fetchAll();

HTML-блок умов — список партнерів з їхніми логотипами та кнопками вибору строку. Кожен партнер показує мінімальний щомісячний платіж (за максимальним строком).

Інтеграція з API банку

Якщо партнер надає API розрахунку (наприклад, Тінькофф):

// Кешуємо відповідь API на 10 хвилин, щоб не смикати при кожному відкритті картки
$cacheKey = 'installment_' . (int)$price;
$cache = \Bitrix\Main\Data\Cache::createInstance();

if ($cache->initCache(600, $cacheKey, '/installment/')) {
    $data = $cache->getVars();
} else {
    $data = \Local\Installment\TinkoffApiClient::getPlans($price);
    $cache->startDataCache();
    $cache->endDataCache($data);
}

На що звернути увагу

  • Для товарів дешевше мінімального порога партнера блок розстрочки не показуєте взагалі
  • Юридичні тексти («розстрочка надається банком-партнером») виводьте поряд із блоком
  • При зміні ціни через JS (вибір комплектації) перераховуйте розстрочку теж
Етап Час
Сховище умов партнерів 1–2 год
Розрахунок платежів (PHP + JS) 2–3 год
Блок у картці товару 3–4 год
Інтеграція з API банку (опційно) 4–8 год