Сведения об объектах

В Google Pay API есть несколько типов объектов, которые вы можете использовать на своем сайте. Вот какие из них описаны в этих справочных материалах:

Объекты запроса

Для настройки объекта запроса нужно передать его методу класса в клиентской библиотеке Google Pay API. Чтобы отправлять запросы к Google Pay API, нужно настроить несколько объектов запроса.

PaymentOptions

Когда вы протестируете модуль интеграции и будете готовы получать платежи от покупателей, настройте объект PaymentOptions для рабочей среды.

Если вы включите в модуле интеграции динамическое обновление цен, обязательно добавьте поле MerchantInfo и PaymentDataCallbacks:

Ресурс Тип Необходимость Описание
environment Строка Необязательно
  • PRODUCTION: используется, чтобы показывать действительные способы оплаты, если для домена указан активный идентификатор продавца Google.
  • TEST: пробные способы оплаты, предназначенные для тестирования (по умолчанию).
MerchantInfo MerchantInfo Необязательно Этот объект содержит информацию о продавце, который запрашивает платежные данные.
paymentDataCallbacks PaymentDataCallbacks Необязательно Объект содержит обратные вызовы для динамического обновления цен.

Пример

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

{
  environment: "TEST",
  merchantInfo: {
    merchantName: "Example Merchant",
    merchantId: "0123456789"
  },
  paymentDataCallbacks: {
    onPaymentDataChanged: onPaymentDataChanged,
    onPaymentAuthorized: onPaymentAuthorized
  }
}

IsReadyToPayRequest

В этом объекте указываются поддерживаемые способы оплаты.

Свойство Тип Необходимость Описание
apiVersion Число Обязательно Основной номер версии API. В этой спецификации используется значение 2.
apiVersionMinor Число Обязательно Дополнительный номер версии API. В этой спецификации используется значение 0.
allowedPaymentMethods PaymentMethod[] Обязательно

Поддержка одного или нескольких способов оплаты из числа доступных в Google Pay API.

Для определения готовности пользователя к оплате значение tokenizationSpecification не требуется. Для каждого поддерживаемого способа оплаты, заданного в PaymentMethod, должны быть заданы все обязательные свойства parameters .

existingPaymentMethodRequired Логическое значение Необязательно

Если этот объект имеет значение true, то объект IsReadyToPayResponse содержит дополнительное свойство, описывающее готовность пользователя к оплате с помощью одного или нескольких способов, указанных в allowedPaymentMethods.

Пример

Ниже показано, как настроить поддержку платежных карт и токенов для устройств Android из всех доступных платежных систем.

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
        "allowedCardNetworks": ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"]
      }
    }
  ]
}

PaymentDataRequest

Используйте этот объект, чтобы настроить в Google Pay API поддержку вашего приложения.

Свойство Тип Необходимость Описание
apiVersion Число Обязательно Основной номер версии API. Для этой спецификации используется значение 2.
apiVersionMinor Число Обязательно Дополнительный номер версии API. Для этой спецификации используется значение 0.
merchantInfo MerchantInfo Обязательно Информация о продавце, запрашивающем платежные данные.
allowedPaymentMethods PaymentMethod[] Обязательно Поддержка одного или нескольких способов оплаты из числа доступных в Google Pay API.
transactionInfo TransactionInfo Обязательно Информация о том, будет ли транзакция авторизована исходя из согласия пользователя на эту транзакцию. Итоговая цена и ее статус включены.
callbackIntents Строка [] Необязательно Намерение обратного вызова, заданного для функции PaymentDataCallbacks.
  • PAYMENT_AUTHORIZATION
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION
emailRequired Логическое значение Необязательно Чтобы запросить адрес электронной почты, установите значение true.
shippingAddressRequired Логическое значение Необязательно Чтобы запросить полный адрес доставки, установите значение true.
shippingAddressParameters ShippingAddressParameters Необязательно Ограничения, связанные с доставкой (если shippingAddressRequired имеет значение true).
shippingOptionRequired Логическое значение Необязательно Установите значение true, если используется функция SHIPPING_OPTION с намерением обратного вызова. Поле обязательно, если включена авторизация платежей или динамическое обновление цен. Подробнее…
shippingOptionParameters ShippingOptionParameters[] Необязательно Используются настройки по умолчанию.

Пример

В этом примере показано, как настроить поддержку платежных карт и токенов для устройств Android из всех доступных платежных систем. Токенизация карт выполняется через шлюз example. Запрос способа платежа осуществляется для выставления окончательного счета на сумму 12,34 доллара США.

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "merchantInfo": {
    "merchantName": "Example Merchant"
  },
  "allowedPaymentMethods": [
    {
      "type": "CARD",
      "parameters": {
        "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
        "allowedCardNetworks": ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"]
      },
      "tokenizationSpecification": {
        "type": "PAYMENT_GATEWAY",
        "parameters": {
          "gateway": "example",
          "gatewayMerchantId": "exampleGatewayMerchantId"
        }
      }
    }
  ],
  "transactionInfo": {
    "totalPriceStatus": "FINAL",
    "totalPrice": "12.34",
    "currencyCode": "USD"
  }
}

PaymentDataCallbacks

Если вы включите в модуле интеграции динамическое обновление цен, обязательно добавьте обратные вызовы onPaymentDataChanged и onPaymentAuthorized.

Ресурс Тип Необходимость Описание
onPaymentDataChanged Функция Необязательно Вызывается, если для объекта PaymentDataRequest заданы следующие значения callbackIntents:
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION
onPaymentAuthorized Функция Обязательно Вызывается, если для объекта PaymentDataRequest в качестве значения callbackIntents задано PAYMENT_AUTHORIZATION.

Пример

Ниже приведены примеры конфигурации, которая может использоваться при настройке динамического обновления цен.

{
  onPaymentDataChanged: onPaymentDataChanged,
  onPaymentAuthorized: onPaymentAuthorized
}

PaymentDataRequestUpdate

Этот объект указывает на новую информацию о транзакциях, варианты доставки и ошибки, связанные со страницей оплаты.

Свойство Тип Необходимость Описание
newTransactionInfo TransactionInfo Необязательно Обновляет на странице оплаты информацию о транзакции.
newShippingOptionParameters ShippingOptionParameters Необязательно Обновляет на странице оплаты сведения о вариантах доставки.
error PaymentDataError Необязательно Добавляет на страницу оплаты сообщение об ошибке.

Пример

Ниже представлены все варианты запросов к Google Pay API об обновлении платежных данных.

{
  newTransactionInfo: {
   	displayItems: [
    {
      label: "Subtotal",
      type: "SUBTOTAL",
      price: "11.00",
    },
    {
      label: "Tax",
      type: "TAX",
      price: "1.00",
    }
  ],
  currencyCode: "USD",
  totalPriceStatus: "FINAL",
  totalPrice: "12.00",
  totalPriceLabel: "Total"
  },
  newShippingOptions: {
    defaultSelectedOptionId: "shipping-001",
    shippingOptions: [
      {
        "id": "shipping-001",
        "label": "Free: Standard shipping",
        "description": "Free Shipping delivered in 5 business days."
      }
    ]
  },
  error: {
    reason: "SHIPPING_ADDRESS_UNSERVICEABLE",
    message: "Cannot ship to the selected address",
    intent: "SHIPPING_ADDRESS"
  }
}

MerchantInfo

Этот объект содержит информацию о продавце, который запрашивает платежные данные.

Свойство Тип Необходимость Описание
merchantId Строка Обязательно Идентификатор продавца Google. Выдается после одобрения сайта специалистами Google. Обязательно, если при инициализации PaymentsClient свойство environment имеет значение PRODUCTION. Подробнее о процедуре одобрения и получении идентификатора продавца Google рассказано в этой статье.
merchantName Строка Необязательно Название продавца в кодировке UTF-8. Оно отображается на странице оплаты. Если продавец не распознан, а также в среде TEST, на странице оплаты появляется сообщение Pay Unverified Merchant (Оплата неподтвержденному продавцу).
merchantOrigin Строка Необязательно

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

Примеры

Ниже представлен пример объекта merchantInfo с полем merchantName и merchantId.

merchantInfo: {
    merchantName: "Example Merchant",
    merchantId: "01234567890123456789"
}

PaymentMethod

В этом объекте задается один или несколько способов оплаты, поддерживаемых Google Pay API, которые доступны для вашегосайта.

Свойство Тип Необходимость Описание
type Строка Обязательно

Короткий идентификатор поддерживаемого способа оплаты. В настоящее время поддерживаются только значения CARD и PAYPAL.

parameters Объект Обязательно Обязательные параметры указанного способа оплаты. Подробнее о допустимых значениях для способа оплаты CARD рассказано здесь. Также советуем прочитать информацию о допустимых значениях для способа оплаты PayPal: PAYPALParameters.
tokenizationSpecification PaymentMethodTokenizationSpecification Необязательно

Настройка аккаунта или поставщика механизма расшифровки для получения платежной информации.

Это свойство является обязательным для способа оплаты CARD.

Это свойство не действует, если оно является частью объекта IsReadyToPayRequest.

CARD

На этом примере показано, как настроить поддержку платежных карт и токенов для устройств Android из всех доступных платежных систем. Токенизация выполняется через шлюз example.

{
  "type": "CARD",
  "parameters": {
    "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
    "allowedCardNetworks": ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"]
  },
  "tokenizationSpecification": {
    "type": "PAYMENT_GATEWAY",
    "parameters": {
      "gateway": "example",
      "gatewayMerchantId": "exampleGatewayMerchantId"
    }
  }
}
PAYPAL

Ниже показано, как представить PayPal в качестве допустимого способа оплаты.

{
  “type”: “PAYPAL”,
  parameters: {
  	"purchase_context": {
    	     "purchase_units": [{
        		"payee": {
          		      "merchant_id": "PAYPAL_ACCOUNT_ID"
                      	   }
       	       } ]
  	  }
    },
   “tokenizationSpecification”: {
	type: “DIRECT”  }
}

TokenizationSpecification

Этот объект позволяет настроить аккаунт, которому будет передаваться платежная информация для получения оплаты.

Свойство Тип Необходимость Описание
type Строка Обязательно

Тип токенизации для способа оплаты, указанного в PaymentMethod. Для способа оплаты CARD допускаются значенияили. Для PAYPAL PaymentMethod используйте значение без указания параметра.

parameters Объект Обязательно Параметры, связанные с типом токенизации выбранного способа оплаты.

Шлюз

Измените значение параметра type на PAYMENT_GATEWAY, чтобы получить платежные данные и информацию о клиенте от платежного шлюза, использующего Google Pay API. Настройте свойства parameters согласно инструкциям шлюза, укажите стандартные свойства, включая полученный от Google идентификатор шлюза и ваш идентификатор аккаунта шлюза.

// [START EXAMPLE]
Example
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "example",
    "gatewayMerchantId": "exampleGatewayMerchantId"
  }
}
// [END EXAMPLE] // [START ACI]
ACI
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "aciworldwide",
    "gatewayMerchantId": "YOUR_ENTITY_ID"
  }
}
// [END ACI] // [START ADYEN]
Adyen
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "adyen",
    "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"
  }
}
// [END ADYEN] // [START ALFA-BANK]
Альфа-Банк
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "alfabank",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END ALFA-BANK] // [START BLUE_MEDIA]
Blue Media
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "bluemedia",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END BLUE_MEDIA] // [START BLUESNAP]
BlueSnap
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "bluesnap",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END BLUESNAP] // [START BRAINTREE]
Braintree
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "braintree",
    "braintree:apiVersion": "v1",
    "braintree:sdkVersion": braintree.client.VERSION,
    "braintree:merchantId": "YOUR_BRAINTREE_MERCHANT_ID",
    "braintree:clientKey": "YOUR_BRAINTREE_TOKENIZATION_KEY"
  }
}
// [END BRAINTREE] // [START BRASPAG]
Braspag
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "cielo",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END BRASPAG] // [START CARDCONNECT]
CardConnect
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "cardconnect",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END CARDCONNECT] // [START CHASE_PAYMENTECH]
Chase Paymentech
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "chase",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ACCOUNT_NUMBER"
  }
}
// [END CHASE_PAYMENTECH] // [START CHECKOUT]
Checkout.com
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "checkoutltd",
    "gatewayMerchantId": "YOUR_PUBLIC_KEY"
  }
}
// [END CHECKOUT] // [START CLOUDPAYMENTS]
CloudPayments
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "cloudpayments",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END CLOUDPAYMENTS] // [START CYBERSOURCE]
CyberSource
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "cybersource",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END CYBERSOURCE] // [START DATATRANS]
Datatrans
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "datatrans",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END DATATRANS] // [START EBANX]
EBANX
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "ebanx",
    "gatewayMerchantId": "YOUR_PUBLIC_INTEGRATION_KEY"
  }
}
// [END EBANX] // [START FIRST_DATA]
First Data
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "firstdata",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END FIRST_DATA] // [START GLOBAL_PAYMENTS]
Global Payments
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "globalpayments",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END GLOBAL_PAYMENTS] // [START GOPAY]
GoPay
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "gopay",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END GOPAY] // [START GMO_PAYMENT_GATEWAY]
GMO Payment Gateway
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "gmopg",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END GMO_PAYMENT_GATEWAY] // [START HITRUST]
HiTrust
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "hitrustpay",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END HITRUST] // [START IMSOLUTIONS]
IMSolutions
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "imsolutions",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END IMSOLUTIONS] // [START IQMETRIX]
iQmetrix
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "iqmetrixpaymentservicesgateway",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END IQMETRIX] // [START LYRA]
Lyra
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "lyra",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END LYRA] // [START MPGS]
MPGS
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "mpgs",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END MPGS] // [START MONEY_MAIL_RU]
Деньги@Mail.Ru
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "moneymailru",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END MONEY_MAIL_RU] // [START MUNDIPAGG]
Mundipagg
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "mundipagg",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END MUNDIPAGG] // [START NEWEBPAY]
Newebpay
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "newebpay",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END NEWEBPAY] // [START NEXI]
Nexi
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "nexi",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END NEXI] // [START NMI]
NMI
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "creditcall",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END NMI] // [START PAYSAFE]
Paysafe
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "paysafe",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END PAYSAFE] // [START PAYTURE]
Payture
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "payture",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END PAYTURE] // [START PAYU]
PayU
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "payu",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END PAYU] // [START PRZELEWY24]
Przelewy24
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "przelewy24",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END PRZELEWY24] // [START RBKMONEY]
RBKmoney
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "rbkmoney",
    "gatewayMerchantId": "YOUR_MERCHANT_ID"
  }
}
// [END RBKMONEY] // [START REDSYS]
Redsys
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "redsys",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END REDSYS] // [START SBERBANK]
Sberbank
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "sberbank",
    "gatewayMerchantId": "YOUR_ORGANIZATION_NAME"
  }
}
// [END SBERBANK] // [START SOFTBANK_PAYMENT_SERVICE]
Softbank Payment Service
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "sbps",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END SOFTBANK_PAYMENT_SERVICE] // [START SONY_PAYMENT_SERVICES]
Sony Payment Services
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "sonypaymentservices",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END SONY_PAYMENT_SERVICES] // [START SQUARE]
Square
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "square",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END SQUARE] // [START STRIPE]
Stripe
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "stripe",
    "stripe:version": "2018-10-31",
    "stripe:publishableKey": "YOUR_PUBLIC_STRIPE_KEY"
  }
}
// [END STRIPE] // [START TAPPAY]
TapPay
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "tappay",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END TAPPAY] // [START TINKOFF]
Тинькофф
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "tinkoff",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END TINKOFF] // [START UNITELLER]
Uniteller
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "uniteller",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END UNITELLER] // [START VANTIV]
Vantiv
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "vantiv",
    "vantiv:merchantPayPageId": "YOUR_PAY_PAGE_ID",
    "vantiv:merchantOrderId": "YOUR_ORDER_ID",
    "vantiv:merchantTransactionId": "YOUR_TRANSACTION_ID",
    "vantiv:merchantReportGroup": "*web"
  }
}
// [END VANTIV] // [START VERITRANS]
Veritrans
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "veritrans",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END VERITRANS] // [START VINDICIA]
Vindicia
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "vindicia",
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"
  }
}
// [END VINDICIA] // [START WORLDPAY]
Worldpay
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "worldpay",
    "gatewayMerchantId": "YOUR_WORLDPAY_MERCHANT_ID"
  }
}
// [END WORLDPAY] // [START YANDEX]
Яндекс
"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "yandexcheckout",
    "gatewayMerchantId": "YOUR_SHOP_ID"
  }
}
// [END YANDEX]

Direct

Если для параметра type задано значение DIRECT, то ответ будет расшифровываться на ваших серверах. При этой конфигурации действуют дополнительные требования Google к безопасности данных и стандарты PCI DSS.

Свойство Тип Необходимость Описание
protocolVersion Строка Обязательно Версия протокола шифрования/подписи, допустимая в ответе. В настоящее время поддерживается значение ECv2. Подробнее о доступных протоколах шифрования и подписи рассказывается в документе Криптография платежных данных для продавцов.
publicKey Строка Обязательно Открытый ключ на эллиптической кривой, закодированный по стандарту Base64. Более подробную информацию можно найти в документации о криптографии для продавцов, в разделе Формат открытого ключа шифрования.
Пример

В этом примере значение параметра publicKey сокращено для удобства чтения.

"tokenizationSpecification": {
  "type": "DIRECT",
  "parameters": {
    "protocolVersion": "ECv2",
    "publicKey": "BOdoXP1aiNp.....kh3JUhiSZKHYF2Y="
  }
}

CardParameters

Этот объект позволяет указать поддерживаемые типы карт. На основе приведенной в нем информации Google фильтрует доступные для покупателей типы карт.

Свойство Тип Необходимость Описание
allowedAuthMethods Строка [] Обязательно

Поддерживаемые поля для аутентификации транзакций по карте:

  • PAN_ONLY – метод аутентификации для платежных карт, данные которых хранятся в аккаунте Google. Возвращает номер счета (PAN), а также месяц и год окончания срока действия.
  • CRYPTOGRAM_3DS – метод аутентификации для карт, данные которых хранятся в виде токенов для устройств Android. Возвращает криптограмму 3-D Secure (3DS), сгенерированную на устройстве.
allowedCardNetworks Строка Обязательно

Одна или несколько из поддерживаемых вами платежных систем, доступных в Google Pay API.

  • AMEX
  • DISCOVER
  • INTERAC
  • JCB
  • MASTERCARD
  • VISA
allowPrepaidCards Логическое значение Необязательно Если предоплаченные карты не поддерживаются, установите значение false. По умолчанию предоплаченные карты поддерживаются для выбранных вами платежных систем.
billingAddressRequired Логическое значение Необязательно Если необходим платежный адрес, установите значение true. Запрос дополнительных данных усложняет процедуру покупки и может привести к снижению коэффициента конверсии. Запрашивайте платежный адрес только в том случае, если он необходим для совершения транзакции.
billingAddressParameters BillingAddressParameters Необязательно Поля, которые возвращаются, если для параметра billingAddressRequired выбрано значение true.

Пример

Ниже приведен пример кода, с помощью которого можно настроить поддержку всех доступных типов карт и методов аутентификации карты.

{
  "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
  "allowedCardNetworks": ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"]
}

BillingAddressParameters

Этот объект позволяет задать дополнительные поля для запроса платежного адреса.

Свойство Тип Необходимость Описание
format Строка Необязательно

Формат платежного адреса для совершения транзакции:

  • MIN – имя, код страны и почтовый индекс (по умолчанию).
  • FULL – имя, почтовый адрес, населенный пункт, регион, код страны и почтовый индекс.
phoneNumberRequired Логическое значение Необязательно Если для обработки транзакции необходим номер телефона, установите значение true.

Пример

Ниже приведен запрос краткой версии платежного адреса (значение по умолчанию).

{
  "format": "MIN"
}

ShippingAddressParameters

Этот объект позволяет настроить ограничения для доставки.

Свойство Тип Необходимость Описание
allowedCountryCodes Строка [] Необязательно Значения кодов стран, в которые осуществляется доставка, в соответствии со стандартом ISO 3166-1 alpha-2. Если они не указаны, пользователь может вводить любой адрес доставки.
phoneNumberRequired Логическое значение Необязательно Если нужно указать номер телефона, установите значение true.

Пример

Ниже приведен запрос адреса доставки в США.

{
  "allowedCountryCodes": ["US"]
}

ShippingOptionParameters

Свойство Тип Необходимость Описание
shippingOptions SelectionOption Обязательно Все варианты доставки, доступные для текущего запроса.
defaultSelectedOptionId Строка Необязательно Идентификатор варианта доставки, установленного по умолчанию. Если поле не заполнено, по умолчанию применяется вариант, указанный первым.

Пример

Ниже представлены все варианты доставки для страницы оплаты и варианта, выбранного по умолчанию.

{
  defaultSelectedOptionId: "0",
  shippingOptions: [
    {
      "id": "shipping-001",
      "label": "$0.00: Free shipping",
      "description": "Free Shipping delivered in 5 business days."
    },
    {
      "id": "shipping-002",
      "label": "$1.99: Standard shipping",
      "description": "Standard shipping delivered in 3 business days."
    },
    {
      "id": "shipping-003",
      "label": "$1000: Express shipping",
      "description": "Express shipping delivered in 1 business day."
    }
  ]
}

SelectionOption

Свойство Тип Необходимость Описание
id Строка Обязательно Разработчик может указать любое значение, которое будет возвращено в параметре PaymentData.
label Строка Обязательно Ярлык варианта.
description Строка Необязательно Описание, расположенное под ярлыком.

Пример

Ниже приведен пример варианта доставки.

{
  "id": "shipping-003",
  "label": "$10: Express shipping",
  "description": "Express shipping delivered in 1 business day."
}

TransactionInfo

Этот объект описывает транзакцию, по которой определяется платежеспособность пользователя, а также диалоговое окно, в котором он подтверждает транзакцию.

Свойство Тип Необходимость Описание
currencyCode Строка Обязательно Алфавитный код валюты в соответствии со стандартом ISO 4217.
totalPriceStatus Строка Обязательно

Статус итоговой цены.

  • NOT_CURRENTLY_KNOWN. Итоговая цена используется для проверки возможностей покупателя.
  • ESTIMATED. Итоговая цена может меняться в зависимости от переданных в ответе деталей (например, платежный адрес находится в стране, где взимается налог с продаж).
  • FINAL. Итоговая цена равна сумме платежа, показанной покупателю.
totalPrice Строка Необязательно

Общая денежная стоимость транзакции с возможностью округления до двух десятичных знаков. Это поле можно не указывать только в том случае, если для totalPriceStatus задано значение NOT_CURRENTLY_KNOWN.

Формат строки должен соответствовать формату регулярного выражения: ^[0-9]+(\.[0-9][0-9])?$

displayItems DisplayItem[] Нет Все доступные списания, связанные с текущим запросом. Заполняется, только если используется авторизация платежей или динамическое обновление цен.
totalPriceLabel Строка Необязательно Пользовательский ярлык с итоговой ценой отображаемых товаров.
checkoutOption Строка Необязательно

Позволяет настроить текст кнопки отправки на странице оплаты Google Pay.

  • DEFAULT – стандартный текст для выбранного totalPriceStatus (по умолчанию).
  • COMPLETE_IMMEDIATE_PURCHASE – оплата указанным способом сразу после того, как покупатель подтвердит выбранные им параметры. Этот вариант доступен, только если для totalPriceStatus установлено значение FINAL.

Пример

Ниже приведен пример итоговой цены в долларах США.

{
  displayItems: [
    {
      label: "Subtotal",
      type: "SUBTOTAL",
      price: "11.00",
    },
    {
      label: "Tax",
      type: "TAX",
      price: "1.00",
    }
  ],
    currencyCode: "USD",
    totalPriceStatus: "FINAL",
    totalPrice: "12.00",
    totalPriceLabel: "Total",
    checkoutOption: "DEFAULT",
    newShippingOptions: {
 	    defaultSelectedOptionId: "shipping-001",
      shippingOptions: [
        {
          "id": "shipping-001",
          "label": "Free: Standard shipping",
          "description": "Free Shipping delivered in 5 business days."
        }
      ]
    },
    error: {
   	  reason: "SHIPPING_ADDRESS_UNSERVICEABLE",
      message: "Cannot ship to the selected address",
      intent: "SHIPPING_ADDRESS"
    }
}

ButtonOptions

Этот объект позволяет настроить кнопку оплаты через Google Pay. Подробнее о доступных типах кнопок, цветах и требованиях к отображению на экранах говорится в разделе Правила использования бренда.

Свойство Тип Необходимость Описание
onClick

function или Object

Обязательно Обратный вызов блока прослушивания событий при нажатии кнопки <button>.
buttonColor Строка Необязательно
  • default – выбранное значение по умолчанию. В настоящее время используется black, но он может измениться.
  • black – черная кнопка для размещения на белом или другом светлом фоне.
  • white – белая кнопка для размещения на цветном фоне.
buttonType Строка Необязательно
  • long – кнопка с текстом "Оплатить через Google Pay" (по умолчанию). Если в настройках браузера пользователя выбран один из доступных языков, будет показана локализованная версия кнопки.
  • short – кнопка оплаты через Google Pay без текста.

PayPal Parameters

Этот объект позволяет определить параметры PayPal.

Свойство Тип Необходимость Описание
purchase_context PurchaseContext Обязательно Описание, составленное из информации о заказе.

Пример

Ниже показано, как включить поддержку оплаты через PayPal.

{
  "purchase_context": {
    "purchase_units": [
      {
        "payee": {
          "merchant_id": "PAYPAL_ACCOUNT_ID"
        }
      }
    ]
  }
}

PurchaseContext

В этом объекте содержатся сведения о заказе.

Свойство Тип Необходимость Описание
purchase_units PurchaseUnit[] Обязательно Сведения о договоре между продавцом и покупателем.

PurchaseUnit

Этот объект описывает договор между покупателем и продавцом в системе PayPal. Подробнее об объекте purchase_unit рассказывается в документации по API-интерфейсам PayPal.

Свойство Тип Необходимость Описание
payee Payee Обязательно Получатель средств по транзакции.

Payee

В этом объекте содержится информация о продавце – получателе средств. Подробнее об объекте payee написано в документации по API-интерфейсам PayPal.

О других поддерживаемых дополнительных параметрах говорится в этом разделе документации PayPal.

Пример

Ниже показано, как включить поддержку оплаты через PayPal.

{
  “type”: “PAYPAL”,
  parameters: {
  	"purchase_context": {
    	     "purchase_units": [{
        		"payee": {
          		      "merchant_id": "PAYPAL_ACCOUNT_ID"
                      	   }
       	       } ]
  	  }
    },
   “tokenizationSpecification”: {
	type: “DIRECT”  }
}

Пример

Ниже показано, как создать кнопку оплаты через Google Pay с обработкой клика и параметрами показа по умолчанию.

{
  onClick: onGooglePaymentButtonClicked
}

Объекты ответа

Объекты ответа – это те, что Google Pay API возвращает в процессе работы с клиентом.

IsReadyToPayResponse

Объект содержит информацию о том, что посетитель веб-сайта может предоставить платежные данные по запросу.

Свойство Тип Всегда в наличии Описание
result Логическое значение Да Посетитель может предоставить платежные данные по запросу. Возможность совершить оплату может быть связана с тем, какой браузер использует посетитель сайта (например, может ли пользователь войти в аккаунт Google и выбрать способ оплаты).
paymentMethodPresent Логическое значение Нет

Значение true указывает на то, что посетитель выбрал один или несколько способов оплаты, как указано в свойстве allowedPaymentMethods объекта IsReadyToPayRequest.

Существует только в том случае, если для свойства existingPaymentMethodRequired в объекте IsReadyToPayRequest было задано значение true.

Если свойство environment для PaymentsClient имеет значение TEST, то способ оплаты всегда считается выбранным.

Пример

Посетитель может предоставить платежные данные по запросу.

{
  "result": true
}

PaymentData

Объект ответа, возвращаемый системой Google после того, как покупатель одобрил платеж.

Свойство Тип Всегда в наличии Описание
apiVersion Число Да Основной номер версии API. Значение в ответе совпадает со значением, указанным в PaymentDataRequest.
apiVersionMinor Число Да Дополнительный номер версии API. Значение в ответе совпадает со значением, указанным в PaymentDataRequest.
paymentMethodData PaymentMethodData Да Информация о выбранном способе оплаты.
email Строка Нет Адрес электронной почты. Указывается, если для параметра emailRequired в объекте PaymentDataRequest было установлено значение true. Если значение true приведено в другом запросе, оно действовать не будет.
shippingAddress Address Нет Адрес доставки. Указывается, если для параметра shippingAddressRequired в объекте PaymentDataRequest было выбрано значение true.

Пример

Ниже показано, как выглядит результат запроса в Google Pay API версии 2.0 на странице оплаты, когда выбран способ оплаты CARD. Токен создан для шлюза example.

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "paymentMethodData": {
    "type": "CARD",
    "description": "Visa •••• 1234",
    "info": {
      "cardNetwork": "VISA",
      "cardDetails": "1234"
    },
    "tokenizationData": {
      "type": "PAYMENT_GATEWAY",
      "token": "examplePaymentMethodToken"
    }
  }
}

IntermediatePaymentData

Этот объект возвращается Google Pay API, если указан параметр onPaymentDataChanged() и изменены вариант доставки или адрес доставки.

Свойство Тип Необходимость Описание
callbackTrigger Строка Необязательно

Причина, по которой отозван обратный вызов платежных данных. Всего их две:

  • INITIALIZE
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION
shippingAddress IntermediateAddress Необязательно Адрес, выбранный на странице оплаты.
shippingOptionData SelectionOptionData Необязательно Вариант доставки, выбранный на странице оплаты.

Пример

Пример промежуточной полезной нагрузки, которую возвращает Google Pay API.

{
  callbackTrigger: "SHIPPING_ADDRESS"
  shippingAddress: {
    administrativeArea: "NY"
    countryCode: "US"
    locality: "New York"
    postalCode: "10011"
  },
  shippingOptionData: {
    id: "shipping-001"
  }
}

PaymentMethodData

Этот объект содержит данные о выбранном способе оплаты

Свойство Тип Всегда в наличии Описание
type Строка Да Тип PaymentMethod type, выбранный на странице оплаты Google Pay.
description Строка Да

Отображающееся для пользователя описание способа оплаты, который связан с транзакцией.

info Объект Да Значение этого свойства зависит от типа (type) способа оплаты. Дополнительную информацию для значения CARD можно посмотреть в разделе CardInfo.
tokenizationData PaymentMethodTokenizationData Да Информация о токенизации для выбранного способа оплаты.

Пример

Это пример ответа, в котором показано, как способ оплаты CARD, выбранный на странице в Google Pay, создает токен для шлюза example.

{
  "type": "CARD",
  "description": "Visa •••• 1234",
  "info": {
    "cardNetwork": "VISA",
    "cardDetails": "1234"
  },
  "tokenizationData": {
    "type": "PAYMENT_GATEWAY",
    "token": "examplePaymentMethodToken"
  }
}

CardInfo

Этот объект содержит информацию о выбранной платежной карте.

Свойство Тип Всегда в наличии Описание
cardDetails Строка Да Сведения о карте. Это значение обычно содержит последние четыре цифры выбранного номера счета.
cardNetwork Строка Да

Выбранная платежная система. Отображаемые значения соответствуют формату параметра allowedCardNetworks в объекте CardParameters.

Это значение не предназначено для показа пользователю. Его можно использовать, если требуются сведения о карте покупателя. Например, такие данные нужны службе поддержки, чтобы понять, с какой карты произошла оплата транзакции. Если нужно показать информацию покупателю, используйте свойство description в объекте PaymentMethodData.

billingAddress Address Нет Платежный адрес, связанный с выбранным способом оплаты. Указывается, если для параметра billingAddressRequired в объекте CardParameters выбрано значение true.

Пример

Пример карты, которая относится к платежной системе Visa:

{
  "cardNetwork": "VISA",
  "cardDetails": "1234"
}

PaymentMethodTokenizationData

Этот объект содержит информацию о токенизации для выбранного способа оплаты.

Свойство Тип Всегда в наличии Описание
type Строка Да Тип токенизации для выбранного способа оплаты. Это значение совпадает со значением type, заданным в параметре PaymentMethodTokenizationSpecification.
token Строка Нет

Сгенерированный токен способа оплаты.

  • : строка объекта JSON, содержащая токен для взимания оплаты, который был выдан вашим шлюзом.
  • : атрибуты protocolVersion, signature и signedMessage, предназначенные для расшифровки. Более подробную информацию можно найти в разделе.

Пример

Так выглядит токенизированный ответ, подготовленный для шлюза example.

{
  "type": "PAYMENT_GATEWAY",
  "token": "examplePaymentMethodToken"
}

DisplayItem

Свойство Тип Необходимость Описание
label Строка Обязательно Ярлык, который будет отображаться для определенного варианта.
type Строка Обязательно

Тип отображаемой строки:

  • LINE_ITEM
  • SUBTOTAL
price Строка Обязательно Денежная стоимость товара в корзине с возможностью округления до двух десятичных знаков. Допустимы отрицательные значения.
status Строка Необязательно

Вариативность цены зависит от ее статуса. Статусов всего два:

  • FINAL
  • PENDING

По умолчанию используется значение FINAL.

Пример

Ниже показано, как может выглядеть список транзакций на странице оплаты.

{
  displayItems: [
    {
      label: "Subtotal",
      type: "SUBTOTAL",
      price: "11.00",
    },
    {
      label: "Tax",
      type: "TAX",
      price: "1.00",
    },
    {
      "label": "Shipping",
      "type": "LINE_ITEM",
      "price": "0", // Won't be displayed since status is PENDING
      "status": "PENDING",
    }
  ]
}

PaymentAuthorizationResult

Этот объект содержит информацию о том, успешно ли прошла авторизация оплаты.

Ресурс Тип Необходимость Описание
transactionState Строка Обязательно Операция приводит к одному из следующих результатов:
  • SUCCESS
  • ERROR
error PaymentDataError Необязательно Если попытку необходимо повторить, пользователь видит сообщение об ошибке.

Пример

Ниже показан результат обработки платежа:

{
  transactionState: "ERROR",
  error: {
    reason: "PAYMENT_DATA_INVALID",
    message: "Cannot pay with payment credentials",
    intent: "PAYMENT_AUTHORIZATION"
  }
}

PaymentDataError

Свойство Тип Необходимость Описание
reason Строка Обязательно

Одна из стандартных причин ошибки:

  • PAYMENT_DATA_INVALID
  • SHIPPING_ADDRESS_INVALID
  • SHIPPING_ADDRESS_UNSERVICEABLE
  • SHIPPING_OPTION_INVALID
  • OTHER_ERROR
message Строка Обязательно Сообщение об ошибке, которое отображается в диалоговом окне.
intent Строка Обязательно

Значение ошибки. Оно должно быть изначально зарегистрировано в запросе PaymentDataRequest.

  • PAYMENT_AUTHORIZATION
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION

Пример

Ниже приведено значение ошибки и сообщение, которое соответствует ей на странице оплаты.

{
  error: {
    reason: "SHIPPING_OPTION_INVALID",
    message: "This shipping option is invalid for the given address",
    intent: "SHIPPING_OPTION"
  }
}

Адрес

Объект, отображающий информацию о запрошенном почтовом адресе. Все свойства объекта являются строками.

Адрес может быть возвращен в формате MIN, если для параметра billingAddressFormat выбрано значение MIN. Адрес доставки отображается в формате FULL. Все свойства ответа в формате MIN содержатся и в ответе в формате FULL.

Свойство Формат адреса Описание
name MIN Полное имя адресата.
postalCode MIN Почтовый индекс.
countryCode MIN Код страны в соответствии со стандартом ISO 3166-1 alpha-2.
phoneNumber MIN Номер телефона. Указывается, если для параметра phoneNumberRequired в объекте PaymentDataRequest выбрано значение true.
address1 FULL Первая строка адреса.
address2 FULL Вторая строка адреса.
address3 FULL Третья строка адреса.
locality FULL Город, район или пригород.
administrativeArea FULL Административная единица страны, например область, республика или край.
sortingCode FULL Код почтового отделения.

Пример

Пример адреса в США, указанного на нескольких строках.

{
  "name": "John Doe",
  "address1": "c/o Google LLC",
  "address2": "1600 Amphitheatre Pkwy",
  "address3": "Building 40",
  "locality": "Mountain View",
  "administrativeArea": "CA",
  "countryCode": "US",
  "postalCode": "94043",
  "sortingCode": ""
}

IntermediateAddress

Свойство Тип Необходимость Описание
administrativeArea Строка Обязательно Административная единица страны, например область, республика или край.
countryCode Строка Обязательно Код страны в соответствии со стандартом ISO 3166-1 alpha-2.
locality Строка Обязательно Город, район или пригород.
postalCode Строка Обязательно Почтовый индекс, сокращенный до цифр, указывающих на страну. Для Канады и Великобритании указываются первые 3 цифры, а для США – первые пять.

Пример

В этом примере показан адрес, выбранный на странице оплаты.

{
  administrativeArea: "NY",
  countryCode: "US",
  locality: "New York",
  postalCode: "10011"
}

SelectionOptionData

Свойство Тип Необходимость Описание
id Строка Обязательно Совпадает с объектом SelectionOption.id.

Пример

Ниже показан вариант доставки, выбранный на странице оплаты.

{
  id: "shipping-001"
}

Объекты ошибки

Так называют объекты, которые были отклонены методами клиента JavaScript.

PaymentsError

Ниже перечислены ошибки, возвращаемые методами клиента JavaScript. Сообщения о них могут не показываться пользователям.

Свойство Тип Описание
statusCode Строка Короткий код, описывающий тип ошибки.
statusMessage Строка Сообщение для разработчика с описанием ошибки и возможными вариантами ее исправления.

Ошибки при добавлении пользователей

Ниже перечислены ошибки, которые могут возникнуть во всех методах JavaScript. Зайдите в консоль разработчика, чтобы проверить не появились ли другие сообщения об ошибках.

Код статуса Описание
BUYER_ACCOUNT_ERROR Пользователь Google не может предоставить платежные данные.
DEVELOPER_ERROR

Неверный формат переданного параметра. Сообщение об ошибке может появиться в консоли браузера в любой настроенной среде.

MERCHANT_ACCOUNT_ERROR

У сайта нет прав доступа к Google Pay API. Это может быть связано с неправильной конфигурацией или с неверным идентификатором продавца. Проверьте поле statusMessage, чтобы получить больше информации. Если у вас по-прежнему возникают трудности, свяжитесь со службой поддержки.

INTERNAL_ERROR Стандартная ошибка сервера.