- 實際扣款(Capture)
- 解凍未使用金額(Unfreeze)
預授權適用場景
常見業務情境包括:- 酒店 / 住宿業:入住前凍結押金,退房後依實際消費扣款
- 租車 / 設備租賃:取車或取件時凍結保證金
- 電商延後出貨:下單時保留金額,出貨後再扣款
- 訂閱 / 延期確認服務:先確認支付能力,再於服務完成後扣款
- 可變金額交易:避免最終金額高於原始授權
預授權有效期限(Capture 時效)
不同產業與渠道支援不同的最長扣款期限:| 行業類型 | 最長 Capture 天數 |
|---|---|
| 一般行業 | 最多 7 天 |
| 特定行業(如酒店、租車) | 最多 28 天 |
實際可用天數依商戶簽約設定與支付渠道為準。
請於正式上線前向 QFPay 確認。
請於正式上線前向 QFPay 確認。
整體流程說明
操作流程說明
1️⃣ 建立預授權交易
預授權交易需透過 Payment Element(支付組件) 完成。 此步驟:- 凍結消費者資金
- 不會實際扣款
請參閱 Payment Element SDK 文件完成前端整合。
2️⃣ 預授權扣款(Capture)
在有效期限內,商戶可對已凍結金額進行實際扣款。 ✅ 可分次扣款⚠ 累計金額不得超過原始預授權金額
API 端點與方法
預授權扣款
請求標頭
| Header | 必填 | 說明 |
|---|---|---|
X-QF-APPCODE | 是 | App Code |
X-QF-SIGN | 是 | API 簽名 |
請求參數
| 參數 | 必填 | 說明 |
|---|---|---|
txamt | 是 | 本次扣款金額(建議 > 200) |
txcurrcd | 否 | 扣款幣別 |
mchid | 否 | 商戶編號(部分渠道需要) |
syssn | 是 | 原預授權交易的系統訂單號 |
回應範例
Capture Response Example
3️⃣ 預授權金額解凍(Unfreeze)
僅限尚未被扣款之金額。 ⚠ 解凍僅可操作一次⚠ 解凍後不可再次扣款
API 端點與方法
預授權解凍
請求參數
| 參數 | 必填 | 說明 |
|---|---|---|
txamt | 是 | 解凍金額 |
txdtm | 是 | 解凍時間 |
syssn | 是 | 原預授權 syssn |
out_trade_no | 是 | 原預授權商戶訂單號 |
mchid | 否 | 商戶 ID(部分渠道) |
回應範例
Unfreeze Response Example
4️⃣ 已扣款交易退款(Refund)
若已完成 Capture,需透過退款 API 進行退款。 退款對象為 Capture 產生之syssn。
退款 API
退款 API
非同步通知機制(Webhook)
當成功執行以下操作時,系統將發送notify_url 通知:
| 操作 | notify_type |
|---|---|
| Capture 扣款 | payment |
| Unfreeze 解凍 | unfreeze |
| Refund 退款 | refund |
通知範例
Preauth Notify Example
最佳實務與風險提醒
以下操作皆可透過 API 或 QFPay 商戶後台執行:
- Capture 扣款
- Unfreeze 解凍
- Refund 退款
小結
- 預授權適用於延後扣款或可變金額場景
- 可分次 Capture,但不可超額
- 解凍僅可執行一次
- 必須實作 Webhook 與查詢 API 保障交易狀態一致
