Method: associateAccount

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

Привязка учетной записи происходит после того, как интегратор аутентифицирует пользователя. Связь происходит посредством межсерверного вызова, который содержит requestId для связанного потока аутентификации ( authenticationRequestId ), associationId и googlePaymentToken (GPT). Обработчик платежей должен связать associationId и googlePaymentToken с учетной записью клиента для аутентификации. GPT используется для инициации платежей. associationId используется во время вызовов повторной аутентификации для идентификации учетной записи для аутентификации.

Если Google отправляет associationId или googlePaymentToken , который интегратор уже видел во время другой ассоциации, он выдает ошибку.

Если конечная точка обнаруживает ошибку при обработке запроса, тело ответа от этой конечной точки должно иметь тип ErrorResponse .

Пример запроса выглядит так:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "cmVxdWVzdDE",
    "requestTimestamp": "1481899949606"
 },
 "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ__",
 "authenticationRequestId": "bnAxdWTydDX==",
 "associationId": "LmddbXBsZSByZWZlcmVuY2UgdG9rZW4gdmFsdWU_",
 "provideUserInformation": true
}

Пример ответа выглядит так:


  {
  "responseHeader": {
    "responseTimestamp": "1481899949611"
  },
  "paymentIntegratorAssociateAccountId": "xx77df88934hfd",
  "accountId": "1234-5678-91",
  "accountNickname": "***-91",
  "tokenExpirationTime": "0",
  "userInformation": {
    "name": "Example Customer",
    "addressLine": ["123 Main St"],
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "postalCodeNumber": "80309",
    "countryCode": "US"
  },
  "result": "SUCCESS"
}

HTTP-запрос

POST https://www.integratorhost.example.com/v1/associateAccount

Тело запроса

Тело запроса содержит данные следующей структуры:

JSON-представление
{
  "requestHeader": {
    object (RequestHeader)
  },
  "provideUserInformation": boolean,
  "googlePaymentToken": string,
  "associationId": string,

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
Поля
requestHeader

object ( RequestHeader )

ОБЯЗАТЕЛЬНО : общий заголовок для всех запросов.

provideUserInformation

boolean

ОБЯЗАТЕЛЬНО : true, если мы хотим, чтобы интегратор предоставил адрес, связанный с этой учетной записью.

googlePaymentToken

string

ОБЯЗАТЕЛЬНО : токен, который Google будет использовать для инициирования покупок через платежную систему.

Это строка, максимальная длина которой составляет 100 символов.

associationId

string

ОБЯЗАТЕЛЬНО : идентификатор этой ассоциации. Этот идентификатор создается Google и отправляется во время повторной аутентификации, чтобы определить, какая учетная запись должна быть аутентифицирована.

Это строка, максимальная длина которой составляет 100 символов.

Поле объединения account_verification .

account_verification может быть только одним из следующих:

authenticationRequestId

string

НЕОБЯЗАТЕЛЬНО : requestId запроса аутентификации, который предшествовал этому вызову. Этот идентификатор был сгенерирован Google во время процесса аутентификации. Это присутствует только в том случае, если пользователь прошел аутентификацию приложения Android, веб-аутентификацию или метод асинхронной аутентификации, который использует authenticationResultNotification .

otpVerification

object ( OtpVerification )

НЕОБЯЗАТЕЛЬНО : данные, необходимые для проверки OTP, сгенерированного sendOtp . Это присутствует только в том случае, если пользователь прошел путь sendOtp .

Тело ответа

Объект ответа для метода связанной учетной записи.

В случае успеха тело ответа содержит данные следующей структуры:

JSON-представление
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorAssociateAccountId": string,
  "tokenExpirationTime": string,
  "accountId": string,
  "userMessage": string,
  "userInformation": {
    object (UserInformation)
  },
  "result": enum (AssociateAccountResultCode),

  // Union field account_names can be only one of the following:
  "accountNickname": string,
  "fullAccountNickname": string
  // End of list of possible types for union field account_names.
}
Поля
responseHeader

object ( ResponseHeader )

ОБЯЗАТЕЛЬНО : общий заголовок для всех ответов.

paymentIntegratorAssociateAccountId

string

ОБЯЗАТЕЛЬНО : этот идентификатор специфичен для интегратора и генерируется интегратором. Он используется в целях отладки только для идентификации этого вызова. Это идентификатор, по которому интегратор знает этот вызов.

tokenExpirationTime

string ( int64 format)

НЕОБЯЗАТЕЛЬНО : миллисекунды с момента истечения срока действия токена. Используйте 0 , чтобы указать, что срок действия токена не истек.

accountId

string

ОБЯЗАТЕЛЬНО : идентификатор учетной записи пользователя у интегратора. Это используется для анализа рисков Google, чтобы понять повторное использование учетной записи и взаимосвязь между ней, а также агентов по работе с клиентами Google, чтобы помочь клиентам диагностировать проблемы. Этот идентификатор должен быть узнаваемым пользователем (например, пользователь знает этот идентификатор, поскольку он указан в его выписке или появляется на веб-сайте после входа в учетную запись).

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

userMessage
(deprecated)

string

УСТАРЕЛО : описание результата, которое будет отображаться пользователю, если результат не SUCCESS .

userInformation

object ( UserInformation )

ОБЯЗАТЕЛЬНО : информация о пользователе, которую интегратор знает и будет передавать в Google об этом клиенте. Используется для информации о рисках и предварительного заполнения адресов.

result

enum ( AssociateAccountResultCode )

ОБЯЗАТЕЛЬНО : результат этой ассоциации.

Поле объединения account_names .

account_names может быть только одним из следующих:

accountNickname

string

НЕОБЯЗАТЕЛЬНО : строка, по которой пользователь узнает эту учетную запись для целей отображения. Это суффикс ника учетной записи. Например, последние четыре цифры номера телефона. Google укажет в пользовательском интерфейсе, что это всего лишь суффикс ника.

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

fullAccountNickname

string

НЕОБЯЗАТЕЛЬНО : строка, по которой пользователь узнает эту учетную запись для целей отображения. В отличие от accountNickname , это полный псевдоним учетной записи. Например, 56565-56501 для номера телефона или sally@sample-email.com для адреса электронной почты.

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

Информация о пользователе

Структура, содержащая информацию о пользователе.

JSON-представление
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string,
  "phone": string,
  "emailAddress": string
}
Поля
name

string

НЕОБЯЗАТЕЛЬНО : полное имя клиента.

addressLine[]

string

НЕОБЯЗАТЕЛЬНО : содержит неструктурированный текст адреса.

localityName

string

НЕОБЯЗАТЕЛЬНО : это довольно расплывчатый термин, но обычно он относится к части адреса, посвященной городу. В регионах мира, где населенные пункты не определены четко или плохо вписываются в эту структуру (например, Япония и Китай), оставьте localityName пустым и используйте адресную строку.

Примеры: город в США, ИТ-коммуна, почтовый город Великобритании.

administrativeAreaName

string

НЕОБЯЗАТЕЛЬНО : высшее административное подразделение этой страны. Примеры: штат США, ИТ-регион, провинция CN, префектура JP.

postalCodeNumber

string

НЕОБЯЗАТЕЛЬНО : несмотря на название, значения postalCodeNumber часто являются буквенно-цифровыми. Примеры: «94043», «SW1W», «SW1W 9TQ».

countryCode

string

НЕОБЯЗАТЕЛЬНО : код страны адреса клиента, который, как ожидается, будет ISO-3166-1 Alpha-2.

phone

string

НЕОБЯЗАТЕЛЬНО : номер телефона клиента.

emailAddress

string

НЕОБЯЗАТЕЛЬНО : адрес электронной почты клиента.

AssociateAccountResultCode

Коды результатов для связанной учетной записи.

Перечисления
UNKNOWN_RESULT Никогда не устанавливайте это значение по умолчанию!
SUCCESS Успешное объединение.
USER_AUTHENTICATION_FAILED Несмотря на то, что пакет аутентификации учетной записи был возвращен, аутентификация пользователя не удалась.
NOT_ELIGIBLE Учетная запись пользователя не имеет права на эту услугу.
OTP_NOT_MATCHED OTP не соответствовал тому, что отправил интегратор.
OTP_ALREADY_USED OTP уже использовался.
OTP_LIMIT_REACHED Пользователь запросил или попытался подтвердить слишком много одноразовых паролей.
OTP_EXPIRED Срок действия OTP истек.