Налаштування оформлення замовлення на виплат 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С-Бітрікс

Розстрочка — це специфічний спосіб оплати, який вимагає більше даних від покупця, ніж звичайний чекаут. При оплаті карткою достатньо натиснути кнопку і ввести CVV. При розстрочці потрібні: паспортні дані, телефон для SMS-верифікації, іноді — другий документ. Завдання налаштування оформлення замовлення в розстрочку — вибудувати правильний флоу: показати розстрочку в потрібний момент, не перевантажити форму зайвими полями, коректно передати дані до банку.

Коли показувати розстрочку

Розстрочка має мінімальну суму замовлення (зазвичай 50–300 BYN/UAH). Показувати кнопку «Оформити в розстрочку» потрібно тільки коли сума кошика відповідає умовам. Це вирішується в методі isAvailable обробника платіжної системи.

На фронті — динамічне приховування/показ кнопок при зміні кошика:

document.addEventListener('basket:updated', function(e) {
    const total = e.detail.price;
    const minInstallment = window.INSTALLMENT_MIN_AMOUNT || 50;

    document.querySelectorAll('.installment-pay-btn').forEach(btn => {
        btn.style.display = total >= minInstallment ? 'inline-flex' : 'none';
    });

    if (total >= minInstallment) {
        document.getElementById('installment-monthly')
            .textContent = 'від ' + Math.ceil(total / 12) + ' грн/міс.';
    }
});

Флоу оформлення замовлення з розстрочкою

Стандартний чекаут 1С-Бітрікс (bitrix:sale.order.ajax) потрібно адаптувати під розстрочку. Два підходи:

Підхід 1: Єдиний чекаут з умовними полями. У формі замовлення присутні всі поля, але додаткові (для розстрочки) показуються тільки при виборі відповідного способу оплати:

BX.bind(document.getElementById('pay-system-select'), 'change', function() {
    const isInstallment = this.value === 'installment';
    document.getElementById('installment-fields-block').style.display =
        isInstallment ? 'block' : 'none';
    // Встановлюємо required для полів розстрочки
    document.querySelectorAll('.installment-required').forEach(el => {
        el.required = isInstallment;
    });
});

Підхід 2: Окрема сторінка підтвердження. Покупець оформлює замовлення стандартно, потім на сторінці оплати бачить кнопки: «Оплатити карткою» та «Оформити в розстрочку». При кліку на розстрочку — редирект на сторінку банку.

Підхід 2 простіший у реалізації і менше порушує користувацький досвід. Саме він найчастіше застосовується при інтеграції з білоруськими сервісами розстрочки (Халва, Черепаха, Магніт, Картка покупок).

Додаткові властивості замовлення для розстрочки

Для передачі даних до банку створюємо властивості замовлення через модуль sale:

// Програмно додаємо властивості замовлення для розстрочки
$propsToAdd = [
    'INSTALLMENT_TERM'       => ['NAME' => 'Термін розстрочки (міс.)', 'TYPE' => 'NUMBER'],
    'INSTALLMENT_PROVIDER'   => ['NAME' => 'Провайдер розстрочки', 'TYPE' => 'STRING'],
    'INSTALLMENT_APP_ID'     => ['NAME' => 'ID заявки в банку', 'TYPE' => 'STRING'],
    'INSTALLMENT_STATUS'     => ['NAME' => 'Статус розстрочки', 'TYPE' => 'STRING'],
];

foreach ($propsToAdd as $code => $params) {
    $prop = new \CSaleOrderProps();
    $prop->Add([
        'PERSON_TYPE_ID' => 1,
        'NAME'           => $params['NAME'],
        'TYPE'           => $params['TYPE'],
        'CODE'           => $code,
        'ACTIVE'         => 'Y',
        'USER_PROPS'     => 'N',
        'IS_LOCATION'    => 'N',
        'IS_EMAIL'       => 'N',
        'IS_NAME'        => 'N',
        'IS_PHONE'       => 'N',
        'SORT'           => 500,
    ]);
}

При створенні замовлення через розстрочку заповнюємо INSTALLMENT_TERM та INSTALLMENT_PROVIDER. При отриманні рішення від банку — INSTALLMENT_APP_ID і INSTALLMENT_STATUS.

Вибір терміну розстрочки в кошику

Перед переходом до оплати через розстрочку показуємо покупцеві вибір терміну:

// Компонент вибору умов розстрочки
$availableTerms = [
    ['months' => 6,  'monthly' => ceil($orderTotal / 6)],
    ['months' => 12, 'monthly' => ceil($orderTotal / 12)],
    ['months' => 24, 'monthly' => ceil($orderTotal / 24)],
];
<div class="installment-terms">
    <?php foreach ($availableTerms as $term): ?>
    <label class="term-option">
        <input type="radio" name="installment_months" value="<?= $term['months'] ?>">
        <span class="term-label">
            <strong><?= $term['months'] ?> місяців</strong>
            <span><?= $term['monthly'] ?> грн/міс.</span>
        </span>
    </label>
    <?php endforeach; ?>
</div>

Вибраний термін зберігається в сесії та передається в обробник платіжної системи через getBusinessValue.

Сторінка успішного оформлення

Після повернення з сайту банку (success_url) показуємо спеціальну сторінку «Заявку на розстрочку прийнято»:

  • Якщо банк схвалив миттєво — «Розстрочку оформлено, замовлення підтверджено»
  • Якщо розгляд займе час — «Заявка на розгляді. Ви отримаєте SMS про рішення»
  • Якщо відхилено — «Заявку відхилено. Ви можете обрати інший спосіб оплати» з кнопкою «Оплатити карткою»

Статус визначається з GET-параметра, який повертає банк, або з нашої БД (bl_mtbank_orders.status, bl_bnovo_reservations, залежно від провайдера).

Логування та моніторинг

Всі спроби оформлення розстрочки пишемо в лог bl_installment_log:

CREATE TABLE bl_installment_log (
    id          SERIAL PRIMARY KEY,
    order_id    INT NOT NULL,
    provider    VARCHAR(32) NOT NULL,   -- 'halva', 'karta_pokupok', 'cherepaha', 'magnit'
    amount      NUMERIC(12,2),
    term_months SMALLINT,
    status      VARCHAR(30),
    bank_app_id VARCHAR(128),
    created_at  TIMESTAMP DEFAULT NOW(),
    updated_at  TIMESTAMP DEFAULT NOW()
);

Це дає статистику: конверсія по кожному провайдеру, середній термін розстрочки, частка заявок за сумами.

Терміни

Етап Термін
Властивості замовлення та налаштування платіжних систем 1 день
Динаміка відображення кнопок розстрочки в кошику 1 день
Сторінка вибору терміну розстрочки 1 день
Сторінки success/fail з правильними статусами 1 день
Логування та звіт по конверсіях 1 день
Тестування повного флоу 1–2 дні
Разом 6–8 днів