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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з інтернет-еквайрингом Пріорбанк (Білорусь)
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

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

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

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

Пріорбанк — один із найбільших білоруських банків, дочірня структура Raiffeisen Bank International. Для білоруських інтернет-магазинів на Бітрікс це один із основних варіантів еквайрингу: хороша конверсія, підтримка карток VISA/Mastercard/Белкарт, можливість підключити розстрочку «Халва». Платіжний шлюз Пріорбанку технічно базується на Computop Paygate, що важливо враховувати при розробці інтеграції.

Технічна архітектура шлюзу

Пріорбанк використовує Computop Paygate (paygate.computop.com). Особливості:

  • Параметри передаються у зашифрованому вигляді — 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
  • Сума передається у білоруських копійках (1 рубль = 100 копійок)
  • Для роботи з картками Белкарт потрібне окреме підключення через протокол Белкарт — відрізняється від Computop
  • Операційний день банку — робочі дні; розрахунки на наступний банківський день

Терміни

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