Интеграция 1С-Битрикс с платёжной системой Assist Belarus
Assist Belarus — платёжный шлюз белорусского процессинга, который агрегирует несколько способов оплаты: карты Visa/Mastercard/Белкарт, ЕРИП, и ряд других. Для белорусских интернет-магазинов это удобный вариант: одно подключение закрывает карточный эквайринг и ЕРИП без необходимости работать с каждым банком отдельно. Технически интеграция строится через REST API Assist, который по архитектуре напоминает российские шлюзы, но имеет свою специфику.
Принцип работы Assist Belarus
Assist выступает агрегатором: магазин подключается к одному шлюзу, а конечный процессинг (Белкарт, Visa, ЕРИП) происходит на стороне 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 Belarus поддерживает операции в BYN, USD, EUR. Если в магазине цены в BYN, а покупатель хочет платить картой в USD, Assist выполняет конвертацию по курсу Нацбанка на момент транзакции. В Битрикс важно правильно передавать код валюты — ISO 4217 (BYN, USD, EUR), а не символьные обозначения (р., $).
Работа с ЕРИП через Assist
При подключении ЕРИП через агрегатор Assist покупателю на странице оплаты предлагается выбор: «Карта» или «ЕРИП». При выборе ЕРИП Assist возвращает реквизиты для оплаты — номер в ЕРИП и QR-код. Магазин получает нотификацию так же, как при карточной оплате.
Преимущество агрегаторной схемы — не нужно отдельно регистрироваться в дереве ЕРИП: Assist делает это за вас в рамках договора. Но код услуги в дереве будет привязан к Assist, а не напрямую к вашей компании.
Реальный кейс: двойное списание
Магазин белорусской косметики обнаружил, что у нескольких покупателей деньги списались дважды. Анализ логов показал: покупатель нажимал «Оплатить», страница зависала на несколько секунд (медленный хостинг), он нажимал ещё раз — формировалось два запроса к Assist с разными OrderNumber (Битрикс создал два платежа для одного заказа). Решение: добавить кнопку disabled после первого клика на JS-уровне и проверку на стороне Битрикс — не создавать новый платёж, если у заказа уже есть активный необработанный.
Сроки
Assist Belarus предоставляет тестовый доступ в течение 1–3 дней после подачи заявки. Разработка обработчика и тестирование — 2–4 рабочих дня. Полная активация боевого аккаунта после проверки сайта — 3–7 рабочих дней.







