Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Самостоятельная интеграция способа оплаты привязанной к устройству Android банковской карты заключается в размещении кнопки Google Pay на сайте Вашего магазина. Если вы используете Мерчант IntellectMoney , то кнопка Google Pay уже включена для ваших плательщиков, никаких дополнительных действий не требуется. Ознакомиться с условиями оказания услуг Google Pay вы можете по адресу https://pay.google.com/about/terms/

Требования

  • В личном кабинете следует включить способ "Google Pay" у магазина, на сайте которого планируется разместить кнопку Google Pay
  • Ваш сайт должен работать только по схеме HTTPS и поддерживать протокол TLS версии не ниже 1.2

Регистрация Merchant ID в Google

Пройдите регистрацию, заполнив форму. После получения Merchant ID, отправьте к нам на почту ts@intellectmoney.ru запрос на получение gatewayMerchantIdВыберите "Gateway" в качестве "Tokenization Method". В "Payment Processor or Gateway" укажите "intellectmoney".

Реализация

Вы самостоятельно реализуете клиентскую и серверную части на своем сайте. На серверной части следует вызвать метод IntellectMoney Google Pay API "Pay". Используйте официальную документацию разработчика Google https://developers.google.com/pay/api/web/guides/tutorial , а также гайдлайны фирменного стиля Google https://developers.google.com/pay/api/web/guides/brand-guidelines .

Клиентская часть

Пример кода. Ajax запрос (/GooglePay/Payment) должен отправляться к скрипту, расположенному на вашем сервере.

Code Block
languagexml
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="/js/googlepay.js"></script>
<script async src="https://pay.google.com/gp/p/js/pay.js" onload="onGooglePayLoaded()"></script>
<script>
	var googlePayAmount = "10.00";
	var googlePayCurrency = "RUB";
</script>
<div id="google-pay-button" style="padding: 50px;" />

Используйте следующие параметры:

  • gateway: "intellectmoney"
  • merchantId: идентификатор, зарегистрированный в Google
  • gatewayMerchantId: идентификатор магазина, зарегистрированный в IntellectMoney
Code Block
languagejs
titlegooglepay.js
const baseRequest = {
    apiVersion: 2,
    apiVersionMinor: 0
};

const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];
const cardPaymentMethodType = 'CARD';
let paymentsClient = null;

function getGoogleIsReadyToPayRequest() {
    return Object.assign(
        {},
        baseRequest,
        {
            allowedPaymentMethods: [
                {
                    type: cardPaymentMethodType,
                    parameters: {
                        allowedAuthMethods: allowedCardAuthMethods,
                        allowedCardNetworks: allowedCardNetworks
                    }
                }
            ]
        }
    );
}

function getGooglePaymentsClient() {
    if (paymentsClient === null) {
        paymentsClient = new google.payments.api.PaymentsClient({ environment: 'PRODUCTION' });
    }
    return paymentsClient;
}

function onGooglePayLoaded() {
    const paymentsClient = getGooglePaymentsClient();
    paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
        .then(function (response) {
            if (response.result) {
                addGooglePayButton();
            }
        })
        .catch(function (err) {
            // show error in developer console for debugging
            console.error(err);
        });
}

function addGooglePayButton() {
    const paymentsClient = getGooglePaymentsClient();
    const button = paymentsClient.createButton({ onClick: onGooglePaymentButtonClicked });
    document.getElementById('google-pay-button').appendChild(button);
}

function onGooglePaymentButtonClicked() {
    const paymentDataRequest = Object.assign(
        {},
        baseRequest,
        {
            merchantInfo: {
                merchantId: '12345678901234567890' //идентификатор, зарегистрированный в Google
            },
            allowedPaymentMethods: [
                {
                    type: cardPaymentMethodType,
                    parameters: {
                        allowedAuthMethods: allowedCardAuthMethods,
                        allowedCardNetworks: allowedCardNetworks
                    },
                    tokenizationSpecification: {
                        type: "PAYMENT_GATEWAY",
                        parameters: {
                            gateway: "intellectmoney",
                            gatewayMerchantId: "432143" //идентификатор магазина, зарегистрированный в IntellectMoney
                        }
                    }
                }
            ],
            transactionInfo: {
                totalPriceStatus: 'FINAL',
                totalPrice: googlePayAmount,
                countryCode: 'RU',
                currencyCode: googlePayCurrency
            }
        }
    );

    const paymentsClient = getGooglePaymentsClient();
    paymentsClient.loadPaymentData(paymentDataRequest)
        .then(function (paymentData) {
            processPayment(paymentData);
        })
        .catch(function (err) {
            // show error in developer console for debugging
            console.error(err);
        });
}

function processPayment(paymentData) {
    console.log(paymentData);
    var status;
    $.ajax({
        cache: false,
        dataType: "json",
        type: "post",
        url: "/GooglePay/Payment",
        data: "paymentTokenDataJson=" + encodeURIComponent(JSON.stringify(paymentData.paymentMethodData.tokenizationData.token)),
        complete: function (data) {
            status = 'complete';
            if (data.Result.OperationId) {
                // check payment processing state via getBankCardPaymentState
            }
        },
        error: function (e) {
            status = 'error';
        },
        success: function (e) {
            status = 'success';
        }
    });
}

Если вы все сделали правильно, то у вас на сайте появится кнопка "Оплатить через G Pay"


Column
width100%


G pay



Серверная часть

Скрипт payment на вашем сервере должен либо создать инвойс в системе IntellectMoney (метод createInvoice()), либо использовать существующий.


Info
titleДоступ к API

При обращении ко всем методам API следует прикладывать SSL-сертификат, см. Получение доступа к API

Скрипт на вашем сервере должен отправить POST-запрос на следующий адрес URL:

https://api.intellectmoney.ru/merchant/latest/googlepay/pay

В запросе необходимо передать следующие параметры:

Название

Имя параметра

Обязательный

Описание

Номер СКО

invoiceId

Да

Счёт К Оплате - уникальный номер в системе IntellectMoney, с помощью которого идентифицируется любой платеж. Для получения воспользуйтесь операцией “ Запрос выставления счета

Адрес успешной авторизации

returnUrl

Да

Адрес, на который перенаправляет плательщика после успешной авторизации
IP адрес плательщикаipAddressДаIP адрес плательщика
Криптограмма платежных данныхpaymentTokenDataJsonДаКриптограмма платежных данных, полученная из Google Pay API


Code Block
languagepowershell
themeConfluence
titleПример запроса
linenumberstrue
collapsetrue
Post /merchant/latest/googlepay/pay
HTTP/1.1 Host: api.intellectmoney.ru
Content-Type: application/x-www-form-urlencoded; charset=utf-8

invoiceId = 3496318551
returnUrl = https://mysite.com/returnUrl
ipAddress = 10.10.10.10
paymentTokenDataJson = {"signature":"MEUCIZ29vZ2xlIHBheSBkZWNvZGVkIHNpZ25hdHVyZSBkYXRhIChiaW5hcn...", ... }


Code Block
languagexml
themeConfluence
titleПример ответа
linenumberstrue
collapsetrue
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<OperationState> 
		<Code>0</Code> 
		<Desc>Успешно обработана</Desc> 
	</OperationState> 
	<OperationId>b294b231-9a77-427a-9866-f111e4c88515</OperationId> 
	<EshopId>0</EshopId> 
	<Result> 
		<State> 
			<Code>0</Code> 
			<Desc>Успешно обработан.</Desc> 
		</State>
		<OperationId>Идентификатор платежа</OperationId>
	</Result>
</Response> 

Успешный ответ означает, что платеж поставлен в очередь на обработку.

Статус обработки платежа в системе IntellectMoney можно проверять методом getBankCardPaymentState()


Table of Contents