当前位置: 首页 > news >正文

支付单、业务单与退款单三表对齐实战指南

支付单、业务单、退款单:一次订场退款里的三表对齐

背景

「快约球」订场链路里,用户支付成功后会同时存在:

概念表 / 字段职责
业务订场单venue_bookingspay_status/booking_status场次是否确认、是否取消
支付单payment_ordersstatus与微信商户单号、金额、用户绑定
退款流水payment_refundsout_refund_no、金额、微信退款号、来源

早期取消订场只改业务表,并返回mock_refunded/wechat_pending占位——资金侧没有真实退款,后台也没有按会员聚合的订单视图。这在演示可以,在对账不行。

目标

  1. 用户取消与后台退款走同一条PaymentService.refundPaidOrder
  2. 已支付订场退款后:支付单refunded,业务单取消并释放slot_offer
  3. Admin 能按userId列出该会员全部支付单,并对paid发起退款。
  4. 微信未就绪且开启 mock 时,明确记mock,不假装已打到微信。

状态机(支付单)

pending → paid → refunding → refunded ↘ closed / failed(下单失败或关单)

说明:

  • refunding:已向微信发起或本地进入退款流程。
  • 微信返回SUCCESS:落payment_refunds.status=success,订单refunded,再执行业务冲正。
  • 微信返回PROCESSING:退款流水记processing业务上仍可先释放场地(避免档期继续被占),资金到账靠微信侧异步完成;产品文案不要写「秒到账」。

关键实现要点

1. 退款入口统一

Admin: POST /api/v1/admin/orders/{id}/refund User cancel (已支付订场): refundVenueBookingIfPaid(bookingId) ↓ PaymentService.refundPaidOrder(outTradeNo, reason, source) ↓ WeChatPayV3Client.createRefund(...) 或 mock ↓ applyBizAfterRefund → venueDirectBookingService.applyRefundCancel(bookingId)

source区分admin/user_cancel,方便以后审计。

2. 三表写入顺序

建议顺序:

  1. 插入payment_refunds(pending)
  2. 支付单paid → refunding
  3. 调微信(或 mock)
  4. 更新退款流水 + 支付单refunded
  5. 业务冲正(订场取消 + 释放时段)

微信调用失败时:退款流水failed,支付单回退到paid,避免卡在refunding无法重试。

3. 按会员查单

Admin 列表增加userId条件,并对users.username / nickname做关键词检索。
业务类型包含:player_membershipteam_vipvenue_booking

这比单独再做一张「会员订单宽表」更便宜:支付域本来就有user_id

4. 会员 / VIP 退款的产品选择

订场退款会冲正业务;会员与 VIP只退支付单,不自动撤销权益
原因:权益回收涉及到期日、叠加开通、人工赠送,自动扣回容易误伤。钱和权分离,交给运营。

接口与表(便于对照)

  • Flyway:V60__payment_refunds.sql(另有启动兜底PaymentRefundsTableMigration
  • 微信:POST /v3/refund/domestic/refunds
  • 支付单扩展状态:refunding/refunded

小结

建议
只改业务表、资金占位用户取消与后台退款必须共用履约
退款失败卡在 refunding失败回退paid,允许重试
PROCESSING 当失败可先释放库存,文案写清「处理中」
会员退款自动降级先退款,权益回收单独策略

远程库 + 微信退款的系统里,状态对齐比多做一个按钮重要。先让三张表能互相解释,再谈分账与对账报表。


http://www.jsqmd.com/news/1249940/

相关文章:

  • 全球首套多季SAR相干性数据集发布
  • 2026太原古交市管道疏通避坑指南 金池师傅上门快 - 余生黄金回收
  • 2026重庆万州管道疏通防坑指南:利扬师傅30分钟上门实测反馈 - 余生黄金回收
  • 本体和传统数据库的实体有什么区别?
  • 计算机毕业设计之中医经方查询与管理系统设计
  • 寄行李用什么快递便宜?慧寄侠教你一键比价,最多省70%运费! - 快递物流资讯
  • RocketMQ 教程 安装 Dashboard
  • Stable Audio v3 vs Suno V3.5 vs Udio 2.1:专业作曲师盲测打分(含MIDI导出、提示词敏感度、风格可控性三重压测报告)
  • 2026天津津南管道疏通防坑实测:江创师傅上门全流程揭秘 - 余生黄金回收
  • C2000开发实战:位域与Driverlib硬件抽象层深度对比与混合使用策略
  • 新华社专访 | AI赋能深蓝:厦门“文鳐”大模型激活海洋经济新引擎
  • 出海AI企业搭建算力基础设施,要满足哪些核心性能要求?
  • 2026年7月最新江诗丹顿杭州闲林吾悦广场维修保养服务电话 - 江诗丹顿官方服务中心
  • 家庭网络也能玩VLAN?用OpenWrt软路由+普通交换机,隔离IoT设备和访客Wi-Fi的保姆级配置
  • 2026年南岸区会计代理记账实力公司优选指南:服务费用解析 - 装修教育财税推荐2026
  • 2026年福州华硕电脑维修可靠店铺盘点与专业推荐 - 装修教育财税推荐2026
  • 吃透OpenClaw !Windows 系统从零部署,彻底解放重复办公工作
  • 毕设 基于大数据的K-means广告效果分析
  • 从零搭建AI视频工作流,手把手配置本地部署方案,Stable Video Diffusion vs. Kling vs. 月之暗面(附GPU显存占用实测表)
  • 抖掌柜无货源上架完整操作教程:从选品筛选、素材采集清洗、AI合规检测到商品发布全流程步骤详解 - 电商分享
  • 基于TMS320DM642视频端口实现DSP间高速数据通信的工程实践
  • DSP性能优化实战:基于XDS560 Trace与AET的硬件级剖析
  • Redis集群在高频优惠券查询场景下的缓存穿透与雪崩治理
  • 深入解析I2C总线:从时钟同步到SMBus协议的工业级应用
  • 2026企业级AI编程平台推荐,国内主流企业级AI代码助手市场趋势及选型指南
  • 2026泉州本地SEO/GEO优化公司靠谱口碑推荐,技术实力+落地实战附服务商案例盘点 - 资讯速览
  • 桥隧坡监测服务商怎么选?
  • 2026年北京门头沟管道疏通避坑指南 - 余生黄金回收
  • 线性代数硬核实战:向量组的秩与 SVD 低秩近似(附完整代码)
  • 昇腾NPU上MLP算子融合优化实践与性能提升