Method: refund

針對透過 capture 進行的部分或整筆交易辦理退款。標頭中的 requestIdpaymentIntegratorAccountId 的組合是冪等鍵,可用於識別這筆交易。

如果端點在處理要求時發生錯誤,來自此端點的回應主體應為 ErrorResponse 類型。

要求範例如下:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "liUrreQY233839dfFFb24gaQM",
    "requestTimestamp": "1502220434778"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
  "currencyCode": "INR",
  "refundAmount": "208000000"
}

回應範例如下所示:


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorRefundId": "cmVmdW5kIGlkZW50aWZpZXINCg"
}

HTTP 要求

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

要求主體

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

JSON 表示法
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "currencyCode": string,
  "refundAmount": string
}
欄位
requestHeader

object (RequestHeader)

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

paymentIntegratorAccountId

string

必要項目:此為付款整合商帳戶 ID,定義這筆交易的合約限制。

captureRequestId

string

必要項目:這筆交易的專屬 ID。這是 Google 在與這項要求相關聯的 capture 呼叫期間產生的 requestId

currencyCode

string

必要項目:採用 3 個字母組成的 ISO 4217 貨幣代碼

refundAmount

string (Int64Value format)

必要項目:退款金額,可以是正數的「百萬分之一」

回應主體

退款方法的回應物件。

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

JSON 表示法
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorRefundId": string,
  "result": enum (RefundResultCode),
  "rawResult": {
    object (RawResult)
  }
}
欄位
responseHeader

object (ResponseHeader)

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

paymentIntegratorRefundId

string

選用:此 ID 僅供整合商使用,由整合商產生。這是整合商知道這筆退款的 ID。

為了方便起見,匯款詳細資料已包含這個 ID。

result

enum (RefundResultCode)

必要項目:這筆退款的結果。

rawResult

object (RawResult)

選用:這筆退款的原始結果。有助於通知 Google 的風險引擎和分析結果。在拒絕代碼對應的情況下,資料有時會遺失。整合商可以選擇向 Google 提供原始代碼。舉例來說,信用卡支付平台 (整合商) 可使用這個欄位將實際從 VISA 網路收到的拒絕代碼傳送給 Google。在這種情況下,scope 會是「visa」而 rawCode 則是 VISA 網路傳回的內容。

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

RefundResultCode

專屬結果代碼會退款。

列舉
UNKNOWN_RESULT 切勿設定這個預設值!
SUCCESS 退款成功。
NO_MONEY_LEFT_ON_TRANSACTION v1.refund 失敗,交易已用盡。一般來說,這代表整合商與 Google 之間的錯誤。Google 不應要求退款金額超過原始拍攝金額。
ACCOUNT_CLOSED

與整合商共用的帳戶已關閉。

如果傳回這個值,系統就會透過 Google 關閉使用者的付款方式。系統會要求使用者再次完成關聯流程,以新增付款方式。

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

整合商的使用者的帳戶已遭關閉,疑似帳戶接管。

如果傳回這個值,系統就會透過 Google 關閉使用者的付款方式。系統會要求使用者再次完成關聯流程,以新增付款方式。

ACCOUNT_CLOSED_FRAUD

您提供給整合商的帳戶因詐欺行為而遭到關閉。

如果傳回這個值,系統就會透過 Google 關閉使用者的付款方式。系統會要求使用者再次完成關聯流程,以新增付款方式。

ACCOUNT_ON_HOLD 使用者帳戶目前處於暫緩狀態,無法接受退款,但使用者日後或許可以透過帳戶接受退款。Google 日後可能會申請另一筆退款,但會重新申請 requestId,因此這項要求應視為已完成。
REFUND_EXCEEDS_MAXIMUM_BALANCE 目前無法處理退款,因為這會導致使用者的餘額超過允許的上限。Google 日後可能會申請另一筆退款,但會重新申請 requestId,因此這項要求應視為已完成。
REFUND_WINDOW_EXCEEDED 由於此要求已超過退款期限,因此我們無法處理退款。