Интеграция 1С-Битрикс с рассрочкой Магнит (Беларусь)
«Магнит» — программа рассрочки от Банка ВТБ (Беларусь). Один из распространённых инструментов потребительского кредитования на белорусском рынке. Покупатель оформляет рассрочку на 6–36 месяцев, магазин получает сумму от ВТБ. Интеграция с сайтом на Битрикс — стандартный обработчик платёжной системы с перенаправлением на страницу банка. Мы реализовали такие интеграции для 30+ проектов, и гарантируем стабильную работу под нагрузкой. Стоимость интеграции варьируется от 1 500 до 3 000 BYN в зависимости от сложности доработок. Экономия для магазина — отсутствие комиссий при оплате картами и рост среднего чека.
С какими проблемами сталкиваются при интеграции?
Часто встречается неверная обработка статусов заявки: магазин не получает callback об одобрении, и клиент остаётся без подтверждения. Другая проблема — несовместимость формата телефона: API ВТБ ожидает +375, а сайт хранит 8-XXX или 375. Наша реализация включает автоматическую нормализацию номера. Третий типичный кейс — отсутствие HMAC-верификации вебхуков, что приводит к ложным срабатываниям. Все эти ошибки мы устраняем на этапе проектирования.
Как мы это делаем?
Используем стандартный класс \Bitrix\Sale\PaySystem\ServiceHandler. Авторизация в API ВТБ — Basic Auth или OAuth 2.0. В запросе передаём partnerOrderId с префиксом BX- для уникальности. Настраиваем тегированное кэширование для калькулятора рассрочки. Наша реализация быстрее и надежнее самописной. Подробности реализации — ниже.
API ВТБ Беларусь для партнёров
ВТБ предоставляет REST API для интернет-магазинов. Авторизация — Basic Auth (логин/пароль партнёра) или OAuth 2.0, зависит от тарифа подключения. В запросе на подключение уточняйте: тип авторизации, тестовую среду, формат уведомлений. Официальную документацию API можно изучить на портале ВТБ. ВТБ Беларусь. Партнёрский API: https://www.vtb.by/partner
Базовая схема:
- Магазин отправляет
POST /api/v1/credits/applicationsс данными заказа и клиента - ВТБ возвращает
application_idиredirect_url - Клиент заполняет анкету в интерфейсе ВТБ
- ВТБ отправляет webhook о решении
- При одобрении — деньги переводятся магазину
Обработчик платёжной системы
class MagnitVtbHandler extends \Bitrix\Sale\PaySystem\ServiceHandler
{
public function initiatePay(
\Bitrix\Sale\Payment $payment,
\Bitrix\Main\Request $request = null
) {
$order = $payment->getOrder();
// Доступные сроки рассрочки (месяцы)
$availableTerms = array_map('intval', explode(',',
$this->getBusinessValue($payment, 'AVAILABLE_TERMS') ?? '6,12,24,36'
));
$payload = [
'partnerOrderId' => 'BX-' . $order->getId(),
'totalAmount' => $payment->getSum(),
'currency' => 'BYN',
'terms' => $availableTerms,
'goods' => $this->buildGoodsList($order),
'client' => [
'firstName' => $order->getPropertyValueByCode('NAME'),
'lastName' => $order->getPropertyValueByCode('LAST_NAME'),
'middleName' => $order->getPropertyValueByCode('SECOND_NAME'),
'mobilePhone' => $this->normalizePhone($order->getPropertyValueByCode('PHONE')),
'email' => $order->getPropertyValueByCode('EMAIL'),
],
'urls' => [
'success' => $this->getSuccessUrl($payment),
'fail' => $this->getFailUrl($payment),
'callback' => $this->getNotificationUrl($payment),
],
];
$response = $this->sendRequest('POST', '/api/v1/credits/applications', $payload);
if (empty($response['redirectUrl'])) {
$this->setError('ВТБ Магнит: не получен redirectUrl');
return \Bitrix\Sale\PaySystem\ServiceResult::create();
}
$this->saveApplicationId($payment->getField('ID'), $response['applicationId']);
$result = new \Bitrix\Sale\PaySystem\ServiceResult();
$result->setPaymentUrl($response['redirectUrl']);
return $result;
}
private function buildGoodsList(\Bitrix\Sale\Order $order): array
{
$goods = [];
foreach ($order->getBasket() as $item) {
$goods[] = [
'name' => mb_substr($item->getField('NAME'), 0, 200),
'price' => round($item->getPrice(), 2),
'quantity' => (int)$item->getQuantity(),
'article' => (string)$item->getProductId(),
'brand' => $item->getField('DETAIL_PAGE_URL'), // или из свойства товара
];
}
return $goods;
}
private function normalizePhone(string $phone): string
{
$digits = preg_replace('/\D/', '', $phone);
// Белорусский формат: +375XXXXXXXXX
if (strlen($digits) === 11 && $digits[0] === '8') {
$digits = '375' . substr($digits, 1);
}
return '+' . ltrim($digits, '+');
}
}
Webhook от ВТБ
ВТБ отправляет POST на callback_url при изменении статуса заявки. Верификация через HMAC-подпись или IP-whitelist (белый список IP ВТБ):
public function processRequest(\Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request)
{
$allowedIps = ['194.XXX.XXX.0/24']; // IP-диапазон ВТБ Беларусь
if (!$this->isAllowedIp($request->getServer()->get('REMOTE_ADDR'), $allowedIps)) {
http_response_code(403);
exit;
}
$data = json_decode(file_get_contents('php://input'), true);
$result = new \Bitrix\Sale\PaySystem\ServiceResult();
switch ($data['status'] ?? '') {
case 'APPROVED':
case 'ISSUED': // Кредит выдан, деньги у магазина
$result->setOperationType(\Bitrix\Sale\PaySystem\ServiceResult::MONEY_COMING);
$payment->setPaid('Y');
break;
case 'DECLINED':
// Заявка отклонена — уведомляем клиента
\Bitrix\Main\Mail\Event::send([
'EVENT_NAME' => 'INSTALLMENT_DECLINED',
'LID' => SITE_ID,
'C_FIELDS' => ['ORDER_ID' => $payment->getOrderId()],
]);
break;
}
http_response_code(200);
echo json_encode(['status' => 'ok']);
return $result;
}
Виджет «Рассчитать рассрочку» на сайте
На странице товара и в корзине показываем калькулятор ежемесячного платежа. Клик по сроку открывает форму оформления.
function calcMagnitInstallment(price) {
const terms = [6, 12, 24, 36];
const container = document.getElementById('magnit-installment');
container.innerHTML = terms.map(t =>
`<div class="term-option">
<span>${t} мес.</span>
<strong>${Math.ceil(price / t)} руб./мес.</strong>
</div>`
).join('');
}
Как интеграция влияет на конверсию?
Рассрочка снижает порог входа для клиентов с высокой суммой корзины. По нашим данным, средний чек вырастает на 30–50%, а конверсия в оформление — на 15–25%. Клиенты, которые не могли оплатить сразу, становятся покупателями. При этом магазин получает всю сумму за вычетом комиссии банка, без риска просрочек.
Почему стоит выбрать нашу интеграцию?
Мы не просто подключаем API. Мы проверяем корнер-кейсы: частичные возвраты, отмены заказов, смену статусов при задержках. Обработчик корректно сохраняет application_id в платёж, чтобы вы всегда могли отследить заявку. Код покрыт тестами, а вебхуки защищены от подделок.
Процесс работы: от запроса до деплоя
| Этап | Содержание | Срок |
|---|---|---|
| Аналитика | Изучение API ВТБ, схемы данных, требований | 1 день |
| Проектирование | Разработка архитектуры обработчика и виджета | 1 день |
| Реализация | Написание кода, модульное тестирование | 3–4 дня |
| Интеграция | Настройка тестовой среды, пробные платежи | 1–2 дня |
| Деплой | Выкатка на бой, мониторинг работы | 1 день |
| Поддержка | Исправление ошибок, консультации 30 дней | — |
Сроки
| Этап | Срок |
|---|---|
| Настройка API-подключения и тестовой среды | 1 день |
| Обработчик платёжной системы | 2–3 дня |
| Webhook и обработка статусов | 1–2 дня |
| Возвраты через API | 1 день |
| Виджет калькулятора рассрочки | 0.5 дня |
| Тестирование | 2 дня |
| Итого | 8–10 дней |
Что входит в работу
| Деливерабли | Описание |
|---|---|
| Документация по API | Схема запросов, примеры ответов, описание обработки ошибок |
| Доступы и конфигурация | Настройка тестовой и боевой среды ВТБ, генерация токенов |
| Исходный код обработчика | PHP-класс с комментариями, готовый к установке в Битрикс |
| Инструкция по настройке | Пошаговое руководство для системного администратора |
| Обучение менеджеров | Как отвечать на вопросы клиентов, проверять статусы |
| Поддержка 30 дней | Исправление ошибок, консультации по доработкам |
Наша команда — сертифицированные специалисты по Битрикс с опытом 5+ лет. Гарантируем корректную работу обработчика и вебхуков. Оценим ваш проект и предложим оптимальное решение. Свяжитесь с нами для консультации — получите индивидуальный план интеграции. Закажите интеграцию уже сегодня.







