Method: captureResultNotification

在發出 captureasynchronousCapture 方法呼叫後,向 Google 通知擷取結果。

這個 captureRequestIdcaptureResult 值為冪等的值,因此後續無法透過呼叫此方法變更該值。

如果端點在處理要求時發生錯誤,此端點的回應就會是 ErrorResponse 類型。

如果這個方法未傳回 HTTP 200,則這個查詢的回應可能為空白。如果可以使用 ErrorResponse 的詳細說明,則可讓攻擊者瞭解其他整合商的付款整合商帳戶 ID。在這些情況下,如果簽署金鑰不相符、找不到付款整合商 ID 或加密金鑰不明,這個方法就會傳回空的 HTTP 404。如果可以驗證要求簽章,系統會在回應內文中傳回錯誤的詳細資訊。

要求範例如下:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "KcgwSKrV76eVNDUbsZ4UA3",
    "requestTimestamp": "1481852928293"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "awNaC510cefae3IJdNEvW2",
  "captureResult": {
    "captureResultCode": "SUCCESS"
  }
}

回應範例如下:


{
  "responseHeader": {
    "responseTimestamp": "1481852928324"
  },
  "result": "SUCCESS"
}

HTTP 要求

POST https://vgw.googleapis.com/secure-serving/gsp/v1/captureResultNotification/:PIAID

要求主體

要求主體的資料會採用以下結構:

JSON 表示法
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
欄位
requestHeader

object (RequestHeader)

必要:所有要求的通用標頭。

paymentIntegratorAccountId

string

REQUIRED:發生擷取款項的付款整合商帳戶 ID。

captureRequestId

string

REQUIRED:這筆交易的專屬 ID。這是 Google 在 captureasynchronousCapture 呼叫期間產生的 requestId

字串的長度上限為 100 個字元,且只包含「a-z」、「A-Z」、「0-9」、「:」、「-」和「_」等字元。

captureResult

object (CaptureResult)

必要:擷取結果。

paymentIntegratorTransactionId

string

OPTIONAL:該識別碼是由整合商所產生。這是整合商知道的這筆交易 ID。

為方便起見,這項資訊會顯示在匯款詳細資料中

回應主體

captureResultNotification 方法的回應物件。

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

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

object (ResponseHeader)

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

result

enum (CaptureResultNotificationResultCode)

REQUIRED:呼叫的結果。

擷取結果

拍攝最終結果的相關資訊。

JSON 表示法
{
  "captureResultCode": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },

  // Union field FailureDetail can be only one of the following:
  "transactionMaxLimit": string,
  "transactionMinLimit": string,
  "currentBalance": string
  // End of list of possible types for union field FailureDetail.
}
欄位
captureResultCode

enum (CaptureResultCode)

REQUIRED:擷取作業的結果代碼。

rawResult

object (RawResult)

OPTIONAL:擷取作業的原始結果。有助於通知 Google 的風險引擎和分析。在拒絕代碼中,資料有時會遺失。整合商可以選擇向 Google 提供原始代碼。舉例來說,信用卡支付平台 (整合商) 可能會使用這個欄位,向 Google 提供 VISA 網路傳送的確切拒絕代碼。在這種情況下,scope 會是「visa」,而 rawCode 則是 VISA 網路傳回的任何項目。

如果 result 不是 SUCCESS,這個值就必填

聯集欄位 FailureDetail

FailureDetail 只能是下列其中一個值:

transactionMaxLimit

string (Int64Value format)

OPTIONAL:如果 captureResultCodeCHARGE_EXCEEDS_TRANSACTION_LIMIT,則為允許交易的最高值。用於進行結構化、向使用者顯示的訊息以及拒絕率分析。

這個金額是與原始 captureasynchronousCapture 方法呼叫相同的 currencyCode 的「微量」

transactionMinLimit

string (Int64Value format)

OPTIONAL:如果 captureResultCodeCHARGE_UNDER_TRANSACTION_LIMIT,則為允許交易的最低值。用於進行結構化、向使用者顯示的訊息以及拒絕率分析。

這個金額是與原始 captureasynchronousCapture 方法呼叫相同的 currencyCode 的「微量」

currentBalance

string (Int64Value format)

OPTIONAL:如果結果是 INSUFFICIENT_FUNDS,則這是使用者帳戶中目前可用的餘額 (以微型 為單位)。用於結構化的向使用者顯示訊息。

這個值必須與要求中的 currencyCode 相同。

擷取結果代碼

擷取作業的結果代碼。

列舉
UNKNOWN_RESULT 不要設定這個預設值!
SUCCESS 擷取成功。
CHARGE_UNDER_TRANSACTION_LIMIT 要求的拍攝金額不符合整合商的每筆交易最低金額。如果使用這個代碼,請在 transactionMinLimit 欄位中填入使用者訊息數量的最低交易金額。
CHARGE_EXCEEDS_TRANSACTION_LIMIT 要求的擷取金額超過整合商的每筆交易上限。如果使用這個代碼,請在 transactionMaxLimit 欄位中填入使用者訊息的交易限制。
CHARGE_EXCEEDS_DAILY_LIMIT 使用者帳戶已超出每日上限,因此無法用於購物。
CHARGE_EXCEEDS_MONTHLY_LIMIT 使用者帳戶已超出每月上限,因此無法用於購物。
INSUFFICIENT_FUNDS 這個帳戶餘額不足,無法保證這項擷取作業成功。
SUSPECTED_FRAUD 整合商有理由相信這筆交易屬於詐欺行為。
ACCOUNT_CLOSED 含有整合商的使用者帳戶已關閉。這個傳回值會使使用者的 Google 付款方式關閉。系統會強制使用者新增付款方式。
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER 含有整合商的使用者帳戶已關閉,疑似遭盜用的帳戶。這個傳回值會使使用者的 Google 付款方式關閉。系統會強制使用者新增付款方式。
ACCOUNT_CLOSED_FRAUD 含有整合商的使用者帳戶因詐欺行為而遭到關閉。這個傳回值會使使用者的 Google 付款方式關閉。系統會強制使用者新增付款方式。
ACCOUNT_ON_HOLD 使用者的帳戶暫時無法使用。
OTP_NOT_MATCHED 動態密碼與整合器傳送的內容不符。
OTP_ALREADY_USED 動態密碼已使用過。
CAPTURE_REQUEST_EXPIRED 整合商的處理時間過長。Google 會將這項拒絕視為最終狀態,因此整合商必須確保使用者後來無法收到款項,或是在擷取完成時自動退款。
INVALID_PIN 使用者提供的 PIN 碼無效。
OS_LOCK_FAILED 此付款流程需要 OS 鎖定驗證,而使用者無法解鎖裝置。
PIN_ENTRY_ATTEMPTS_EXHAUSTED 這個付款流程需要使用者輸入 PIN 碼。使用者輸入 PIN 碼的次數達到重試次數的次數上限。
USER_EXITED_PAYMENT_FLOW 使用者已全部取消付款 (OS 鎖定或 PIN 碼輸入畫面)。
MONTHLY_FREQUENCY_LIMIT_EXCEEDED 使用者帳戶已超出每月交易金額上限,因此無法用於購物。
DECLINED_BY_ISSUER

這個拒絕代碼不應在穩定狀態下使用。當整合商透過使用者付款方式的基礎核發機構遇到不明拒絕代碼時,使用此程式碼做為臨時全部接收的程式碼。當整合商判定要提供更合適的結果代碼,或針對該規格加入新的結果代碼時,可以使用此結果代碼。

重要的是,此拒絕程式碼可說是大幅減少。就 Google 而言,要求是永久持續的。如果整合商回傳這個代碼,商家必須自行追蹤核發機構的程式碼的意義,並在使用者實際關閉程式碼時確實退款給 SUCCESS

如果同一拒絕程式碼停留超過特定天數的時間,Google 會將該錯誤視為錯誤,並據以修正相關錯誤。

原始結果

原始結果物件。

JSON 表示法
{
  "scope": string,
  "rawCode": string
}
欄位
scope

string

OPTIONAL:rawCode 的範圍不得留空。

rawCode

string

必要:整合商或子系統的原始代碼。

CaptureResultNotificationResult

captureResultNotification 方法的結果代碼。

列舉
UNKNOWN_RESULT 不要設定這個預設值!
SUCCESS 已成功處理擷取結果通知。