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)

OPTIONAL:要求動態密碼的情境。

聯集欄位 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

OPTIONAL:整合商知道這個傳送動態密碼要求的 ID。此為系統的整合商。

result

enum (SendOtpResultCode)

REQUIRED:這項要求的結果

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 物件 {}

傳送 OppResultCode

傳送動態密碼要求的結果代碼。

列舉
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 關閉。系統會強制使用者再次透過連結流程新增付款方式。