Versions Compared

Key

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

...

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

    Code Block
    languagejs
    var allowedPaymentMethods = ['CARD', 'TOKENIZED_CARD'];


  • тип токенизации - PAYMENT_GATEWAY:

    Code Block
    languagejs
    tokenizationType: 'PAYMENT_GATEWAY'


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

    Code Block
    'gateway': 'rbkmoney',
    'gatewayMerchantId': 'rbkmoney-test'


...

Note

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

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

...

IntellectMoney API

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

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

...

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

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

Code Block
languagejs
{
  "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 RBKmoneyIntellectMoney, позволяющая провести платеж с использованием платежного метода Google Pay.

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

    Code Block
    languagejs
    curl -X POST \
      https://api.rbk.money/v2/processing/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"
      }
    }'

...


  • пример ответа Платформы:

    Code Block
    languagejs
    {
        "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():

...