Method: sendOtp

Запрашивает интегратора отправить OTP на номер телефона.

Если интегратор возвращает SUCCESS , Google ожидает отправки SMS на номер телефона.

Google предоставляет только accountPhoneNumber , когда пользователь изначально связывает свою учетную запись с Google. После этого для всех последующих вызовов будет отправляться только associationId .

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

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


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "0123434-otp-abc",
    "requestTimestamp": "1502545413026"
  },
  "accountPhoneNumber": "+918067218010",
  "smsMatchingToken": "AB12345678C",
  "otpContext": {
    "association": {}
  }
}

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


{
  "responseHeader": {
    "responseTimestamp": "1502545413098"
  },
  "paymentIntegratorSendOtpId": "99==ABC EF",
  "result": "SUCCESS"
}

HTTP-запрос

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

Тело запроса

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

JSON-представление
{
  "requestHeader": {
    object (RequestHeader)
  },
  "smsMatchingToken": string,
  "otpContext": {
    object (OtpContext)
  },

  // Union field account_identifier can be only one of the following:
  "accountPhoneNumber": string,
  "associationId": string
  // End of list of possible types for union field account_identifier.
}
Поля
requestHeader

object ( RequestHeader )

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

smsMatchingToken

string

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

Например, если SMS обычно выглядит так:

Here's the OTP you requested: <OTP>

А Google отправляет на это поле «0123456789A», тогда СМС должно выглядеть так:

0123456789A

Вот запрошенный вами OTP: YYXXZZ.

Альтернативно это может выглядеть так:

Here's the OTP you requested: YYXXZZ

0123456789А

otpContext

object ( OtpContext )

НЕОБЯЗАТЕЛЬНО : это контекст, в котором запрашивается OTP.

Поле объединения account_identifier . ОБЯЗАТЕЛЬНО : это идентификатор учетной записи, для которой необходимо отправить OTP. account_identifier может быть только одним из следующих:
accountPhoneNumber

string

Это номер телефона в формате E.164. Примеры: +14035551111 и +918067218000. Это всегда будет начинаться со знака + и после этого включать только цифры (без тире).

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

associationId

string

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

Он заполняется для всех последующих вызовов после первоначальной ассоциации.

Тело ответа

Объект ответа для метода sendOtp.

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

JSON-представление
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorSendOtpId": string,
  "result": enum (SendOtpResultCode)
}
Поля
responseHeader

object ( ResponseHeader )

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

paymentIntegratorSendOtpId

string

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

result

enum ( SendOtpResultCode )

ОБЯЗАТЕЛЬНО : Результат этого запроса.

ОтпКонтекст

Контекст, в котором запрашивается OTP.

JSON-представление
{

  // Union field otp_context can be only one of the following:
  "association": {
    object (Empty)
  },
  "mandateCreation": {
    object (Empty)
  },
  "associationWithMandateCreation": {
    object (Empty)
  }
  // End of list of possible types for union field otp_context.
}
Поля
Поле объединения otp_context . ОБЯЗАТЕЛЬНО : контекст, в котором запрашивается OTP. otp_context может быть только одним из следующих:
association

object ( Empty )

OTP запрашивается в контексте ассоциации/повторной ассоциации.

mandateCreation

object ( Empty )

КОП запрашивается в контексте создания мандата.

associationWithMandateCreation

object ( Empty )

OTP запрашивается для ассоциации наряду с созданием мандата.

Пустой

Этот тип не имеет полей.

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

Представление JSON для Empty — это пустой объект JSON {} .

SendOtpResultCode

Коды результатов для отправки запроса OTP.

Перечисления
UNKNOWN_RESULT Никогда не устанавливайте это значение по умолчанию!
SUCCESS Интегратор отправил OTP.
PHONE_NUMBER_NOT_ASSOCIATED_WITH_ACCOUNT Номер телефона не связан с учетной записью, определенной по associationId .
UNKNOWN_PHONE_NUMBER Номер телефона не привязан ни к одной учетной записи. Это используется, когда associationId не установлен.
MESSAGE_UNABLE_TO_BE_SENT По какой-то причине Интегратор не смог отправить OTP. Это временная ошибка, которая может привести к повторной попытке вызова.
INVALID_PHONE_NUMBER Формат номера телефона неправильный.
NOT_ELIGIBLE Учетная запись пользователя не имеет права на эту услугу.
OTP_LIMIT_REACHED Пользователь запросил или попытался подтвердить слишком много одноразовых паролей.
ACCOUNT_CLOSED

Учетная запись пользователя у интегратора закрыта. Это следует использовать только тогда, когда «associationId» используется для идентификации этого пользователя.

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

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Аккаунт пользователя у интегратора закрыт, подозрение на захват аккаунта. Это следует использовать только тогда, когда «associationId» используется для идентификации этого пользователя.

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

ACCOUNT_CLOSED_FRAUD

Аккаунт пользователя у интегратора закрыт из-за мошенничества. Это следует использовать только в том случае, если «associationId» используется для идентификации этого пользователя.

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