Интеграция 1С-Битрикс с платежной системой Google Pay

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой Google Pay
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с платёжной системой Google Pay

Google Pay технически проще Apple Pay: не требует сертификатов домена и аккаунта разработчика для тестирования. Финальная транзакция проходит через банк-эквайер — Google Pay предоставляет зашифрованный токен карты, который банк расшифровывает на своей стороне. Для продакшна потребуется регистрация в Google Pay Console, но тестировать можно сразу с параметром environment: 'TEST'.

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

  1. Страница загружает https://pay.google.com/gp/p/js/pay.js
  2. isReadyToPay() проверяет наличие карт у пользователя в аккаунте Google
  3. При клике отображается платёжный лист
  4. Пользователь подтверждает → Google возвращает зашифрованный токен
  5. Токен передаётся в банк-эквайер через API

JavaScript: полная реализация

const paymentsClient = new google.payments.api.PaymentsClient({
    environment: 'PRODUCTION',
});

const cardPaymentMethod = {
    type: 'CARD',
    parameters: {
        allowedAuthMethods:  ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
        allowedCardNetworks: ['MASTERCARD', 'VISA', 'MIR'],
    },
    tokenizationSpecification: {
        type: 'PAYMENT_GATEWAY',
        parameters: {
            gateway:           'cloudpayments', // или tinkoff, yoomoney и др.
            gatewayMerchantId: 'YOUR_PUBLIC_ID',
        },
    },
};

async function initGooglePay() {
    const { result } = await paymentsClient.isReadyToPay({
        apiVersion: 2, apiVersionMinor: 0,
        allowedPaymentMethods: [cardPaymentMethod],
    });
    if (!result) return;

    const btn = paymentsClient.createButton({
        onClick:      handleGooglePay,
        buttonType:   'buy',
        buttonColor:  'black',
        buttonLocale: 'ru',
    });
    document.getElementById('google-pay-container').appendChild(btn);
}

async function handleGooglePay() {
    const data = await paymentsClient.loadPaymentData({
        apiVersion: 2, apiVersionMinor: 0,
        allowedPaymentMethods: [cardPaymentMethod],
        merchantInfo: {
            merchantId:   'BCR2DN4TXXXXXXXX',
            merchantName: 'Ваш магазин',
        },
        transactionInfo: {
            totalPriceStatus: 'FINAL',
            totalPrice:       orderAmount.toFixed(2),
            currencyCode:     'RUB',
            countryCode:      'RU',
        },
    });

    const token = data.paymentMethodData.tokenizationData.token;

    const result = await fetch('/api/google-pay-process.php', {
        method:  'POST',
        headers: { 'Content-Type': 'application/json' },
        body:    JSON.stringify({ token, orderId }),
    });
    const json = await result.json();
    if (!json.success) alert('Ошибка оплаты: ' + json.error);
}

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

// local/api/google-pay-process.php
$input   = json_decode(file_get_contents('php://input'), true);
$token   = $input['token']   ?? '';
$orderId = (int)($input['orderId'] ?? 0);

// Передаём токен в CloudPayments
$curl = curl_init('https://api.cloudpayments.ru/payments/cards/charge');
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_USERPWD        => CP_PUBLIC_ID . ':' . CP_API_PASSWORD,
    CURLOPT_POSTFIELDS     => json_encode([
        'Amount'      => getOrderAmount($orderId),
        'Currency'    => 'RUB',
        'InvoiceId'   => $orderId,
        'Token'       => $token,
        'PaymentType' => 'GooglePay',
        'IpAddress'   => $_SERVER['REMOTE_ADDR'],
    ]),
    CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
]);
$response = json_decode(curl_exec($curl), true);
curl_close($curl);

if ($response['Success']) {
    $order   = Bitrix\Sale\Order::load($orderId);
    $payment = $order->getPaymentCollection()->current();
    $payment->setPaid('Y');
    $payment->save();
    echo json_encode(['success' => true]);
} else {
    http_response_code(400);
    echo json_encode(['error' => $response['Message']]);
}

Регистрация в Google Pay Console

В TEST-режиме merchantId не нужен. Для продакшна:

  1. Перейти на pay.google.com/business/console
  2. Создать профиль продавца
  3. Пройти верификацию — Google вручную проверяет страницу оплаты на соответствие брендинг-гайдлайнам
  4. Получить merchantId для PRODUCTION

Брендинг важен: кнопка Google Pay должна соответствовать официальным гайдлайнам по цвету и размеру.

Сроки

Задача Срок
Интеграция через агрегатор 1–2 дня
Кастомная интеграция с Google Pay JS API 2–3 дня
Регистрация и верификация в Google Pay Console 2–7 рабочих дней