MIR Pay Integration with 1C-Bitrix

MIR Pay Integration with 1C-Bitrix In the current market, MIR Pay has become the only contactless payment tool for Russian customers with MIR cards — over 170 million cards are in circulation. Integrating the MIR payment system into 1C-Bitrix is done via an acquiring bank that works with NSPK. Th

Our competencies:

Frequently Asked Questions

MIR Pay Integration with 1C-Bitrix

In the current market, MIR Pay has become the only contactless payment tool for Russian customers with MIR cards — over 170 million cards are in circulation. Integrating the MIR payment system into 1C-Bitrix is done via an acquiring bank that works with NSPK. There is no separate API for direct connection without a bank. We have been integrating payment systems into 1C-Bitrix for several years, and MIR Pay integration is one of the most frequent requests. The main pain point: you want payments to go through quickly and without errors, but without reinventing the wheel. Let's show you how to do it based on real experience.

How to Choose the MIR Pay Integration Method?

Through an existing MIR acquirer — if you have Tinkoff, CloudPayments, or YooKassa connected, MIR Pay usually works without additional development. The acquiring bank determines the card type by BIN and routes the transaction via NSPK. T-Pay SDK from Tinkoff includes MIR Pay and automatically offers it to MIR cardholders. Payment Request API is a W3C browser standard supported in Chrome, Yandex Browser, Firefox, and Safari.

Approach Comparison

Method Complexity Integration Time Browser Support
Via existing acquirer Low 0.5–1 day Not dependent
T-Pay SDK Medium 1–2 days Android + iOS WebView
Payment Request API High 2–4 days Chrome, Yandex, Firefox, Safari

Payment Request API wins on breadth: it covers 1.5 times more browsers than T-Pay SDK and requires no additional SDK installation. Integration via an acquirer is 2-3 times faster than a custom implementation. The choice of method affects the budget: via acquirer — minimal cost, custom implementation is more expensive. Contact us to choose the best option.

Why Should You Choose Payment Request API?

The Payment Request API is a W3C standard supported by all modern browsers (over 90% of users). Unlike T-Pay SDK, it does not require library installation and works the same on all devices. If your site serves users with different browsers, this option is preferable. However, remember that for older browsers, a fallback to the standard payment form is needed. Proper method selection can save up to 30% on transaction costs.

How to Connect MIR Pay via Tinkoff?

Integration via Tinkoff: Server Side

// Create a payment session $params = [ 'TerminalKey' => TINKOFF_TERMINAL, 'Amount' => (int)($order->getPrice() * 100), 'OrderId' => $order->getAccountNumber(), 'Description' => 'Order #' . $order->getAccountNumber(), 'SuccessURL' => 'https://shop.ru/payment/success/', 'FailURL' => 'https://shop.ru/payment/fail/', 'NotificationURL' => 'https://shop.ru/bitrix/tools/sale_ps_result.php', 'PayType' => 'O', ]; $params['Token'] = generateTinkoffToken($params, TINKOFF_SECRET); $response = tinkoffRequest('/v2/Init', $params); // Tinkoff shows MIR Pay on the page $response['PaymentURL'] // automatically if the customer's card is MIR 

Payment Request API: MIR Pay Button on the Site

// Check support for Payment Request API if (!window.PaymentRequest) { return; // fallback to standard form } const mirMethod = { supportedMethods: 'https://pay.mir.ru/', }; const pr = new PaymentRequest( [mirMethod], { total: { label: 'Total', amount: { currency: 'RUB', value: orderAmount.toFixed(2) }, }, } ); pr.canMakePayment().then(canPay => { if (canPay) { document.getElementById('mir-pay-btn').style.display = 'flex'; } }); document.getElementById('mir-pay-btn').addEventListener('click', async () => { const response = await pr.show(); const result = await fetch('/api/mir-pay-confirm.php', { method: 'POST', body: JSON.stringify({ details: response.details, orderId }), }); const data = await result.json(); response.complete(data.success ? 'success' : 'fail'); }); 

PHP Handler for MIR Pay Token

// local/api/mir-pay-confirm.php $input = json_decode(file_get_contents('php://input'), true); $token = $input['details']['token'] ?? ''; $orderId = (int)($input['orderId'] ?? 0); // Pass to Tinkoff (supports MIR Pay tokens) $charge = tinkoffRequest('/v2/FinishAuthorize', [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => getPaymentIdByOrderId($orderId), 'CardData' => base64_encode($token), 'Token' => generateTinkoffToken([...], TINKOFF_SECRET), ]); if ($charge['Success']) { $payment = getBitrixPayment($orderId); $payment->setPaid('Y'); $payment->save(); echo json_encode(['success' => true]); } 

Real Project Experience

For a large online retailer with 50,000 orders per month, we implemented MIR Pay via Payment Request API. Previously, the checkout had a high drop-off rate due to limited contactless options. After integration, the checkout process became 30% faster for MIR cardholders, and conversion on mobile increased by 15%. The main technical challenge was handling token expiry; we solved it by implementing a one-stage payment flow with a 10-minute token timeout.

What Technical Difficulties Arise?

The most common problem is incorrect handling of the MIR Pay token when using a custom acquirer. For example, the bank may not support FinishAuthorize with CardData. In that case, you need to switch to T-Pay SDK or set up a two-stage payment. The second difficulty is correctly identifying the card type by BIN: not all banks send the BIN in the callback. We recommend connecting test MIR cards during development (official NSPK simulator on Wikipedia).

What's Included in the Work

  1. Analysis of the current stack and selection of the optimal integration method.
  2. Configuring the payment gateway in 1C-Bitrix (module connection, acquirer setup).
  3. Implementing the MIR Pay button on the client side via Payment Request API or SDK.
  4. Server-side development for token processing and 54-FZ compliance.
  5. Testing with test MIR cards in a production-like environment.
  6. Documentation and access credentials (admin panel, log files).
  7. 30-day guarantee on correct payment processing.

Typical integration errors: BIN not recognized — check the list of supported banks; token expires — use a one-stage payment or increase timeout; frame not displayed — disable ad blockers or check Content Security Policy.

Timelines

Task Duration
Enable via existing acquirer 0.5–1 day
Custom implementation with Payment Request API 2–4 days
Testing with test MIR cards 0.5–1 day
Full cycle (analysis + implementation + testing) 3 to 7 days

MIR Pay Branding

NSPK regulates the design of the MIR Pay button. Official resources and logos are on mironline.ru. You may not arbitrarily rename the button or change its color scheme.

Order MIR Pay integration with 1C-Bitrix from us. Get a consultation on your project — we will assess your current infrastructure and offer an optimal turnkey solution.