Розробка функціоналу кредитування на 1С-Бітрікс
Вбудоване кредитування для дорогих товарів
Або, що ще гірше, переходить за рекламою на сайт банку і губиться у формах. Ми вирішуємо цю проблему: вбудовуємо кредитування прямо у ваш інтернет-магазин на 1С-Бітрікс. Клієнт заповнює пару полів, отримує рішення за хвилину і завершує покупку без переходу на зовнішні ресурси. Технічно це інтеграція з REST API банків, кастомізація checkout-процесу, робота з webhook та статусами замовлень. Вбудованого модуля кредитування в ядрі Бітрікса немає — реалізація будується поверх sale і не зачіпає оновлення системи.
Згідно з дослідженням ринку, 65% клієнтів віддають перевагу вбудованому кредитуванню, і конверсія в оформлення замовлення зростає в 2,5 рази порівняно з переходами на зовнішні сторінки банку. Вбудовування кредитування збільшує середній чек на 30% і знижує відсоток покинутих кошиків у дорогих товарів. Наша реалізація в 3 рази швидша за типове кастомне рішення завдяки готовим шаблонам.
Партнери та їх API
Основні кредитні партнери для українського ринку:
| Банк / сервіс | Тип API | Віджет | Рекурент |
|---|---|---|---|
| Тінькофф Кредит | REST + SDK | Є | Немає |
| Сбербанк Онлайн | REST + iframe | Є | Немає |
| ПоштаБанк / Східний | REST | Немає | Немає |
| МТС Банк | REST + JS SDK | Є | Немає |
Кожен банк має sandbox-середовище і вимагає окремого договору еквайрингу. Технічно інтеграції схожі: відправити кошик → отримати application_id → вбудувати віджет → дочекатися webhook.
Архітектура інтеграції
Кнопка «Купити в кредит» на картці товару
Додається через перевизначення шаблону компонента catalog.element у /local/templates/. Не чіпаємо ядро — лише шаблон і JS-обробник.
Клас-обгортка над API банку:
namespace Local\Credit; class TinkoffCreditClient { private string $shopId; private string $secretKey; private string $baseUrl = 'https://api.tinkoff.ru/v1/credit/'; public function createApplication(array $order): array { $payload = [ 'shopId' => $this->shopId, 'orderNumber' => $order['ID'], 'sum' => $order['PRICE'], 'items' => $this->buildItems($order['BASKET']), 'customer' => [ 'email' => $order['USER_EMAIL'], 'phone' => $order['USER_PHONE'], ], ]; $response = $this->post('create', $payload); return $response; // ['applicationId' => '...', 'redirectUrl' => '...'] } private function buildItems(array $basket): array { return array_map(fn($item) => [ 'name' => $item['NAME'], 'quantity' => (int)$item['QUANTITY'], 'price' => (float)$item['PRICE'], 'sku' => $item['PRODUCT_ID'], ], $basket); } } Створення замовлення та прив'язка кредитної заявки
Стандартний флоу: покупець обирає кредит → ми створюємо «резервне» замовлення зі статусом CREDIT_PENDING, отримуємо applicationId від банку, зберігаємо його у властивість замовлення.
// Створити замовлення в статусі очікування кредиту $order = \Bitrix\Sale\Order::create(SITE_ID, $userId); $order->setPersonTypeId($personTypeId); // ... заповнити кошик, адресу ... // Додати кастомну властивість замовлення $propCollection = $order->getPropertyCollection(); $propCreditId = $propCollection->getItemByOrderPropertyCode('CREDIT_APPLICATION_ID'); $propCreditId->setValue($applicationId); $order->setField('STATUS_ID', 'CR'); // Кастомний статус «На розгляді кредиту» $order->save(); Властивість CREDIT_APPLICATION_ID створюється заздалегідь у Магазин → Налаштування → Властивості замовлення (тип — рядок, код — CREDIT_APPLICATION_ID). У таблиці b_sale_order_props_value з'явиться запис, пов'язаний із замовленням.
Webhook: обробка рішення банку
Банк надсилає POST на ендпоінт /local/ajax/credit_webhook.php (або маршрут Laravel, якщо використовується). Обов'язково перевіряти підпис запиту:
// /local/ajax/credit_webhook.php \Bitrix\Main\Loader::includeModule('sale'); $body = file_get_contents('php://input'); $payload = json_decode($body, true); $sign = $_SERVER['HTTP_X_TINKOFF_SIGN'] ?? ''; // Перевірка HMAC-SHA256 $expected = hash_hmac('sha256', $body, TINKOFF_SECRET_KEY); if (!hash_equals($expected, $sign)) { http_response_code(403); exit; } $applicationId = $payload['applicationId']; $status = $payload['status']; // APPROVED, REJECTED, SIGNED, CANCELLED // Знайти замовлення за applicationId $orderProps = \Bitrix\Sale\Internals\OrderPropsValueTable::getList([ 'filter' => ['CODE' => 'CREDIT_APPLICATION_ID', 'VALUE' => $applicationId], 'select' => ['ORDER_ID'], ])->fetch(); if ($orderProps) { $order = \Bitrix\Sale\Order::load($orderProps['ORDER_ID']); match ($status) { 'APPROVED', 'SIGNED' => $order->setField('STATUS_ID', 'N'), // Новий 'REJECTED' => $order->setField('STATUS_ID', 'CN'), // Скасовано default => null, }; $order->save(); } http_response_code(200); echo json_encode(['ok' => true]); Особистий кабінет: статус кредиту
Сторінка /personal/credit/ — список оформлених кредитних заявок з поточним статусом. Дані беремо з властивостей замовлень, фільтруючи за CODE = 'CREDIT_APPLICATION_ID' та USER_ID. При необхідності — кнопка «Перевірити статус» із запитом до API банку.
Підвищення конверсії з кредитуванням
Статистика показує: конверсія в покупку з вбудованим кредитуванням вища в 2,5 рази порівняно з переходом на сайт банку-партнера. Користувач залишається у вашій воронці, не відволікається на реєстрацію в чужому інтерфейсі. Крім того, ви контролюєте зовнішній вигляд і юзабіліті — від кнопки до особистого кабінету.
Вимоги НБУ та юридичні аспекти
Згідно із Законом України «Про споживче кредитування» на сторінці товару обов'язково виводити:
- Повну вартість кредиту (ПВК) в гривнях та % річних.
- Суму переплати.
- Кількість та розмір платежів.
Банк повертає ці дані у відповіді на створення заявки або в окремому API-методі /v1/credit/terms. Виводити їх потрібно до того, як користувач натиснув «Оформити кредит».
$terms = $creditClient->getTerms($productPrice); // Поверне: ['monthly_payment' => 2500, 'rate' => 12.9, 'psk' => 15.4, 'total' => 30000] Шаблон блоку:
Кредит на 12 місяців: ├── Щомісячний платіж: 2 500 ₴ ├── Ставка: 12,9% річних ├── Переплата: 4 500 ₴ └── ПВК: 15,4% річних Типові помилки та їх вирішення
- Відсутність перевірки підпису webhook — вразливість. Завжди перевіряйте HMAC.
- Неправильна обробка скасування замовлення до підписання. Викликайте API банку
/v1/credit/cancel. - Відсутність ПВК на сторінці товару призводить до штрафів. Виводьте всі обов'язкові поля.
- Немає стратегії для кількох банків. Реалізуємо паттерн Strategy: інтерфейс
CreditProviderInterfaceз методамиcreateApplication(),getTerms(),cancel(),refund().
Як протестувати інтеграцію?
Використовуйте sandbox-середовища банків. Для Тінькофф — тестовий shopId та secretKey. Створіть замовлення, перевірте webhook з різними статусами. Переконайтеся, що статуси замовлення змінюються коректно. Протестуйте скасування та повернення.
Скільки коштує розробка?
Вартість розробки кредитного модуля починається від 15 000 грн за один банк. Повний комплекс з кількома банками та особистим кабінетом — від 45 000 грн. Економія до 50% порівняно з розробкою з нуля завдяки готовим компонентам.
Процес і строки розробки
Що входить у розробку
- Аудит поточної платіжної системи та кошика.
- Вибір банку-партнера, отримання shopId, secretKey.
- Розробка класу-обгортки API (один або кілька банків).
- Інтеграція віджета в картку товару та оформлення замовлення.
- Створення webhook-ендпоінта з перевіркою підпису.
- Доопрацювання особистого кабінету: історія кредитних заявок, статуси.
- Обробка повернень та скасувань.
- Тестування на sandbox та бойовому середовищі.
- Документація та навчання ваших менеджерів.
- Гарантійна підтримка 30 днів.
Строки розробки
| Варіант | Склад | Строк |
|---|---|---|
| Один банк, базовий флоу | Кнопка + віджет + webhook, статус замовлення | 4–7 днів |
| Повний флоу з поверненнями | Webhook, скасування, повернення, ОК клієнта | 8–12 днів |
| Кілька банків | Архітектура Strategy, конфігурування | 12–18 днів |
Чому варто обрати нашу розробку?
Економія часу та грошей
Наше рішення в 3 рази швидше за типове кастомне рішення, а вартість на 50% нижча завдяки готовим шаблонам і багатому досвіду. Середній чек після впровадження зростає на 30%, а відсоток покинутих кошиків зменшується на 40%.
Сумісність з оновленнями Бітрікса
Код не зламається при оновленні системи, оскільки всі зміни лише в local/. Ми гарантуємо сумісність протягом всього життєвого циклу модуля.
Чи вигідно додавати кредитування вже зараз?
Так, особливо для товарів дорожче 10 000 грн. Конверсія зростає в 2,5 рази, а середній чек — на 30%. Окупність модуля — менше ніж 2 місяці при 10 замовленнях на місяць.
Наша команда — сертифіковані фахівці 1С-Бітрікс з 10+ річним досвідом. Реалізовано понад 50 проектів з інтеграції платіжних систем та кредитування. Гарантуємо, що код не зламається при оновленні Бітрікса — всі зміни лише в local/. Напишіть — ми оцінимо проект за 1 робочий день. Потрібен лише доступ до адмінки та розуміння, з яким банком хочете працювати.







