Интеграция 1С-Битрикс с платёжной системой МИР Pay
После 2022 года МИР Pay стал единственным инструментом «оплаты одним касанием» для российских покупателей с картами МИР — их в обращении более 170 млн. Подключение МИР Pay реализуется через банк-эквайер, работающий с НСПК. Отдельного «МИР Pay API» для прямого подключения без банка не существует.
Варианты технической реализации
Через существующий эквайер — если подключён Тинькофф, CloudPayments или ЮКасса, МИР Pay обычно включается без дополнительной разработки. Банк-эквайер сам определяет тип карты по BIN и маршрутизирует транзакцию через НСПК.
T-Pay SDK — Тинькофф предоставляет SDK, включающий МИР Pay. Покупателям с картой МИР он предлагает МИР Pay вместо стандартной формы.
Payment Request API — браузерный стандарт W3C. Работает в Chrome, Яндекс.Браузере и других браузерах с поддержкой стандарта.
Интеграция через Тинькофф: серверная часть
// Создание платёжной сессии
$params = [
'TerminalKey' => TINKOFF_TERMINAL,
'Amount' => (int)($order->getPrice() * 100),
'OrderId' => $order->getAccountNumber(),
'Description' => 'Заказ #' . $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);
// Тинькофф показывает МИР Pay на странице $response['PaymentURL']
// автоматически, если карта покупателя — МИР
Payment Request API: кнопка МИР Pay на сайте
// Проверяем поддержку Payment Request API
if (!window.PaymentRequest) {
return; // fallback к стандартной форме
}
const mirMethod = {
supportedMethods: 'https://pay.mir.ru/',
};
const pr = new PaymentRequest(
[mirMethod],
{
total: {
label: 'Итого',
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-обработчик токена МИР Pay
// local/api/mir-pay-confirm.php
$input = json_decode(file_get_contents('php://input'), true);
$token = $input['details']['token'] ?? '';
$orderId = (int)($input['orderId'] ?? 0);
// Передаём в Тинькофф (поддерживает МИР Pay токены)
$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]);
}
Брендинг МИР Pay
НСПК регламентирует оформление кнопки МИР Pay. Официальные ресурсы и логотипы — на mironline.ru. Кнопку нельзя произвольно переименовывать или изменять цветовую схему.
Сроки
| Задача | Срок |
|---|---|
| Включение через существующий эквайер | 0.5–1 день |
| Кастомная реализация с Payment Request API | 2–4 дня |
| Тестирование на тестовых картах МИР | 0.5–1 день |







