Method: sendOtp

请求集成商向电话号码发送动态密码。

如果集成商返回 SUCCESS,Google 会通过短信发送到该电话号码。

用户最初将帐号与 Google 关联时,Google 只会提供 accountPhoneNumber。之后,系统仅会针对所有后续调用发送 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 提供,必须包含在发送给用户的短信中。这会让 Google 能在设备上自动为 Android O 设备匹配短信(请参阅参考编号)。长度上限为 11 个字符。

例如,如果短信通常如下所示:

Here's the OTP you requested: <OTP>

而对于此字段,Google 会发送“0123456789A”,短信应如下所示:

0123456789A

Here's the OTP you requested: YYXXZZ

或者,也可以如下所示:

Here's the OTP you requested: YYXXZZ

0123456789A

otpContext

object (OtpContext)

可选:在这种情境下,请求动态密码。

联合字段 account_identifier必需:这是需要发送动态密码的帐号的标识符。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

可选:集成商知道此发送动态密码请求的标识符。这是由集成商生成的代码。

result

enum (SendOtpResultCode)

必需:此请求的结果

OtpContext

请求 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_context 只能是下列其中一项:
association

object (Empty)

需要在关联/重新关联环境中请求动态密码。

mandateCreation

object (Empty)

正在要求创建动态授权的动态密码。

associationWithMandateCreation

object (Empty)

请求关联动态密码并创建授权书。

此类型没有任何字段。

此对象用于扩展,因为布尔值和枚举通常需要使用额外数据进行扩展。实现人员使用它来确定在线状态。这个代表的枚举可以进行扩展,以包含未来版本中的数据。

Empty 的 JSON 表示法为空 JSON 对象 {}

SendOtpResultCode

发送动态密码请求的结果代码。

枚举
UNKNOWN_RESULT 切勿设置此默认值!
SUCCESS 集成商发送了动态密码。
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 关闭。系统将要求用户重新执行关联流程,以强制添加新付款方式。