首页 / 内容指南 / 当前文章

Stripe 授权、扣款、取消、退款、撤销和争议有什么区别?

发布于 2026-08-26 · deliwaimao.cn 编辑部

在 Stripe 支付流程里,这些动作发生在不同阶段,发起方和资金结果也不同:授权(authorization)是发卡行暂时保留可用额度;扣款或捕获(capture)把已授权金额正式转为支付;取消(cancel)是在支付尚未完成时终止 PaymentIntent 并释放可能存在的保留;退款(refund)由商家在支付成功后把全部或部分金额退回;撤销(reversal)是某些很早发起的退款在卡网络和账单上的处理形式;争议或拒付(dispute/chargeback)则由持卡人通过发卡行正式质疑一笔已付款交易。

本文目录(11 节)

六个概念快速对比

↔ 表格可左右滑动查看完整内容
概念通常由谁触发发生阶段商家是否已完成收款顾客侧常见表现Stripe 中主要观察对象
授权商家支付流程与发卡行扣款前否,资金处于保留状态可用额度减少或显示待处理PaymentIntent、Charge 的授权信息
捕获/扣款商家或 Stripe 自动执行授权后是,支付进入完成流程正式入账或由待处理转为完成PaymentIntent、Charge
取消商家或系统支付成功前授权保留随后释放PaymentIntent canceled
退款商家支付成功后原付款已存在,再退回全部或部分后续出现退款入账Refund、原 Charge/PaymentIntent
撤销卡网络/发卡行处理通常是付款后很快退款原付款从账单视图中被冲销原交易可能直接消失,不出现独立贷记Refund 的目的地处理信息
争议/拒付持卡人和发卡行付款后先从商家余额扣回争议金额银行争议流程Dispute、关联 Charge

授权:保留额度,但不等于支付已经成功

卡支付授权是发卡行确认卡片和可用额度后,对金额进行暂时保留。使用 Stripe 的手动捕获模式时,PaymentIntent 在成功授权后通常进入 requires_capture,商家需要在授权有效期内发起 capture。不同卡种、交易类型、支付方式和地区的有效窗口可能不同,不能把“统一七天”写死在业务逻辑中;应读取相关对象提供的捕获截止信息并参考当前官方文档。

顾客可能在银行应用中看到一笔待处理记录,或者发现可用额度减少,但这并不表示商家已经完成结算。订单页面应使用“已授权,待扣款”等准确措辞,而不是直接显示“已付款”。客服也不应承诺发卡行何时恢复额度,因为授权释放后的展示速度由卡网络和发卡行共同决定。

PaymentIntent: requires_capture
amount_capturable: 可捕获金额
capture_before: 适用卡交易的授权到期参考

授权并不是永久保证。如果商家没有在有效期内捕获,保留会过期并释放,PaymentIntent 可转为取消状态。发货前仅看到授权成功还不够,还要确认业务是否允许先发货后捕获,以及系统是否有到期提醒和幂等捕获流程。

捕获:把已授权金额转为正式付款

capture 是对已授权支付执行实际扣款。自动捕获模式下,这一步由 Stripe 按流程完成;手动捕获时,后端需对对应 PaymentIntent 发起捕获请求。成功后,PaymentIntent 最终进入 succeeded,才适合作为多数即时履约订单的付款完成依据。

手动捕获可以捕获少于原授权的金额。Stripe 文档说明,对多数付款,部分捕获后未捕获的剩余金额会自动释放,并且通常不能再次捕获差额;某些符合条件的卡支付支持多次捕获或超额捕获,但这是受支付方式与账户能力限制的例外,接入方不能默认可用。

捕获接口应使用幂等设计,并以服务端检索到的最终对象与 webhook 事件校准本地订单。浏览器返回成功、按钮点击成功或单次 API 超时都不能单独证明扣款失败或成功。网络超时后盲目创建新的 PaymentIntent,反而可能造成重复支付。

取消:支付完成前终止流程

取消 PaymentIntent 适用于它尚未进入不可取消的完成阶段。取消后,该 PaymentIntent 不能继续用于新的付款尝试;如果存在授权保留,取消会触发释放。对于已经 succeeded 的支付,不能再用 cancel 当作退款,应该创建 Refund。

取消和授权到期也不完全相同。取消是显式终止,授权到期是未及时捕获导致保留失效。两者都可能让顾客看到待处理金额随后消失,但订单日志应保留不同原因,便于判断是用户取消、库存不足、风控决策、重复订单还是捕获任务遗漏。

异步支付方式的可取消窗口可能不同。Stripe 生命周期文档指出,部分处于 processing 状态的银行借记类支付可能在有限时间内允许取消,但操作也可能因为窗口变化而失败。因此系统应读取当前状态并处理 API 返回,不能仅按创建时间推测。

退款:成功付款后的商家退回

退款由商家通过 Dashboard 或 Refunds API 对已成功支付创建,可以是全额或部分金额。多次部分退款的累计金额不能超过原始付款。退款使用商家的可用 Stripe 余额;余额不足时,不同支付方式可能表现为等待余额补足或直接失败,因此“创建退款请求”不等于“顾客已经收到款项”。

退款应独立建模。一个 PaymentIntent 可以关联成功 Charge,Charge 又可能有多条 Refund。订单系统至少应记录 Refund ID、金额、币种、状态、失败原因和关联付款,不要只把订单布尔字段改成 refunded=true,否则无法表达部分退款、退款失败、多个退款和退款撤销等状态。

顾客看到退款通常需要发卡行处理时间。Stripe 官方说明,常见情况下可能需要若干工作日,但具体速度由银行和网络决定。客服查询时应先确认 Refund 已成功,再提供可用的退款参考信息;不能因为顾客当天没看到贷记就重复发起退款。

撤销:账单上可能看不到独立退款

Stripe 所说的 refund reversal 场景,是某些在原付款后很快发起的退款被卡网络按撤销方式处理。顾客账单中原始付款可能直接消失,而不是先保留一笔扣款、再出现一笔等额退款贷记。

撤销不是商家可以任意选择的通用退款类型。商家仍然创建退款,最终是否按 reversal 呈现由处理路径决定。Stripe 文档说明,可以在 Dashboard 的退款详情中查看;通过 API 时,也可根据退款的目的地详情判断卡退款是否作为 reversal 处理。

这解释了常见客服对话:“系统显示已退款,但顾客找不到退款记录。”正确核查顺序是确认原始交易是否仍在账单、Refund 状态是否成功以及是否标记为撤销,而不是要求顾客只搜索一笔相同金额的正向入账。

争议与拒付:由持卡人银行发起的正式流程

争议发生在持卡人联系发卡行,质疑一笔卡交易之后。进入正式 chargeback 时,卡网络会撤回争议金额,Stripe 随后从商家余额中扣除相应金额及适用费用,并通知商家。商家可以在截止时间前接受争议或提交与争议理由直接相关的证据,最终决定权在发卡行而不是 Stripe。

争议不是退款接口的另一种写法。退款由商家主动发起;争议由持卡人通过银行发起,并有原因代码、证据期限和裁决状态。Stripe 官方文档还指出,争议开启期间不能在争议流程之外再对同一付款执行退款。收到争议后,应先核对争议对象、金额、币种、理由和响应期限,避免客服再次手工退款造成处理冲突。

对“客户说已撤诉”的情况,商家也不能只依赖聊天截图。Stripe 的争议流程仍要求按平台显示的要求响应,直至对象状态由发卡行结果更新。证据应真实、简洁并对应理由,不能提交伪造材料或无关的大量截图。

状态机与订单状态如何分开

支付状态不等于订单状态。订单可以是待发货、已发货或已取消;PaymentIntent 同时可能是 requires_captureprocessingsucceededcanceled;退款和争议又有自己的独立生命周期。把所有信息压缩成“已付款/未付款”会造成不可逆的业务误判。

建议至少维护四条关联链:订单号关联 PaymentIntent;PaymentIntent 关联成功 Charge;退款表逐条关联 Refund;争议表关联 Dispute 与 Charge。金额分别保存已授权、可捕获、已捕获、已退款和争议金额,并使用最小货币单位,禁止用浮点数直接计算。

状态更新应以经过签名验证的 webhook 和主动 API 查询共同校准。Webhook 可能重试、乱序或延迟,处理器必须幂等,并比较对象创建时间与状态语义。不要因为先收到 charge.refunded、后收到较早的支付事件,就把订单错误恢复成已付款待履约。

客服排查清单

顾客说“重复扣款”时,先确认是两笔已捕获付款,还是一笔已捕获加一笔待处理授权。核对 PaymentIntent 和 Charge ID、金额、时间与状态,不要只看银行截图的商户描述。若确为重复成功付款,再对正确对象退款。

顾客说“退款没到账”时,读取 Refund 状态;确认是否失败、等待余额、成功处理或作为 reversal 呈现。若成功但未显示,提供官方可用的参考编号并让顾客向发卡行查询,不能重新退款超过原金额。

后台显示争议时,立即记录响应截止时间,冻结自动退款动作,核对履约、通信和认证证据,并由授权人员决定接受或反驳。日志中不得保存完整卡号、CVC 或不必要的敏感身份材料。

常见问题

顾客看到待处理金额,是否代表已经扣款?

不一定。它可能只是授权保留。应查看 PaymentIntent 是否仍为 requires_capture,以及是否存在成功捕获的 Charge。银行端显示也可能有延迟,不能仅凭“可用额度减少”判断商家已收款。

已授权的付款可以直接退款吗?

如果尚未捕获,通常应取消 PaymentIntent 并释放授权,而不是创建成功付款后的 Refund。具体能力取决于支付方式和当前状态,应以 Stripe API 返回为准。

部分捕获后剩余金额会怎样?

对于多数付款,部分捕获会释放未捕获余额,且不能再次捕获差额。支持多次捕获的场景属于受限制能力,接入前必须确认支付方式、账户资格和当前文档。

为什么退款成功后顾客账单没有退款入账?

退款可能被作为 reversal 处理,使原始付款直接从账单中消失。也可能仍在发卡行处理。应同时核对原交易、Refund 状态和目的地详情,而不是只搜索一笔独立贷记。

收到争议后还能给客户退款吗?

争议开启后,应通过争议流程处理;Stripe 文档说明,此时不能在争议之外对相关付款发起退款。应核对截止时间并按要求接受或提交证据,避免重复资金动作。

参考资料

  1. Stripe Docs, Place a hold on a payment method: https://docs.stripe.com/payments/place-a-hold-on-a-payment-method
  2. Stripe Docs, PaymentIntent and SetupIntent lifecycle: https://docs.stripe.com/payments/paymentintents/lifecycle
  3. Stripe API Reference, PaymentIntents: https://docs.stripe.com/api/payment_intents
  4. Stripe Docs, Refund and cancel payments: https://docs.stripe.com/refunds
  5. Stripe Docs, Disputes: https://docs.stripe.com/disputes
  6. Stripe Docs, How disputes work: https://docs.stripe.com/disputes/how-disputes-work