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» для этого поля, тогда SMS должно выглядеть так:

0123456789A

Вот запрошенный вами одноразовый пароль: 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 )

НЕОБХОДИМО : результат этого запроса.

OpContext

Контекст, в котором запрашивается 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 . REQUIRED : контекст, в котором запрашивается OTP. otp_context может быть только одним из следующих:
association

object ( Empty )

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

mandateCreation

object ( Empty )

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

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 Интегратору по какой-то причине не удалось отправить одноразовый пароль. Это временная ошибка, которая может привести к повторной попытке вызова.
INVALID_PHONE_NUMBER Неверный формат номера телефона.
NOT_ELIGIBLE Учетная запись пользователя не подходит для этой службы.
OTP_LIMIT_REACHED Пользователь запросил или попытался проверить слишком много одноразовых паролей.
ACCOUNT_CLOSED

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

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

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

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

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

ACCOUNT_CLOSED_FRAUD

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

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