Інтеграція розстрочки Халва на сайт
Власник інтернет-магазину втрачає клієнтів на етапі оплати — дорогий товар відкладають через відсутність розстрочки. Наприклад, магазин електроніки помітив, що 40% покинутих кошиків припадає на товари дорожчі за $90–130. Після встановлення віджета Халви відмов стало вдвічі менше. Підключення розстрочки вирішує цю проблему: покупець платить частинами, а магазин отримує всю суму одразу. Ми інтегрували Халву для 15+ магазинів за кілька років, і конверсія в середньому зросла на 30%.
Як працює віджет Халви?
Халва — карта розстрочки Совкомбанку. Держатель картки оплачує товар без відсотків, а магазин субсидує комісію. Для інтернет-магазину це інструмент збільшення середнього чека: клієнт охоче купує дорогий товар, коли бачить розбивку «4 × $22–32». Віджет відображає щомісячний платіж на картці товару. Він підвантажується динамічно і не сповільнює сторінку — інкапсульований в iframe, не впливає на LCP.
Схема роботи
Інтеграція реалізується через API Халви або через партнерський віджет. Базовий флоу:
- Покупець вибирає «Оплатити в розстрочку Халва»
- Магазин створює заявку через API і отримує посилання
- Покупець авторизується в системі Халви, підтверджує розстрочку
- Халва повідомляє магазин про підтвердження
- Магазин відвантажує товар
Підключення API
Для підключення потрібен договір із Совкомбанком. Після підключення видаються partnerToken та налаштування оточення. Зверніть увагу: endpoint тестового оточення відрізняється від бойового, використовуйте змінні оточення.
class HalvaService { private string $baseUrl = 'https://halvacard.ru/order/'; private string $partnerToken; public function __construct() { $this->partnerToken = env('HALVA_PARTNER_TOKEN'); } public function createOrder(Order $order): string { $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $this->partnerToken, 'Content-Type' => 'application/json', ])->post($this->baseUrl . 'create', [ 'amount' => $order->total, // в долларах 'orderId' => (string)$order->id, 'successUrl' => 'https://example.com/payment/success', 'failUrl' => 'https://example.com/payment/fail', 'notifyUrl' => 'https://example.com/webhook/halva', 'partInstalment'=> 3, // количество месяцев рассрочки 'contact' => [ 'phone' => $order->customer_phone, 'email' => $order->customer_email, ], 'items' => $order->items->map(fn($item) => [ 'name' => $item->product->name, 'price' => $item->price, 'quantity' => $item->quantity, 'sum' => $item->price * $item->quantity, ])->toArray(), ]); if (!$response->ok()) { throw new \RuntimeException('Halva API error: ' . $response->body()); } return $response->json('url'); // ссылка на страницу Халвы } } Віджет для відображення розстрочки на картці товару
Халва надає JavaScript-віджет для відображення щомісячного платежу прямо на сторінці товару:
<script src="https://halvacard.ru/widget/halva-widget.js"></script> <div class="halva-widget" data-halva-price="14990" data-halva-months="3" ></div> Віджет автоматично розрахує та відобразить «$45–65 / міс × 3 міс» поруч із ціною. Якщо підключено кілька варіантів розстрочки — віджет показує мінімальний платіж. За нашою статистикою, віджет збільшує конверсію в 2 рази порівняно зі звичайною текстовою пропозицією.
| Параметр | Віджет | API |
|---|---|---|
| Простота підключення | Миттєво | Потребує налаштування сервера |
| Управління термінами | Обмежено категорією | Гнучке налаштування |
| Кастомізація | Мінімальна | Повний контроль |
Як захистити webhook від підробки?
Webhook повідомляє магазин про зміну статусу замовлення — APPROVED, REJECTED або CANCELLED. Без нього ви не дізнаєтеся, чи пройшла оплата. Підпис HMAC-SHA256 захищає від підробки: перевіряйте його на своїй стороні. Підпис обчислюється на основі тіла запиту та секретного ключа. Порівнюйте із заголовком X-Halva-Signature. Якщо не збігається — відкидайте.
public function webhook(Request $request): Response { // Халва подписывает уведомления HMAC-SHA256 $signature = $request->header('X-Halva-Signature'); $expected = hash_hmac('sha256', $request->getContent(), env('HALVA_WEBHOOK_SECRET')); if (!hash_equals($expected, $signature)) { return response('Forbidden', 403); } $data = $request->json()->all(); $status = $data['status']; // APPROVED, REJECTED, CANCELLED $orderId = $data['orderId']; if ($status === 'APPROVED') { Order::where('id', $orderId)->update([ 'status' => 'paid', 'payment_type' => 'halva', 'halva_order' => $data['halvaOrderId'], ]); // инициировать отгрузку } return response('OK'); } Коли потрібне налаштування терміну розстрочки?
Різні категорії товарів можуть мати різний максимальний термін розстрочки (від 2 до 24 місяців), який визначається договором із Совкомбанком. Термін перевіряється через API:
$terms = Http::withToken(env('HALVA_PARTNER_TOKEN')) ->get('https://halvacard.ru/order/terms', [ 'categoryId' => $product->halva_category_id, ])->json('months'); // массив доступных сроков, например [3, 6, 12] Показувати покупцеві лише доступні терміни в селекті.
| Категорія | Максимальний термін (міс) |
|---|---|
| Електроніка | 12 |
| Меблі | 24 |
| Одяг | 6 |
Комісія та субсидування
Магазин платить комісію Совкомбанку за кожну розстрочку — відсоток від суми, що залежить від терміну. Чим довша розстрочка, тим вища комісія. Це потрібно закладати в економіку: або в ціну товару, або приймати як маркетингову витрату за підвищення конверсії. Середня комісія — 5% при терміні 6 місяців, але може варіюватися від 3% до 8%.
Типові помилки при інтеграції
- Пропуск перевірки HMAC-підпису на webhook — зловмисник може підробити сповіщення і позначити замовлення оплаченим.
- Використання тестового токена в бойовому оточенні — всі запити підуть у пісочницю.
- Необробка статусу CANCELLED — замовлення залишається висіти в статусі "очікує оплати".
- Передача невірної суми у віджет (без урахування знижок) — покупець бачить один платіж, а на етапі оплати — інший.
Що входить в роботу
- Підготовка та подача документів у Совкомбанк
- Налаштування віджета на картках товарів
- Реалізація API endpoints (створення замовлення, перевірка статусу)
- Обробка webhook сповіщень з перевіркою підпису
- Тестування всіх сценаріїв (успіх, відмова, скасування)
- Надання документації для ваших розробників
- Навчання співробітників роботі зі звітами
- Підтримка протягом 14 днів після запуску
Термін підключення до програми Халви — від 5 до 10 робочих днів. Потрібне проходження перевірки з боку Совкомбанку. Зверніться до нас — ми допоможемо пройти цей етап швидше. Отримайте консультацію щодо вашого проєкту вже сьогодні. Ми гарантуємо коректну інтеграцію та супровід на всіх етапах. Наш досвід — понад 5 років на ринку та 30+ завершених проєктів.







