Інтеграція 1С-Бітрікс із платіжною системою СВІТ Pay

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс із платіжною системою СВІТ Pay
Середня
~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С-Бітрікс з платіжною системою Mir Pay

Mir Pay — російський аналог Google Pay та Apple Pay, розроблений НСПК (Національна система платіжних карток). Працює на Android-пристроях з NFC, підтримує картки платіжної системи «Мир». З 2022 року, після обмежень Google Pay та Apple Pay для російських карток, Mir Pay став основним мобільним платіжним методом для власників карток «Мир». Інтеграція в інтернет-магазин на 1С-Бітрікс реалізується через Mir Pay Web API або через підтримуючий еквайринг.

Принцип роботи Mir Pay у вебі

Mir Pay Web — протокол онлайн-оплати через додаток Mir Pay на смартфоні. Схема:

  1. Покупець натискає кнопку Mir Pay на сайті
  2. Сайт ініціює транзакцію через API НСПК
  3. На смартфон покупця надходить push-повідомлення з запитом підтвердження
  4. Покупець підтверджує відбитком пальця або PIN-кодом
  5. НСПК повертає результат транзакції

Альтернативний варіант — через QR-код Mir Pay (аналогічно СБП, але по інфраструктурі «Мир»).

Підключення через еквайринг

Більшість банків — учасників НСПК підтримують Mir Pay у своєму інтернет-еквайрингу. Сбер, Тінькофф, ВТБ, Россельхозбанк додають кнопку Mir Pay у форму оплати автоматично. Специфічних дій на стороні 1С-Бітрікс не потрібно — метод з'являється у формі за наявності у договорі.

Пряма інтеграція через НСПК Mir Pay Web API

Для самостійної інтеграції:

class MirPayWebGateway
{
    private const API_URL = 'https://payment.mirpay.ru/v1/';
    private string $merchantId;
    private string $merchantKey;
    private string $terminalId;

    public function createSession(array $data): array
    {
        $timestamp = date('Y-m-d\TH:i:s\Z');
        $nonce     = bin2hex(random_bytes(16));

        $payload = [
            'merchant_id'  => $this->merchantId,
            'terminal_id'  => $this->terminalId,
            'order_id'     => 'BX_' . $data['orderId'],
            'amount'       => (int)round($data['amount'] * 100), // копійки
            'currency'     => 'RUB',
            'description'  => 'Замовлення №' . $data['orderId'],
            'return_url'   => $data['returnUrl'],
            'notify_url'   => $data['notifyUrl'],
            'timestamp'    => $timestamp,
            'nonce'        => $nonce,
        ];

        $payload['signature'] = $this->sign($payload);

        $ch = curl_init(self::API_URL . 'sessions');
        curl_setopt_array($ch, [
            CURLOPT_POST           => true,
            CURLOPT_POSTFIELDS     => json_encode($payload),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
        ]);
        $result = json_decode(curl_exec($ch), true);
        curl_close($ch);

        return $result;
    }

    private function sign(array $params): string
    {
        ksort($params);
        $signString = implode('|', array_values($params)) . '|' . $this->merchantKey;
        return hash('sha256', $signString);
    }
}

Кнопка на сторінці

// mir-pay-web.js — надається НСПК
MirPayWeb.init({
    merchantId: 'YOUR_MERCHANT_ID',
    sessionId: mirPaySessionId,  // отримано з сервера
    container: '#mir-pay-button',
    locale: 'ru',
    onSuccess: function(result) {
        // Перенаправляємо на сторінку успіху
        window.location.href = '/checkout/success/?order=' + orderId;
    },
    onError: function(error) {
        console.error('Mir Pay error:', error);
    },
});

Обробка повідомлень

// /bitrix/tools/mirpay_notify.php
$body = file_get_contents('php://input');
$data = json_decode($body, true);

// Верифікація підпису
$receivedSig = $data['signature'] ?? '';
$checkData   = $data;
unset($checkData['signature']);
ksort($checkData);
$expected = hash('sha256', implode('|', array_values($checkData)) . '|' . MIRPAY_KEY);

if (!hash_equals($expected, $receivedSig)) {
    http_response_code(403);
    exit('Invalid signature');
}

if (($data['status'] ?? '') === 'COMPLETED') {
    $orderId = str_replace('BX_', '', $data['order_id']);
    $order   = \Bitrix\Sale\Order::loadByAccountNumber($orderId);
    $payment = $order->getPaymentCollection()->current();
    $payment->setPaid('Y');
    $payment->save();
}

http_response_code(200);
echo 'OK';

Відображення кнопки лише для Android

// Mir Pay Web працює лише на Android із встановленим додатком Mir Pay
const isMirPayAvailable = () => {
    const ua = navigator.userAgent;
    const isAndroid = /Android/i.test(ua);
    // MirPayWeb.isAvailable() — метод SDK для перевірки встановленого додатка
    return isAndroid && typeof MirPayWeb !== 'undefined' && MirPayWeb.isAvailable();
};

if (isMirPayAvailable()) {
    document.querySelector('.mirpay-btn-wrapper').style.display = 'block';
}

Терміни

Завдання Термін
Підключення через банківський еквайринг 0 днів — включено в еквайринг
Пряма інтеграція через НСПК Mir Pay Web 3–4 дні
Тестування на Android з додатком Mir Pay 1 день