在Stripe中处理ACH支付时,如何确认资金已清算至可用余额?
确认Stripe ACH支付清算完成的方法
Stripe的ACH支付触发的charge.succeeded仅代表支付发起并通过初步校验,不意味着资金已完成银行清算。要准确追踪清算状态,可通过以下方式实现:
1. 监听charge.updated Webhook事件
当ACH资金完成清算后,Stripe会更新对应Charge对象的关联字段,你需要在Webhook中监听该事件并校验两个核心字段:
- 确认
charge.status为paid(注:初始成功时该字段也可能为paid,需结合下一字段判断) - 检查
charge.balance_transaction.status是否变为available - 同时
charge.balance_transaction.available_on会返回资金计入可用余额的时间戳,可作为辅助验证依据
2. 主动查询Balance Transaction状态
如果不需要实时监听,可定期通过API查询对应Charge关联的余额交易对象,判断清算状态:
# Ruby示例代码 charge = Stripe::Charge.retrieve('ch_xxx') balance_tx = Stripe::BalanceTransaction.retrieve(charge.balance_transaction) if balance_tx.status == 'available' # 触发自有平台的支付完成状态更新逻辑 end
3. 处理异常场景
ACH支付可能出现清算失败(如用户账户余额不足),此时会触发charge.failed或charge.dispute.created事件,需在业务逻辑中同步处理这些异常,避免误判清算状态。
注意:ACH Direct Debit的常规清算周期为5-7个工作日,不要过早判定清算完成,一切以balance_transaction的available状态为准。
内容的提问来源于stack exchange,提问作者stickmanjones
相关产品推荐
相关产品推荐

