Интеграция 1С-Битрикс с платёжной системой Assist Belarus
Мы часто сталкиваемся с ситуацией, когда белорусский интернет-магазин пытается подключить Assist Belarus, но сталкивается с двойными списаниями или неверной верификацией подписей. Наш опыт показывает: правильно настроенный обработчик избавляет от 80% проблем на старте. За годы работы мы накопили экспертизу, позволяющую избежать таких ошибок: неверной подписи, неучтённых статусов и потери нотификаций. Assist Belarus — платёжный шлюз (Wikipedia) белорусского процессинга, агрегирующий карты (Visa/Mastercard/Белкарт) и ЕРИП. Для магазина это одно подключение вместо нескольких банковских договоров. Технически интеграция строится через REST API Assist; мы реализовали её для 15+ проектов, гарантируя корректную обработку всех статусов и защиту от повторных списаний.
Принцип работы Assist Belarus
Assist выступает агрегатором: магазин подключается к одному шлюзу, а конечный процессинг происходит на стороне Assist. Схема взаимодействия:
- Магазин формирует запрос к API Assist (
https://payments.assist.by/) с параметрами заказа - Assist возвращает
orderIdи URL платёжной страницы - Покупатель выбирает способ оплаты и платит на странице Assist
- Assist отправляет POST-нотификацию на
callback_urlмагазина - Магазин верифицирует данные и подтверждает заказ
API работает через HTTPS POST с параметрами в теле запроса (application/x-www-form-urlencoded) либо в JSON в зависимости от версии API.
Настройка обработчика в Битрикс
Assist Belarus не имеет официального модуля в Маркетплейс Битрикс, поэтому интеграция реализуется через кастомный обработчик платёжной системы модуля sale.
Размещение: /local/php_interface/include/sale_payment/assist_belarus/
Ключевые настройки (.settings.php):
return [
'MERCHANT_ID' => ['NAME' => 'Merchant ID', 'SORT' => 100],
'LOGIN' => ['NAME' => 'Логин в Assist', 'SORT' => 200],
'PASSWORD' => ['NAME' => 'Пароль', 'SORT' => 300],
'TEST_MODE' => ['NAME' => 'Тестовый режим', 'SORT' => 400],
'CURRENCY' => ['NAME' => 'Валюта (BYN/USD)', 'SORT' => 500],
];
Метод initiatePay формирует запрос на создание счёта:
$params = [
'Merchant_ID' => $this->getParam('MERCHANT_ID'),
'OrderNumber' => $order->getField('ACCOUNT_NUMBER'),
'OrderAmount' => number_format($payment->getSum(), 2, '.', ''),
'OrderCurrency'=> $this->getParam('CURRENCY'),
'URL_RETURN' => $returnUrl,
'URL_RETURN_NO'=> $failUrl,
'callbackType' => 'server',
'callbackURL' => $callbackUrl,
'Language' => 'RU',
];
Верификация нотификаций
Assist передаёт подпись через параметр Signature — MD5 или SHA256 от конкатенации Merchant_ID, OrderNumber, OrderAmount, OrderCurrency и секретного ключа. Порядок полей фиксирован и указан в документации.
Обработка нотификации в processRequest:
$expectedSign = md5(
$merchantId . $orderNumber . $orderAmount . $currency . $secretKey
);
if ($expectedSign !== strtolower($_POST['Signature'])) {
throw new \Exception('Invalid signature');
}
$status = $_POST['OrderState'];
if ($status === 'Approved') {
$payment->setPaid('Y');
$payment->save();
}
Статусы Assist: Approved (оплачен), Declined (отклонён), Cancelled (отменён), Pending (ожидает).
Как избежать двойного списания при интеграции с Assist?
Из практики: один наш клиент — магазин белорусской косметики — столкнулся с тем, что у нескольких покупателей деньги списались дважды. Анализ логов показал: покупатель нажимал «Оплатить», страница зависала (медленный хостинг), он нажимал ещё раз — формировалось два запроса к Assist с разными OrderNumber (Битрикс создал два платежа для одного заказа). Решение: добавить кнопку disabled после первого клика на JS-уровне и проверку на стороне Битрикс — не создавать новый платёж, если у заказа уже есть активный необработанный.
По данным документации Assist, повторные запросы с одинаковым OrderNumber также блокируются шлюзом, но лучше полагаться на собственную защиту.
Валютные операции
Assist Belarus поддерживает операции в BYN, USD, EUR. Если в магазине цены в BYN, а покупатель хочет платить картой в USD, Assist выполняет конвертацию по курсу Нацбанка на момент транзакции. В Битрикс важно правильно передавать код валюты — ISO 4217 (BYN, USD, EUR), а не символьные обозначения (р., $).
Работа с ЕРИП через Assist
При подключении ЕРИП через агрегатор Assist покупателю на странице оплаты предлагается выбор: «Карта» или «ЕРИП». При выборе ЕРИП Assist возвращает реквизиты для оплаты — номер в ЕРИП и QR-код. Магазин получает нотификацию так же, как при карточной оплате.
Преимущество агрегаторной схемы — не нужно отдельно регистрироваться в дереве ЕРИП: Assist делает это за вас в рамках договора. Но код услуги в дереве будет привязан к Assist, а не напрямую к вашей компании.
Сравнение: Assist Belarus vs прямая интеграция с банком
| Критерий | Assist Belarus | Прямая интеграция |
|---|---|---|
| Количество подключений | Одно | Отдельно для каждого банка |
| Поддержка ЕРИП | Да, через агрегатор | Требуется регистрация в дереве ЕРИП |
| Время настройки | 2–4 дня | 1–3 недели |
| Комиссия | Средняя, зависит от оборота | Индивидуальный тариф банка |
Assist Belarus выигрывает по скорости подключения — в среднем в 3 раза быстрее, чем прямая интеграция с банком. Однако для крупных оборотов прямая интеграция может быть выгоднее по комиссии.
Статусы нотификаций Assist
| Статус | Значение | Действие в Битрикс |
|---|---|---|
| Approved | Оплачен | Установить статус оплаты, сохранить |
| Declined | Отклонён | Отменить заказ, уведомить клиента |
| Cancelled | Отменён | Вернуть заказ в корзину |
| Pending | Ожидает | Игнорировать до финального статуса |
Что входит в работу по интеграции
- Разработка кастомного обработчика под модуль
sale - Настройка callback-уведомлений и верификации подписей
- Тестирование всех сценариев: успешная оплата, отмена, ошибка
- Подготовка документации по эксплуатации
- Обучение сотрудников работе с платёжным шлюзом
- Поддержка после запуска в течение месяца
Сроки
Assist Belarus предоставляет тестовый доступ в течение 1–3 дней после подачи заявки. Разработка обработчика и тестирование — 2–4 рабочих дня. Полная активация боевого аккаунта после проверки сайта — 3–7 рабочих дней.
Почему стоит выбрать агрегаторную схему ЕРИП через Assist?
Потому что она сокращает время выхода на рынок: не нужно ждать регистрации в дереве ЕРИП (обычно 2–4 недели). Assist делает это быстрее. Но учитывайте, что тарифы агрегатора могут быть выше, чем при прямом подключении. Мы поможем просчитать оба варианта и выбрать оптимальный.
Мы работаем с платёжными интеграциями более 8 лет, за это время реализовали более 50 проектов для Битрикс. Обращайтесь: поможем оценить проект и предложим решение под ключ. Чтобы получить консультацию по интеграции, напишите нам — оценим ваш проект за 1 день.







