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必要項目:此為必須傳送動態密碼的帳戶 ID。account_identifier 只能採用下列其中一種設定:
accountPhoneNumber

string

此為 E.164 格式的電話號碼。範例包括 +14035551111 和 +918067218000。這一律會以 + 開頭,且後面只會加上數字 (無破折號)。

使用者一開始將帳戶與 Google 建立關聯並在重新建立關聯時,系統就會填入這項資料。

associationId

string

此為關聯 ID,用來參照使用者的帳戶。

這會填入初次連結後的所有後續呼叫。

回應主體

sendOtp 方法的回應物件。

如果成功,回應主體會含有以下結構的資料:

JSON 表示法
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorSendOtpId": string,
  "result": enum (SendOtpResultCode)
}
欄位
responseHeader

object (ResponseHeader)

必要項目:所有回應的通用標頭。

paymentIntegratorSendOtpId

string

選用:整合商可透過 ID 得知這項傳送動態密碼要求。這是已產生的整合商。

result

enum (SendOtpResultCode)

必要項目:此要求的結果

OtpContext

要求動態密碼的情境。

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 關閉使用者的付款方式。系統會要求使用者再次完成關聯流程,以新增付款方式。