- Created by IntellectMoney, last modified on Oct 08, 2020
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 23 Next »
Самостоятельная интеграция способа оплаты привязанной к устройству 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.
Реализация
Вы самостоятельно реализуете клиентскую и серверную части на своем сайте. На серверной части следует вызвать метод 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) должен отправляться к скрипту, расположенному на вашем сервере.
<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
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"
Серверная часть
Скрипт payment на вашем сервере должен либо создать инвойс в системе IntellectMoney (метод createInvoice()), либо использовать существующий.
Доступ к API
При обращении ко всем методам API следует прикладывать SSL-сертификат, см. Получение доступа к API
Скрипт на вашем сервере должен отправить POST-запрос на следующий адрес URL:
https://api.intellectmoney.ru/merchant/latest/googlepay/pay
В запросе необходимо передать следующие параметры:
Название | Имя параметра | Обязательный | Описание |
---|---|---|---|
Номер СКО | invoiceId | Да | Счёт К Оплате - уникальный номер в системе IntellectMoney, с помощью которого идентифицируется любой платеж. Для получения воспользуйтесь операцией “ Запрос выставления счета ” |
Адрес успешной авторизации | returnUrl | Да | Адрес, на который перенаправляет плательщика после успешной авторизации |
IP адрес плательщика | ipAddress | Да | IP адрес плательщика |
Криптограмма платежных данных | paymentTokenDataJson | Да | Криптограмма платежных данных, полученная из Google Pay API |
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...", ... }
<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()
- No labels