Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »

Google Pay — это метод токенизации карточных данных плательщика, который позволяет ускорить и упростить оплату ваших товаров и услуг. В случае, если у плательщика добавлена карта в приложении Google Pay, он может оплачивать покупки, вводя не свои карточные данные, а используя кнопку “Покупка с Google Pay”.

Для проведения платежа достаточно передать полученные из Google Pay токенизированные карточные данные в IntellectMoney API, создать инвойс в Платформе и оплатить его с помощью токена IntellectMoney, который содержит в себе токен Google Pay. Таким образом, при оплате производится процесс двойной токенизации - Платформа IntellectMoney реализует в схожую бизнес-логику при проведении платежей, создавая на основе платежных данных токены, которые используются для запуска платежей.

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

Пример интеграции кнопки “Pay with Google Pay”

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

В качестве параметров скрипта укажите:

  • доступные методы платежа

    var allowedPaymentMethods = ['CARD', 'TOKENIZED_CARD'];
  • тип токенизации -  PAYMENT_GATEWAY:

    tokenizationType: 'PAYMENT_GATEWAY'
  • для тестового окружения укажите значения  gateway  как  intellectmoney  и  gatewayMerchantId  какintellectmoney-test:

    'gateway': 'intellectmoney',
    'gatewayMerchantId': 'intellectmoney-test'

Указанный gatewayMerchantId используется для тестов. Для получения боевого gatewayMerchantId  обратитесь к нам.

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



После нажатия кнопки на устройстве с подключенным Google Pay появится всплывающее окно или форма выбора привязанной карты. В случае подтверждения плательщиком оплаты коллбек вернет в функцию  processPayment  данные, необходимые для получения платежного токена IntellectMoney.

Пример набора данных, возвращаемых Google Pay

{
  "cardInfo": {
    "cardNetwork": "MASTERCARD",
    "cardDetails": "4444",
    "cardImageUri": "https://lh6.ggpht.com/h6TBIVV7tlYGr1zkIA8CmCzINizzASbPIetpxh_5otBu3VkPEC5_Kk_wH5szy7gDhMkRhVVp",
    "cardDescription": "Mastercard •••• 4444",
    "cardClass": "CREDIT"
  },
  "paymentMethodToken": {
    "tokenizationType": "PAYMENT_GATEWAY",
    "token": "{\"signature\":\"MEUCIZ29vZ2xlIHBheSBkZWNvZGVkIHNpZ25hdHVyZSBkYXRhIChiaW5hcnkpCg\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg//c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu//YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0//aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuCg\\\",\\\"ephemeralPublicKey\\\":\\\"Z29vZ2xlIHBheSBlbXBoZXJhbCBwdWJsaWMga2V5IChkZWNvZGVkIGJpbmFyeSkK\\\\u003d\\\",\\\"tag\\\":\\\"Z29vZ2xlIHBheSB0YWcgKGRlY29kZWQgYmluYXJ5KQo\\\\u003d\\\"}\"}"
  }
}
  

Встроенный в эту документацию скрипт логгирует данные Google Pay в консоль вашего браузера. Вы можете просмотреть их и использовать для тестовых нужд. Обратите внимание! В Google Pay отсутствует возможность привязать тестовую карту, поэтому интерфейс вам будет показывать вашу реальную карту. Однако в тестовой среде Google эта карта непрозрачно подменяется на тестовую и вам в скрипт возвращаются данные тестовой карты. Таким образом вы можете безопасно использовать вашу привязанную реальную карту, средства с нее списаны не будут.

Интеграция Google Pay в IntellectMoney API

Для проведения платежа с Google Pay необходимо выполнить следующие вызовы IntellectMoney API:

  • создать в Платформе инвойс, вызвав метод createInvoice();
  • либо, если инвойс уже был создан ранее, создать invoiceAccessToken;
  • используя полученный  invoiceAccessToken  создать платежный токен IntellectMoney, вызывав метод createPaymentResource();
  • использовать полученный платежный токен IntellectMoney для запуска одно- или двустадийных платежей.

Пример структуры  paymentResourse

Необходимые данные

  • в переменной  paymentToolType  укажите значение  TokenizedCardData;
  • в переменной  provider  укажите  GooglePay;
  • в переменной  gatewayMerchantID:
    • для тестовой среды укажите intellect money-test;
    • для боевой среды укажите идентификатор вашего мерчанта, выданный вам IntellectMoney.
  • в структуру  paymentToken  передайте структуру, полученную из Google Pay.

Пример корректно заполненной структуры

{
  "paymentTool": {
    "paymentToolType": "TokenizedCardData",
    "provider": "GooglePay",
    "gatewayMerchantID": "intellectMoney-test",
    "paymentToken": {
      "cardInfo": {
        "cardNetwork": "MASTERCARD",
        "cardDetails": "4444",
        "cardImageUri": "https://lh6.ggpht.com/h6TBIVV7tlYGr1zkIA8CmCzINizzASbPIetpxh_5otBu3VkPEC5_Kk_wH5szy7gDhMkRhVVp",
        "cardDescription": "Mastercard •••• 4444",
        "cardClass": "CREDIT"
      },
      "paymentMethodToken": {
        "tokenizationType": "PAYMENT_GATEWAY",
        "token": "{\"signature\":\"MEUCIZ29vZ2xlIHBheSBkZWNvZGVkIHNpZ25hdHVyZSBkYXRhIChiaW5hcnkpCg\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg//c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu//YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0//aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuCg\\\",\\\"ephemeralPublicKey\\\":\\\"Z29vZ2xlIHBheSBlbXBoZXJhbCBwdWJsaWMga2V5IChkZWNvZGVkIGJpbmFyeSkK\\\\u003d\\\",\\\"tag\\\":\\\"Z29vZ2xlIHBheSB0YWcgKGRlY29kZWQgYmluYXJ5KQo\\\\u003d\\\"}\"}"
      }
    }
  },
  "clientInfo": {
    "fingerprint": "aa32fec9f377e6fae19a6a8bcde41bd1"
  }
}

Собираем все вместе

Ниже приведена цепочка  curl  вызовов к API IntellectMoney, позволяющая провести платеж с использованием платежного метода Google Pay.

  • создаем в Платформе инвойс:

    curl -X POST \
      https://api.intellectmoney/ru/merchant/v2/invoices \
      -H 'Authorization: Bearer {YOUR_API_KEY}' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json; charset=utf-8' \
      -H 'X-Request-ID: 1528470572' \
      -d '{
      "shopID": "TEST",
      "dueDate": "2018-06-08T14:56:31.416Z",
      "amount": 6000,
      "currency": "RUB",
      "product": "Order num 12345",
      "description": "Delicious meals",
        "cart": [
            {
                "price": 5000,
                "product": "Sandwich",
                "quantity": 1,
                "taxMode": {
                    "rate": "10%",
                    "type": "InvoiceLineTaxVAT"
                }
            },
            {
                "price": 1000,
                "product": "Cola",
                "quantity": 1,
                "taxMode": {
                    "rate": "18%",
                    "type": "InvoiceLineTaxVAT"
                }
            }
        ],  
    "metadata": 
      { 
        "order_id": "Internal order num 13123298761"
      }
    }'
  • пример ответа Платформы:

    {
        "invoice": {
            "amount": 6000,
            "cart": [
                {
                    "cost": 5000,
                    "price": 5000,
                    "product": "Sandwich",
                    "quantity": 1,
                    "taxMode": {
                        "rate": "10%",
                        "type": "InvoiceLineTaxVAT"
                    }
                },
                {
                    "cost": 1000,
                    "price": 1000,
                    "product": "Cola",
                    "quantity": 1,
                    "taxMode": {
                        "rate": "18%",
                        "type": "InvoiceLineTaxVAT"
                    }
                }
            ],
            "createdAt": "2018-06-08T13:56:31.188182Z",
            "currency": "RUB",
            "description": "Delicious meals",
            "dueDate": "2018-06-08T14:56:31.416000Z",
            "id": "10vLw0XY144",
            "metadata": {
                "order_id": "Internal order num 13123298761"
            },
            "product": "Order num 12345",
            "shopID": "TEST",
            "status": "unpaid"
        },
        "invoiceAccessToken": {
            "payload": "{INVOICE_ACCESS_TOKEN}"
        }
    }
  • обрабатываем в UA плательщика бизнес-процесс Google Pay, передаем полученные данные себе на бекэнд и вызываем createPaymentResource():

    curl -X POST \
      https://api.intellectmoney.ru/v2/processing/payment-resources \
      -H 'Authorization: Bearer {INVOICE_ACCESS_TOKEN}' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json; charset=utf-8' \
      -H 'X-Request-ID: 1528470722' \
      -d '{
      "paymentTool": {
        "paymentToolType": "TokenizedCardData",
        "provider": "GooglePay",
        "gatewayMerchantID": "intellectmoney-test",
        "paymentToken": {
          "cardInfo": {
            "cardNetwork": "MASTERCARD",
            "cardDetails": "4444",
            "cardImageUri": "https://lh6.ggpht.com/h6TBIVV7tlYGr1zkIA8CmCzINizzASbPIetpxh_5otBu3VkPEC5_Kk_wH5szy7gDhMkRhVVp",
            "cardDescription": "Mastercard •••• 4444",
            "cardClass": "CREDIT"
          },
          "paymentMethodToken": {
            "tokenizationType": "PAYMENT_GATEWAY",
            "token": "{\"signature\":\"MEUCIZ29vZ2xlIHBheSBkZWNvZGVkIHNpZ25hdHVyZSBkYXRhIChiaW5hcnkpCg\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg//c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu//YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0//aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuCg\\\",\\\"ephemeralPublicKey\\\":\\\"Z29vZ2xlIHBheSBlbXBoZXJhbCBwdWJsaWMga2V5IChkZWNvZGVkIGJpbmFyeSkK\\\\u003d\\\",\\\"tag\\\":\\\"Z29vZ2xlIHBheSB0YWcgKGRlY29kZWQgYmluYXJ5KQo\\\\u003d\\\"}\"}"
          }
        }
      },
      "clientInfo": {
        "fingerprint": "aa32fec9f377e6fae19a6a8bcde41bd1"
      }
    }'
  • пример ответа Платформы:

    {
        "clientInfo": {
            "fingerprint": "aa32fec9f377e6fae19a6a8bcde41bd1",
            "ip": "2A04:4A00:5:1014::100D"
        },
        "paymentSession": "{PAYMENT_SESSION}",
        "paymentToolDetails": {
            "bin": "411111",
            "cardNumberMask": "411111******4444",
            "detailsType": "PaymentToolDetailsBankCard",
            "lastDigits": "4444",
            "paymentSystem": "mastercard",
            "tokenProvider": "googlepay"
        },
        "paymentToolToken": "{PAYMENT_TOOL_TOKEN}"
    }
  • запускаем платеж в Платформе

    curl -X POST \
      https://api.intellectmoney.ru/v2/processing/invoices/10vLw0XY144/payments \
      -H 'Authorization: Bearer {INVOICE_ACCESS_TOKEN}' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json; charset=utf-8' \
      -H 'X-Request-ID: 1528470852' \
      -d '{
      "flow": {
        "type": "PaymentFlowInstant"
      },
      "payer": {
          "payerType": "PaymentResourcePayer",
        "paymentToolToken":"{PAYMENT_TOOL_TOKEN}",
        "paymentSession":"{PAYMENT_SESSION}",
        "contactInfo":
          {
            "email":"test@test.com",
            "phoneNumber":"9876543210"
          }
      }
    }'
  
  • проверяем статус обработки платежа:

    curl -X GET \
      https://api.intellectmoney.ru/v2/processing/invoices/10vRl9xqGlk/docs/payments/1 \
      -H 'Authorization: Bearer {YOUR_API_KEY}' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json; charset=utf-8' \
      -H 'X-Request-ID: 1528471100'
  • пример ответа Платформы. Платеж успешно проведен:

    {
        "amount": 6000,
        "createdAt": "2018-06-08T15:18:06.834793Z",
        "currency": "RUB",
        "flow": {
            "type": "PaymentFlowInstant"
        },
        "id": "1",
        "invoiceID": "10vRl9xqGlk",
        "payer": {
            "clientInfo": {
                "fingerprint": "aa32fec9f377e6fae19a6a8bcde41bd1",
                "ip": "2A04:4A00:5:1014::100D"
            },
            "contactInfo": {
                "email": "test@test.com",
                "phoneNumber": "9876543210"
            },
            "payerType": "PaymentResourcePayer",
            "paymentSession": "{PAYMENT_SESSION}",
            "paymentToolDetails": {
                "bin": "411111",
                "cardNumberMask": "411111******4444",
                "detailsType": "PaymentToolDetailsBankCard",
                "lastDigits": "4444",
                "paymentSystem": "mastercard",
                "tokenProvider": "googlepay"
            },
            "paymentToolToken": "{PAYMENT_TOOL_TOKEN}"
        },
        "status": "captured"
    }
  
  • No labels