← 返回

支付系统 · 提现出款

Never pay twice./Never miss a payout./Always reconcile.

用户平台钱包三方渠道银行申请审核出款结果确认T+1 对账提交后发起打款结果出款中 · 等结果主动查单回调结果异步发送申请提现防重复提交requestId 唯一索引Redis 令牌冻结余额建单 + 调钱包冻结@Transactionalfor update(悲观锁)钱包:冻结可用 → 冻结写账变流水平台审核稽核 + 风控条件更新(乐观锁)写出款流水雪花 ID = 商户单号全局唯一 · 与渠道同步渠道出款受理后异步打款失败码 → 渠道路由跨行打款收款行可能退票查单接口返回当前状态定时查单回调没来才跑XXL-Job · 超 2h 转人工回调通知携带签名确认结果验签 · 校验金额条件更新 WHERE 出款中调钱包 + 写通知任务钱包:扣减/解冻成功扣冻结 · 失败解冻写账变流水(只追加)通知服务驳回 / 出款结果发送失败可重试收到通知出款结果 / 退回余额对账文件昨日实际出款两次比对渠道↔出款 · 出款↔账变差异表 → 自动/人工核销

手机上可以左右滑动看全图。

防重复 最终一致
异常处理

异常处理

问题方案
请求超时,或者发请求前、发请求后我们自己宕机了,钱打没打出去不知道不重发,钱继续冻着。XXL-Job 补偿任务拿原来的商户单号调渠道的查单接口,问清楚了再动钱;超过 2 小时还问不到就转人工。单号上的唯一索引保证就算重发也只会打一次
渠道明确回复这笔失败了先用错误码映射表分类。渠道自己的问题,由渠道路由按优先级选下一家,雪花 ID 生成新单号重发;卡号户名不对属于用户侧,调钱包解冻退回,让用户改完再提
渠道一直没给我们回调XXL-Job 每 5 分钟扫一遍 status = 出款中且超时的单,走(状态,更新时间)联合索引,每批 500 条,拿单号去查渠道
卡在出款中的单子突然变多监控出款中超 30 分钟的单量和代付成功率,超过阈值推送告警群;人工在配置中心关掉这家渠道,改完即时生效,再去找渠道方
渠道说成功了,银行又把钱退回来T+1 对账:渠道账单对出款流水,出款流水对账变流水。差异进差异表,每日销账任务自动处理跨日在途,剩下的在后台人工核销