跳到內容

退款

在 ChatGPT 開啟在 Claude 開啟

POST /refunds/:transactionHid

  • 正式環境:https://payment-api.oen.tw/refunds/:transactionHid
  • 測試環境:https://payment-api.testing.oen.tw/refunds/:transactionHid

為一筆交易退款。每筆交易只能用 API 成功退款一次,部分退款後剩下的金額不能再退,請一次決定好金額。信用卡、Apple Pay、LINE Pay 即時退款;已付款的超商代碼與 ATM 要帶退款帳戶,由應援匯款;尚未繳費的超商代碼會直接取消代碼。

Header 帶 Authorization: Bearer <token> 與 Content-Type: application/json 。token 的取得方式見驗證與 token。

欄位型別必填說明
transactionHidstring必填P 開頭的交易編號(17 字元)。不接受 27 字元的內部 id。
欄位型別必填說明
merchantIdstring必填你的網域名稱。例如應援頁是 https://ming.oen.tw,就填 ming。必須與 token 所屬的網域相同,不同會回 400 V0001。
範例:ming
amountinteger選填退款金額。不帶就是全額退款。
限制:1 以上,不能大於原交易金額
reasonstring選填退款原因。
productDetailsarray條件必填原交易有開立電子發票時必填,用來開立折讓。品項合計必須等於退款金額。欄位同建立交易時的 productDetails。
remitInfoobject條件必填退款匯款帳戶。已付款的超商代碼或 ATM 交易必填;信用卡類與尚未繳費的超商代碼不用帶。
bankCode
remitInfo.bankCode
string必填銀行代碼
bankName
remitInfo.bankName
string必填銀行名稱
branchCode
remitInfo.branchCode
string必填分行代碼
branchName
remitInfo.branchName
string必填分行名稱
account
remitInfo.account
string必填帳號
限制:8 到 14 字元
accountName
remitInfo.accountName
string必填戶名

範例一律打測試環境。把 OEN_API_TOKEN 設成測試環境 CRM 產生的 token。

終端機視窗
curl -X POST "https://payment-api.testing.oen.tw/refunds/P20260928AB12CD34" \
-H "Authorization: Bearer $OEN_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"merchantId": "ming",
"amount": 600,
"reason": "消費者取消一包",
"productDetails": [
{
"productionCode": "SKU-001",
"description": "手沖咖啡豆 200g",
"quantity": 1,
"unit": "包",
"unitPrice": 600
}
]
}'
HTTP說明
200退款已受理。回傳更新後的 Transaction 物件,另加 success: true
400參數錯誤、交易狀態不能退款,或收單機構退款失敗
401token 錯誤
500系統錯誤,或網域待撥款金額不足(見下方錯誤表)
{
"code": "S0000",
"data": {
"success": true,
"id": "P20260928AB12CD34",
"transactionId": "2HhndgEquCbDzC5OyVxWSGZmd2l",
"action": "onetime",
"amount": 1200,
"paymentMethod": "card",
"status": "refunded",
"orderId": "A20260928001",
"createdAt": "2026-09-28T02:40:25.502Z",
"paidAt": "2026-09-28T02:41:03.118Z",
"refundAmount": 600,
"refundedAt": "2026-09-28T03:00:00.000Z",
"authCode": "831000"
},
"message": ""
}
錯誤碼HTTP什麼時候會發生
V0001400找不到交易或不屬於你的網域;金額錯誤(INVALID_REFUND_AMOUNT)或超過原金額(REFUND_AMOUNT_EXCEED_CHARGE_AMOUNT);缺少折讓品項(PRODUCT_DETAILS_REQUIRED、PRODUCT_AMOUNT_NOT_MATCH);缺少退款帳戶(REMITTANCE_INFO_REQUIRED)
V0002400交易狀態不能退款,例如尚未付款、已經退過款
R0001400收單機構退款失敗。先查詢交易狀態;之後重試都回 V0002 時,請聯絡應援
F0001500訊息為 Current charged amount too low:你的網域尚未撥款的已收款淨額低於 200 元,暫時無法退款,請聯絡應援。其他訊息為系統錯誤
A0001401token 錯誤

完整清單與處理方式見錯誤碼一覽。

各付款方式的退款規則見退款。