Onerway
支付场景

预授权与请款

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

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

概念与选择

  • 适用范围:txnType=AUTH 适用于自行采集卡信息的卡支付和 token 支付(subProductType=DIRECT 或 TOKEN),不适用于本地支付方式、订阅或分期。
  • 仅支持全额请款:需要少扣时先撤销再重新下单,或请款后通过申请或取消退款退还差额。
  • 请款与撤销二选一:对同一笔预授权只能执行其中一个。

生命周期与通知

预授权下单

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

确认授权结果

收到预授权、请款与撤销通知中 txnType=AUTH、status=S、paymentStatus=A 的通知后确认授权成功。保存响应或通知中的 transactionId 与 paymentId:前者是请款或撤销时 originTransactionId 的取值,后者用于把授权与后续请款或撤销关联到同一支付意图。

请款或撤销

调用预授权请款或撤销,originTransactionId 传预授权的 transactionId,txnType=CAPTURE 扣划全部冻结金额,txnType=VOID 释放冻结、不扣款。

确认最终结果

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

边界与状态处理:

  • VOID 只作用于未请款的预授权,释放冻结额度、不产生资金流;已请款的交易只能走退款。
  • 请款或撤销请求中不同的 merchantTxnId 视为不同交易,对同一 originTransactionId 的重复请款应由商户侧防重。
  • 以 paymentId 加 paymentStatus 判断这笔资金处于冻结中、已扣款还是已释放(AUTH 成功 A,CAPTURE 成功 S,VOID 成功 N),不要用多条通知各自的 status 拼装状态;status 与 paymentStatus 的语义区分见 Webhook 通知。

各接入方式的参数差异

接入方式接口关键参数差异说明接入指南
收银台创建收银台支付txnType=AUTH3DS 由收银台页面引导完成收银台接入
Web SDK创建 SDK 交易txnType=AUTH、subProductType=DIRECTSDK 集成流程与普通支付一致Web SDK 接入
API 直连创建直连交易txnType=AUTH、subProductType=DIRECT 或 TOKEN需要 3DS 时按 status=R 自行处理跳转API 直连接入