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

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

Google Pay — спосіб швидкої оплати через браузер Chrome та Android-пристрої без введення даних картки. Як і Apple Pay, це не самостійна платіжна система, а інтерфейс токенізації картки поверх існуючого еквайрингу. Відмінність від Apple Pay: працює не лише в мобільному додатку, але й у Chrome на десктопі — якщо користувач зберіг картку в акаунті Google. Охоплення аудиторії ширше, реалізація через Google Pay API дещо простіша, ніж у Apple.

Принцип роботи

Google Pay API надає зашифрований платіжний токен (Google Pay token), який потрібно передати в процесинг еквайрера. Схема:

  1. JS-бібліотека Google Pay (pay.google.com/gp/p/js/pay.js) завантажується на сторінці
  2. Покупець натискає «Оплатити через Google Pay»
  3. Браузер показує нативний діалог підтвердження з прив'язаною карткою
  4. Google Pay повертає зашифрований токен
  5. Магазин передає токен в еквайринг (ЮКаса, Тінькофф, Сбер, Stripe)

Ініціалізація Google Pay API

У шаблоні сторінки оплати або в JS-файлі кастомного компонента:

const googlePayConfig = {
    environment: 'PRODUCTION',  // 'TEST' для тестування
    apiVersion: 2,
    apiVersionMinor: 0,
};

const paymentsClient = new google.payments.api.PaymentsClient(googlePayConfig);

const allowedPaymentMethods = [{
    type: 'CARD',
    parameters: {
        allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
        allowedCardNetworks: ['MASTERCARD', 'VISA', 'MIR'],
    },
    tokenizationSpecification: {
        type: 'PAYMENT_GATEWAY',
        parameters: {
            gateway: 'yookassa',           // або 'tinkoff', 'sberbank' тощо
            gatewayMerchantId: 'SHOP_ID',  // ваш ID в еквайрингу
        },
    },
}];

// Перевіряємо готовність користувача до оплати
paymentsClient.isReadyToPay({
    apiVersion: 2,
    apiVersionMinor: 0,
    allowedPaymentMethods,
}).then(response => {
    if (response.result) {
        const button = paymentsClient.createButton({
            onClick: processPayment,
            buttonColor: 'default',
            buttonType: 'pay',
        });
        document.getElementById('google-pay-container').appendChild(button);
    }
});

Запит платежу

function processPayment() {
    const paymentDataRequest = {
        apiVersion: 2,
        apiVersionMinor: 0,
        allowedPaymentMethods,
        merchantInfo: {
            merchantId: 'BCR2DN4T...',  // Google Merchant ID з Google Pay Console
            merchantName: 'Мій магазин',
        },
        transactionInfo: {
            totalPriceStatus: 'FINAL',
            totalPrice: orderTotal.toString(),  // рядок, наприклад '1500.00'
            currencyCode: 'RUB',
            countryCode: 'RU',
        },
    };

    paymentsClient.loadPaymentData(paymentDataRequest)
        .then(paymentData => {
            const token = paymentData.paymentMethodData.tokenizationData.token;
            return fetch('/bitrix/tools/gpay_charge.php', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({ token, orderId }),
            });
        })
        .then(res => res.json())
        .then(data => {
            if (data.success) window.location.href = data.redirect;
        })
        .catch(err => console.error('Google Pay error', err));
}

Серверна обробка токена

// /bitrix/tools/gpay_charge.php
$input   = json_decode(file_get_contents('php://input'), true);
$gpToken = $input['token'];   // JSON-рядок або об'єкт
$orderId = (int)$input['orderId'];

// Для ЮКаси передаємо токен безпосередньо
$payment = $yookassaClient->createPayment([
    'amount'              => ['value' => getOrderAmount($orderId), 'currency' => 'RUB'],
    'payment_method_data' => [
        'type'         => 'google_pay',
        'payment_methodology_token' => is_string($gpToken) ? $gpToken : json_encode($gpToken),
    ],
    'capture'     => true,
    'description' => 'Замовлення №' . $orderId,
], uniqid('', true));

$success = $payment->getStatus() === 'succeeded';
if ($success) {
    $bitrixPayment->setPaid('Y');
    $bitrixPayment->save();
}

header('Content-Type: application/json');
echo json_encode([
    'success'  => $success,
    'redirect' => $success ? '/personal/order/detail/' . $orderId . '/' : null,
]);

Тестування

У режимі TEST Google Pay повертає фіксований тестовий токен без реальної картки. Для повноцінного тестування з реальним токеном необхідні:

  • Google Merchant ID (реєструється в Google Pay & Wallet Console)
  • Підтверджений домен
  • Тестові картки з Google Pay Console → Test Cards

Обов'язково тестувати в Chrome на Android-пристрої — там поведінка діалогу відрізняється від десктопа.

Терміни

Завдання Термін
JS-інтеграція кнопки Google Pay 0.5 дня
Серверна обробка токена через еквайринг 0.5 дня
Реєстрація в Google Pay Console + тестування 1 день