Інтеграція 1С-Бітрікс з еквайрингом Приорбанку в Білорусі

Інтеграція 1С-Бітрікс з інтернет-еквайрингом Приорбанку в Білорусі часто перетворюється на довгі години налагодження через нестандартне шифрування Computop Paygate. Ми беремо на себе весь цикл — від аудиту та налаштування до впровадження та підтримки. Наша команда реалізує проєкт під ключ, забезпечуючи стабільну роботу платіжного шлюзу та надійну обробку сповіщень без зриву термінів.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з еквайрингом Приорбанку в Білорусі
Середній
~1-2 тижні

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

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1534
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1049
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    820
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    920
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    858
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1209

Розробка інтеграції 1С-Бітрікс з еквайрингом Приорбанку в Білорусі — завдання з підводним камінням. Платіжний шлюз Computop Paygate використовує шифрування Blowfish, а не звичний JSON REST API. Помилка в алгоритмі дає порожню відповідь без повідомлення, і знайти причину складно. Наша команда за 8 років підключила понад 50 проєктів, тому знає кожен нюанс. Нижче — практична інструкція з кодом, яка заощадить вам дні налагодження.

Як працює алгоритм шифрування параметрів?

Приорбанк використовує Computop Paygate (paygate.computop.com). Всі параметри запиту шифруються алгоритмом Blowfish у режимі ECB з доповненням до кратності 8 байт та кодуються в Base64. Додатково обчислюється HMAC-MD5 для верифікації. Цей підхід принципово відрізняється від сучасних REST API, де дані передаються у відкритому вигляді або з JWT. Blowfish швидший за AES на старих процесорах, але вимагає строгого дотримання довжини ключа (до 56 байт). Помилка на 1 байт у ключі — і відповідь шлюзу буде порожньою без жодної діагностики.

Чому URLNotify має бути публічно доступним?

Computop надсилає POST-сповіщення на URLNotify лише якщо сервер доступний з інтернету. Для локальної розробки це проблема — localhost не підійде. Рішення — ngrok, який створює тимчасовий зовнішній URL. Якщо сповіщення не надходять, перевірте, що посилання не заблоковане фаєрволом. У бойовому середовищі 99.9% сповіщень доставляються за 1-2 секунди.

Покрокове налаштування обробника в Бітрікс

  1. Створіть обробник платіжної системи в /bitrix/tools/sale_ps_result.php.
  2. Отримайте від банку MerchantID, Blowfish-ключ та HMAC-ключ.
  3. Реалізуйте клас ComputopCipher (див. лістинг нижче).
  4. Сформуйте HTML-форму оплати з полями MerchantID, Len та Data.
  5. Обробіть сповіщення: розшифруйте Data, верифікуйте MAC, оновіть статус замовлення.
  6. Протестуйте в тестовому середовищі з наданими тестовими картками.
  7. Переключіться на бойовий MerchantID та перевірте проведення платежу.

Технічна архітектура шлюзу та шифрування

Платіжний шлюз Приорбанку технічно базується на Computop Paygate. Особливості:

  • Параметри передаються в зашифрованому вигляді — Blowfish (ECB) + Base64, плюс HMAC-MD5 для верифікації
  • Форма оплати — редирект на сторінку Computop, а не hosted-fields
  • Сповіщення — синхронне через URLNotify (POST при зміні статусу) та параметри в URLSuccess/URLFailure

Це принципово відрізняє інтеграцію від звичних JSON REST API: всі параметри шифруються, і помилка в алгоритмі шифрування призводить до порожньої відповіді без зрозумілого повідомлення про помилку.

class ComputopCipher {
    private string $blowfishKey;
    private string $merchantId;
    private string $hmacKey;

    public function __construct(string $merchantId, string $blowfishKey, string $hmacKey) {
        $this->merchantId = $merchantId;
        $this->blowfishKey = $blowfishKey;
        $this->hmacKey = $hmacKey;
    }

    public function encrypt(array $params): string {
        $queryString = http_build_query($params);
        $len = strlen($queryString);
        // Доповнюємо до кратності 8 байт (вимога Blowfish ECB)
        $pad = (8 - ($len % 8)) % 8;
        $queryString = str_pad($queryString, $len + $pad, "\0");
        $encrypted = openssl_encrypt(
            $queryString,
            'BF-ECB',
            $this->blowfishKey,
            OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
        );
        return base64_encode($encrypted);
    }

    public function decrypt(string $data): array {
        $decrypted = openssl_decrypt(
            base64_decode($data),
            'BF-ECB',
            $this->blowfishKey,
            OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
        );
        parse_str(rtrim($decrypted, "\0"), $result);
        return $result;
    }

    public function getHmac(array $params): string {
        $data = implode('*', [
            $params['PayID'] ?? '',
            $params['TransID'] ?? '',
            $this->merchantId,
            $params['Amount'] ?? '',
            $params['Currency'] ?? '',
        ]);
        return hash_hmac('md5', $data, $this->hmacKey);
    }
}

Формування форми оплати

$cipher = new ComputopCipher($merchantId, $blowfishKey, $hmacKey);
$params = [
    'MerchantID' => $merchantId,
    'TransID' => 'ORDER_' . $orderId . '_' . time(),
    'Amount' => (int)($orderAmount * 100), // у копійках
    'Currency' => 'BYN',
    'OrderDesc' => 'Замовлення №' . $orderId,
    'URLSuccess' => 'https://myshop.by/checkout/success/?order=' . $orderId,
    'URLFailure' => 'https://myshop.by/checkout/fail/?order=' . $orderId,
    'URLNotify' => 'https://myshop.by/bitrix/tools/sale_ps_result.php',
    'Language' => 'ru',
    'MAC' => $cipher->getHmac(['TransID' => 'ORDER_'.$orderId.'_'.time(), 'Amount' => (int)($orderAmount*100), 'Currency' => 'BYN']),
];
$encryptedData = $cipher->encrypt($params);
$len = strlen(http_build_query($params));

HTML-форма для редиректу:

<form method="POST" action="https://paygate.computop.com/pay/">
    <input type="hidden" name="MerchantID" value="<?= $merchantId ?>">
    <input type="hidden" name="Len" value="<?= $len ?>">
    <input type="hidden" name="Data" value="<?= htmlspecialchars($encryptedData) ?>">
    <button type="submit">Оплатити</button>
</form>

Обробка сповіщень

Computop надсилає POST на URLNotify із зашифрованими Data та Len:

// В обробнику /bitrix/tools/sale_ps_result.php
$encryptedData = $_POST['Data'] ?? '';
$len = (int)($_POST['Len'] ?? 0);
$decrypted = $cipher->decrypt($encryptedData);
parse_str(substr(http_build_query($decrypted), 0, $len), $params);

// Обов'язково верифікувати MAC
$expectedMac = $cipher->getHmac($params);
if (!hash_equals($expectedMac, $params['MAC'] ?? '')) {
    http_response_code(403);
    exit('Invalid MAC');
}

// Коди успіху
if (($params['Code'] ?? '') === '00000000') {
    $payment->setPaid('Y');
    $payment->setField('PS_STATUS_CODE', $params['Code']);
    $payment->setField('PS_STATUS_MESSAGE', $params['Description'] ?? '');
    $payment->save();
}

Основні коди відповіді Computop/Приорбанку:

Код Значення
00000000 Успішна оплата
00000099 Транзакція очікує
00000190 Помилка авторизації
00000902 Помилка шлюзу

Тестове середовище

Приорбанк надає тестовий MerchantID та тестовий BlowfishKey. Тестові картки Computop:

  • VISA: 4200000000000000 — успішна оплата
  • Mastercard: 5500000000000004 — успішна оплата
  • Будь-яка картка з Expiry = 1200 — відхилення

Важливий нюанс тестування: URLNotify має бути доступний з серверів Computop — localhost не підійде. Для локальної розробки використовуйте ngrok або тимчасовий публічний URL.

Особливості для Білорусі

  • Валюта платежів — BYN (білоруський доллар), код за ISO 974
  • Сума передається в білоруських копійках
  • Для роботи з картками Белкарт потрібне окреме підключення через протокол Белкарт — відрізняється від Computop
  • Операційний день банку — робочі дні; розрахунки на наступний банківський день
  • Економія часу на ручній обробці — до 30% за рахунок автоматичної фіскалізації (через АТОЛ або СБІС)

Що входить в роботу та строки

Ми готуємо повну документацію з інтеграції, налаштовуємо обробник платіжної системи в Бітрікс, конфігуруємо URLNotify, проводимо тестування в тестовому середовищі та допомагаємо з підключенням до бойового. Також навчаємо вашу команду основам адміністрування. Всі роботи виконуються під ключ за 5–7 робочих днів.

Конфігурація Строк
Розробка обробника платіжної системи 2–3 дні
Тестування в тестовому середовищі 1 день
Підключення до бойового середовища та перевірка 1 день
Інтеграція з 1С (якщо потрібно) 2–3 дні додатково

Для розрахунку точної вартості та строків зв'яжіться з нами — оцінимо ваш проєкт індивідуально. Гарантуємо підтримку після запуску протягом місяця. Замовте інтеграцію — і ми налаштуємо еквайринг під ключ. Отримайте консультацію: ми відповімо на будь-які питання щодо інтеграції.

Computop Paygate API Reference — детальний опис параметрів та кодів помилок доступний в офіційній документації.
Часта помилка: невірна довжина ключа Blowfish Ключ Blowfish має бути довжиною від 4 до 56 байт. Якщо ключ коротший, openssl_encrypt поверне false. Перевірте, що ключ не містить пробіли та переданий у сирому вигляді (без base64).

Blowfish (cipher) — Wikipedia HMAC — Wikipedia