Method: sendOtp

Solicita al integrador que envíe una OTP al número de teléfono.

Si el integrador muestra SUCCESS, Google espera que se envíe un SMS al número de teléfono.

Google solo proporciona una accountPhoneNumber cuando un usuario asocia inicialmente su cuenta con Google. A partir de ese momento, solo se enviará associationId para todas las llamadas posteriores.

Si el extremo encuentra un error mientras procesa la solicitud, el cuerpo de la respuesta de este extremo debe ser del tipo ErrorResponse.

A continuación, se muestra una solicitud de ejemplo:


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

Una respuesta de ejemplo se ve de la siguiente manera:


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

Solicitud HTTP

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

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Representación 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.
}
Campos
requestHeader

object (RequestHeader)

REQUIRED: Encabezado común para todas las solicitudes

smsMatchingToken

string

OBLIGATORIO: Google proporciona este valor y debe incluirse en el SMS que se envía al usuario. Esto permite que Google haga coincidir automáticamente el SMS en el dispositivo para dispositivos Android O (consulta referencia). Debe tener 11 caracteres.

Por ejemplo, si el SMS normalmente se ve de la siguiente manera:

Here's the OTP you requested: <OTP>

Y Google envía "0123456789A" para este campo, el SMS debería verse así:

0123456789A

Here's the OTP you requested: YYXXZZ

De forma alternativa, podría verse de la siguiente manera:

Here's the OTP you requested: YYXXZZ

0123456789A

otpContext

object (OtpContext)

OPCIONAL: Este es el contexto en el que se solicita una OTP.

Campo de unión account_identifier. REQUIRED: Este es el identificador de la cuenta para la que se debe enviar una OTP. account_identifier puede ser solo uno de los siguientes:
accountPhoneNumber

string

Este es un número de teléfono con formato E.164. Algunos ejemplos son +14035551111 y +918067218000. Esto siempre comenzará con un signo + y, después, solo se incluirán números (sin guiones).

Se completa cuando un usuario asocia inicialmente su cuenta con Google y durante la reasociación.

associationId

string

Es el identificador de asociación que se usa para hacer referencia a la cuenta de un usuario.

Se propaga para todas las llamadas posteriores después de la asociación inicial.

Cuerpo de la respuesta

Objeto de respuesta para el método sendOtp.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Representación JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorSendOtpId": string,
  "result": enum (SendOtpResultCode)
}
Campos
responseHeader

object (ResponseHeader)

REQUIRED: Encabezado común para todas las respuestas

paymentIntegratorSendOtpId

string

OPCIONAL: Es el identificador como el integrador reconoce que esta solicitud de OTP de envío. Se genera por medio del integrador.

result

enum (SendOtpResultCode)

OBLIGATORIO: Resultado de esta solicitud

OtpContext

Contexto en el que se solicita una OTP.

Representación 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.
}
Campos
Campo de unión otp_context. OBLIGATORIO: Contexto en el que se solicita una OTP. otp_context puede ser solo uno de los siguientes:
association

object (Empty)

Se solicita la OTP en el contexto de la asociación o reasociación.

mandateCreation

object (Empty)

Se solicita una OTP en el contexto de la creación del mandato.

associationWithMandateCreation

object (Empty)

Se solicita la OTP para la asociación junto con la creación del mandato.

Vacío

Este tipo no tiene campos.

Este objeto se usa para la extensibilidad, ya que los booleanos y las enumeraciones a menudo deben extenderse con datos adicionales. El implementador lo usa para determinar la presencia. La enumeración que esto representa se puede extender para contener datos en versiones futuras.

La representación JSON para Empty es un objeto JSON vacío {}.

SendOtpResultCode

Códigos de resultado para el envío de la solicitud de OTP.

Enumeraciones
UNKNOWN_RESULT No establezcas nunca este valor predeterminado.
SUCCESS El integrador envió la OTP.
PHONE_NUMBER_NOT_ASSOCIATED_WITH_ACCOUNT El número de teléfono no está asociado con la cuenta que identificó associationId.
UNKNOWN_PHONE_NUMBER El número de teléfono no está asociado con ninguna cuenta. Se usa cuando no se establece associationId.
MESSAGE_UNABLE_TO_BE_SENT El integrador no pudo enviar la OTP por algún motivo. Este es un error transitorio y puede provocar que se vuelva a intentar la llamada.
INVALID_PHONE_NUMBER El formato del número de teléfono era incorrecto.
NOT_ELIGIBLE La cuenta del usuario no es apta para este servicio.
OTP_LIMIT_REACHED El usuario solicitó o intentó verificar demasiadas OTP.
ACCOUNT_CLOSED

Se cerró la cuenta del usuario que se retuvo con el integrador. Solo debe usarse cuando el valor "associationId" se está usando para identificar a este usuario.

Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Se cerró la cuenta del usuario con el integrador, por lo que se sospecha que se realizó una apropiación de la cuenta. Solo debe usarse cuando el valor "associationId" se está usando para identificar a este usuario.

Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente.

ACCOUNT_CLOSED_FRAUD

La cuenta del usuario que se retuvo con el integrador se cerró debido a un fraude. Solo debe usarse cuando el valor "associationId" se está usando para identificar a este usuario.

Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente.