# 预授权与请款

> 先冻结额度、后按履约请款：预授权的适用范围、从授权到请款或撤销的生命周期与通知、边界与状态判断，以及三种接入方式的参数差异。

预授权先冻结持卡人卡上的订单金额、暂不扣款，适用于酒店与租车押金、预订类订单、发货前锁定额度等先确保额度、后按履约扣款的业务。预授权下单可以在任一接入方式完成；请款或撤销由商户服务端调用 API 完成。

## 概念与选择

- **适用范围**：`txnType=AUTH` 适用于自行采集卡信息的卡支付和 token 支付（`subProductType=DIRECT` 或 `TOKEN`），不适用于本地支付方式、订阅或分期。
- **仅支持全额请款**：需要少扣时先撤销再重新下单，或请款后通过[申请或取消退款](/zh/payments/api-reference/endpoints/create-or-cancel-refund)退还差额。
- **请款与撤销二选一**：对同一笔预授权只能执行其中一个。

## 生命周期与通知

<steps level="3">

### 预授权下单

按所用接入方式下单并传入 `txnType=AUTH`，其余参数与普通支付相同；需要 3DS 时按该接入方式的接入流程处理跳转。

### 确认授权结果

收到[预授权、请款与撤销通知](/zh/payments/api-reference/webhooks/authorization-capture)中 `txnType=AUTH`、`status=S`、`paymentStatus=A` 的通知后确认授权成功。保存响应或通知中的 `transactionId` 与 `paymentId`：前者是请款或撤销时 `originTransactionId` 的取值，后者用于把授权与后续请款或撤销关联到同一支付意图。

### 请款或撤销

调用[预授权请款或撤销](/zh/payments/api-reference/endpoints/capture-or-void-authorization)，`originTransactionId` 传预授权的 `transactionId`，`txnType=CAPTURE` 扣划全部冻结金额，`txnType=VOID` 释放冻结、不扣款。

### 确认最终结果

请款成功后收到 `txnType=CAPTURE`、`status=S`、`paymentStatus=S` 的通知；撤销成功后收到 `txnType=VOID`、`status=S`、`paymentStatus=N` 的通知。请款或撤销通知的 `transactionId` 属于本次操作，与原预授权不同；按各自的 `transactionId` 幂等处理，并用 `paymentId` 关联同一支付意图。

</steps>

边界与状态处理：

- `VOID` 只作用于未请款的预授权，释放冻结额度、不产生资金流；已请款的交易只能走退款。
- 请款或撤销请求中不同的 `merchantTxnId` 视为不同交易，对同一 `originTransactionId` 的重复请款应由商户侧防重。
- 以 `paymentId` 加 `paymentStatus` 判断这笔资金处于冻结中、已扣款还是已释放（`AUTH` 成功 `A`，`CAPTURE` 成功 `S`，`VOID` 成功 `N`），不要用多条通知各自的 `status` 拼装状态；`status` 与 `paymentStatus` 的语义区分见 [Webhook 通知](/zh/payments/get-started/webhooks#%E7%8A%B6%E6%80%81%E5%88%A4%E6%96%AD)。

## 各接入方式的参数差异

| 接入方式 | 接口 | 关键参数 | 差异说明 | 接入指南 |
| --- | --- | --- | --- | --- |
| 收银台 | [创建收银台支付](/zh/payments/api-reference/endpoints/create-checkout-payment) | `txnType=AUTH` | 3DS 由收银台页面引导完成 | [收银台接入](/zh/payments/online-payments/checkout#%E9%A2%84%E6%8E%88%E6%9D%83) |
| Web SDK | [创建 SDK 交易](/zh/payments/api-reference/endpoints/sdk-create-transaction) | `txnType=AUTH`、`subProductType=DIRECT` | SDK 集成流程与普通支付一致 | [Web SDK 接入](/zh/payments/online-payments/sdk#%E9%A2%84%E6%8E%88%E6%9D%83) |
| API 直连 | [创建直连交易](/zh/payments/api-reference/endpoints/direct-create-transaction) | `txnType=AUTH`、`subProductType=DIRECT` 或 `TOKEN` | 需要 3DS 时按 `status=R` 自行处理跳转 | [API 直连接入](/zh/payments/online-payments/api#%E9%A2%84%E6%8E%88%E6%9D%83) |
