4. 授权与扣款机制
在支付系统中,“授权”与“扣款”并不是同一个动作。授权解决的是“这笔钱能不能被冻结或承诺支付”,扣款解决的是“钱是否真正从持卡人账户划走”。不同业务对资金确定性、到账时效、风险控制和用户体验的要求不同,于是衍生出预授权、直接扣款、延迟扣款、部分扣款和多次扣款等机制。理解它们的实现原理,是设计支付、退款、撤销流程的基础。
一、核心原理:授权与扣款的分离
授权(Authorization)是发卡行或支付机构对交易进行风险与余额校验后,冻结或承诺一笔资金的过程。扣款(Capture/Settlement)则是在授权有效期内,将冻结资金正式计入商户账户。二者分离带来三个关键参数:授权金额、授权有效期、可扣款次数。
- 预授权:先冻结一笔资金,后续按实际消费金额扣款,常见于酒店、租车、加油。
- 直接扣款:授权与扣款几乎同时完成,资金实时或准实时到账,常见于电商即时支付。
- 延迟扣款:授权成功后延迟一段时间再扣款,用于确认发货、服务完成或风控复核。
- 部分扣款:扣款金额小于授权金额,剩余冻结资金释放,常见于预授权场景。
- 多次扣款:在授权额度内分多笔扣款,常见于分阶段服务、分批发货。
核心判断:授权是“额度占用”,扣款是“资金转移”。撤销针对未扣款的授权,退款针对已扣款的交易。二者在账务、通道接口和时效上完全不同。
二、方法流程:五种机制的实现路径
以典型支付网关为例,预授权通常调用 auth 接口冻结资金,再调用 capture 接口完成扣款;直接扣款则调用 sale 或 auth+capture 组合。延迟扣款需要在授权有效期内发起 capture,否则授权过期自动释放。部分扣款和多次扣款依赖通道是否支持“部分捕获”和“多次捕获”能力。
// 预授权:冻结 1000 元
POST /pay/auth
{ "orderId": "O1001", "amount": 100000, "currency": "CNY" }
// 实际消费 680 元,部分扣款
POST /pay/capture
{ "authId": "A9001", "amount": 68000, "isFinal": true }
// 剩余 320 元冻结资金释放
// 若 isFinal=false,则剩余额度仍可继续扣款
多次扣款的实现依赖 isFinal 或 multipleCapture 标志。当通道支持多次捕获时,每次 capture 后授权额度递减,直到 isFinal=true 或额度用尽。若通道不支持,则只能一次性扣款,剩余金额通过撤销释放。
三、案例与场景:如何选择机制
| 机制 | 资金确定性 | 典型场景 | 关键风险 |
|---|---|---|---|
| 预授权 | 中,冻结但未扣 | 酒店押金、租车、加油 | 授权过期、超额冻结 |
| 直接扣款 | 高,实时到账 | 电商即时支付、订阅首扣 | 退款成本高、拒付风险 |
| 延迟扣款 | 中高,依赖有效期 | 货到付款、服务完成后结算 | 授权过期导致扣款失败 |
| 部分扣款 | 中,按实际金额 | 预授权后实际消费少于冻结 | 剩余额度释放不及时 |
| 多次扣款 | 中,分次确认 | 分批发货、分阶段服务 | 通道不支持多次捕获 |
例如酒店入住时冻结 1000 元预授权,离店结算实际消费 680 元,系统发起部分扣款并设置 isFinal=true,剩余 320 元立即释放。若客人续住,则先不设置 final,后续再次扣款,形成多次扣款。若通道不支持部分捕获,则只能先扣 1000 元再退款 320 元,这会增加退款流程和账务复杂度。
设计建议:优先确认通道能力矩阵——是否支持部分捕获、多次捕获、延迟捕获、授权有效期延长。能力决定流程,而不是流程倒逼能力。
四、误区与复盘
误区一:把预授权当成已收款。预授权只是冻结,未扣款前不能确认收入,也不能直接退款,只能撤销。撤销后额度释放,用户账单上的“预授权”记录消失。
误区二:忽略授权有效期。不同通道有效期从 3 天到 30 天不等。延迟扣款若超过有效期,capture 会失败,必须重新授权,用户体验和风控成本都会上升。
误区三:多次扣款不控制总额。多次捕获的累计金额不能超过授权金额,否则通道会拒绝。系统需要在每次 capture 前校验剩余可用额度,并记录已捕获金额。
复盘要点:授权与扣款的状态机必须严格区分。常见状态包括 AUTHORIZED、PARTIALLY_CAPTURED、CAPTURED、VOIDED、EXPIRED。撤销只能作用于 AUTHORIZED 或 PARTIALLY_CAPTURED 的剩余额度;退款只能作用于已 CAPTURED 的金额。状态判断错误会导致重复退款或超额撤销。
掌握这五种机制的关键,在于始终区分“额度”和“资金”两条线:授权线管理冻结与释放,扣款线管理入账与退款。只有两条线对账一致,支付授权、撤销与退款流程才能稳定运行。