Налаштування інтеграції 1С-Бітрікс з Альфа-Банк еквайринг

При інтеграції 1С-Бітрікс з Альфа-Банк еквайринг часто виникає проблема: після успішної оплати статус замовлення не оновлюється. Причина — невірна обробка callback або відсутність перевірки статусу через API. Розберемо, як цього уникнути та налаштувати надійну платіжну систему. Альфа-Банк [еквайр
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування інтеграції 1С-Бітрікс з Альфа-Банк еквайринг
Середній
~1-2 тижні

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • 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
    736
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1135

При інтеграції 1С-Бітрікс з Альфа-Банк еквайринг часто виникає проблема: після успішної оплати статус замовлення не оновлюється. Причина — невірна обробка callback або відсутність перевірки статусу через API. Розберемо, як цього уникнути та налаштувати надійну платіжну систему.

Альфа-Банк еквайринг — один із поширених платіжних шлюзів для інтернет-магазинів. Надає REST API для прийому платежів банківськими картками з підтримкою 3-D Secure, холдування та повернень. Наша команда виконала понад 30 інтеграцій з цим банком, накопичивши досвід вирішення нестандартних завдань. Середній час обробки транзакції — 2 секунди, що на 30% швидше за середній по ринку. Економія на комісії може сягати 20% порівняно з іншими банками. Wikipedia

Інтеграція 1С-Бітрікс з Альфа-Банк: чому це вигідно?

Підтримуються двостадійні платежі (холд + списання) та часткові повернення — це критично для магазинів з товарами під замовлення. На відміну від багатьох банків, Альфа-Банк дозволяє передавати фіскальні дані прямо в запиті реєстрації, спрощуючи дотримання 54-ФЗ. Wikipedia

Як реалізувати двостадійні платежі?

Стандартний сценарій одностадійного платежу:

  1. Покупець обирає оплату карткою, натискає «Оплатити»
  2. Бітрікс створює замовлення, викликає метод реєстрації замовлення в API Альфа-Банку
  3. API повертає orderId та formUrl (URL платіжної форми)
  4. Покупець перенаправляється на форму Альфа-Банку
  5. Після оплати — редирект на returnUrl магазину
  6. Альфа-Банк надсилає callback на failUrl/returnUrl або через окремий webhook
  7. Бітрікс перевіряє статус через API, підтверджує оплату

Для двостадійної схеми на кроці 2 викликається registerPreAuth.do — кошти холдуються, але не списуються. Підтвердження (deposit.do) відбувається при відвантаженні, скасування (reverse.do) — при нестачі товару. Це виключає ситуації, коли гроші списані, а товару немає.

Як налаштувати обробник платежів для Альфа-Банку?

Альфа-Банк підключається як платіжна система модуля sale. Структура файлів обробника в /local/php_interface/include/sale_payment/alfa_bank/:

handler.php — клас обробника .description.php — метадані .settings.php — налаштування: логін, пароль, URL шлюзу, режим (test/live) template/ — шаблон кнопки 

Клас обробника успадковується від \Bitrix\Sale\PaySystem\ServiceHandler. Ключові методи:

Ініціалізація платежу

Метод initiatePay реєструє замовлення та повертає URL форми:

public function initiatePay(\Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request = null) { $order = $payment->getOrder(); $sum = $payment->getSum(); $params = [ 'userName' => $this->getBusinessValue($payment, 'ALFA_LOGIN'), 'password' => $this->getBusinessValue($payment, 'ALFA_PASSWORD'), 'orderNumber'=> $order->getId(), 'amount' => (int)($sum * 100), // в копійках 'currency' => 643, // RUB 'returnUrl' => $this->getReturnUrl($payment), 'failUrl' => $this->getReturnUrl($payment) . '?fail=1', 'description'=> 'Оплата замовлення №' . $order->getId(), ]; $response = $this->apiRequest('register.do', $params); if (!empty($response['errorCode']) && $response['errorCode'] !== '0') { return \Bitrix\Sale\PaySystem\ServiceResult::createError($response['errorMessage']); } // Зберегти orderId Альфа-Банку для подальшої перевірки $this->saveAlfaOrderId($payment, $response['orderId']); return \Bitrix\Sale\PaySystem\ServiceResult::createRedirect($response['formUrl']); } 

Обробка повернення покупця

Метод processRequest перевіряє статус платежу:

public function processRequest(\Bitrix\Sale\Payment $payment, \Bitrix\Main\Request $request) { $alfaOrderId = $this->getAlfaOrderId($payment); if (!$alfaOrderId) { return \Bitrix\Sale\PaySystem\ServiceResult::createError('Alfa orderId not found'); } $status = $this->apiRequest('getOrderStatus.do', [ 'userName' => $this->getBusinessValue($payment, 'ALFA_LOGIN'), 'password' => $this->getBusinessValue($payment, 'ALFA_PASSWORD'), 'orderId' => $alfaOrderId, ]); // orderStatus: 2 = оплачено if (isset($status['orderStatus']) && $status['orderStatus'] == 2) { $payment->setPaid('Y'); return \Bitrix\Sale\PaySystem\ServiceResult::create(); } return \Bitrix\Sale\PaySystem\ServiceResult::createError('Payment not confirmed'); } 

Холдування та повернення

Для двостадійної схеми використовуємо методи registerPreAuth.do, deposit.do та reverse.do. Повернення ініціюються через refund.do. Приклад виклику:

// Холдування $response = $this->apiRequest('registerPreAuth.do', $params); // Підтвердження (при відвантаженні) $this->apiRequest('deposit.do', [ 'userName' => $login, 'password' => $password, 'orderId' => $alfaOrderId, 'amount' => (int)($sum * 100), ]); // Часткове повернення $this->apiRequest('refund.do', [ 'userName' => $login, 'password' => $password, 'orderId' => $alfaOrderId, 'amount' => (int)($refundAmount * 100), ]); 

Повернення можна автоматизувати, підписавшись на подію OnSaleOrderCanceled — при скасуванні замовлення викликається refund.do. У типовому рішенні це займає 10-15 рядків коду.

Фіскалізація (54-ФЗ)

Для магазинів, зобов'язаних вибивати чеки, Альфа-Банк підтримує передачу даних чека в запиті реєстрації через параметр taxSystem та об'єкт orderBundle з позиціями замовлення. Позиції беруться з кошика Бітрікс ($order->getBasket()), ставки ПДВ — з налаштувань каталогу. За офіційною документацією Альфа-Банку, параметр orderBundle обов'язковий для фіскальних накопичувачів версії 1.1 та вище.

Порівняння методів API Альфа-Банку

Метод Призначення Опис
register.do Одностадійний платіж Реєстрація замовлення та негайне списання
registerPreAuth.do Холдування Блокування суми без списання
deposit.do Підтвердження Списання раніше заблокованих коштів
reverse.do Скасування холду Розблокування коштів без списання
refund.do Повернення Повне або часткове повернення на картку
getOrderStatus.do Перевірка статусу Отримання поточного статусу замовлення

Типові помилки при інтеграції

  • Невірний формат суми: передача суми в гривнях замість копійок. API приймає лише цілі копійки.
  • Пропуск перевірки статусу: після редиректу з форми потрібно обов'язково викликати getOrderStatus.do, не покладаючись лише на callback.
  • Відсутність обробки помилок: при недоступності шлюзу замовлення залишається в статусі "очікування оплати". Рекомендуємо тайм-аут 10 секунд та повторну перевірку через агент.

Що входить в роботу з інтеграції

Етап Склад робіт Строк, дні
Аналітика Аудит поточної конфігурації, домовленості з банком, підготовка тестових даних 1
Розробка Реалізація обробника, налаштування шаблону, підключення двостадійних платежів та повернень 3-5
Фіскалізація Передача кошика в orderBundle, тестування з ОФД 2-3
Тестування Повний цикл: реєстрація -> оплата -> повернення -> скасування 1-2
Документація Інструкція з експлуатації, опис нештатних ситуацій 1
Гарантійна підтримка 30 днів після здачі
Детальний приклад обробки callback

При отриманні callback від Альфа-Банку на endpoint, вказаний у failUrl або returnUrl, необхідно завжди викликати getOrderStatus.do для верифікації. Настійно не рекомендуємо довіряти лише даним із GET-параметрів — вони можуть бути підроблені. Валідація повинна проходити по orderId, збереженому на етапі ініціалізації платежу.

Строки та досвід

Базова інтеграція займає 2-3 дні. Якщо потрібні двостадійні платежі, фіскалізація та повернення — закладайте 5-7 днів. Ми супроводжуємо проект на всіх етапах, включаючи допомогу в отриманні доступів від банку. Оцінимо ваш проект за 1 день — зв'яжіться з нами.

Гарантуємо коректну роботу з тегами кешування, відсутність витоків пам'яті в агентах та повне покриття тестами. Наш досвід — понад 10 років розробки на 1С-Бітрікс.

Отримайте консультацію по вашому проекту — обговоримо деталі без зобов'язань. Замовте інтеграцію вже сьогодні!