为什么退款比售票更容易出现差异
售票通常沿一条正向链路完成,而退款可能从游客、渠道客服、景区窗口或运营后台发起,还会碰到部分退款、过期票、已核销票、支付处理中和人工审批。任一系统把“已受理”误当成“已成功”,都可能造成库存提前释放、游客重复退款或财务账不平。
先建立跨渠道统一状态机
| 内部状态 | 业务含义 | 允许动作 |
|---|---|---|
| 待审核 | 收到申请,尚未形成最终决定 | 审核、撤回、补充材料 |
| 退款中 | 已向渠道或支付方发起,结果未定 | 查询、等待回调、有限补偿 |
| 退款成功 | 外部最终确认且本地落账 | 按规则回补库存、关闭票码 |
| 退款失败 | 明确失败,可决定是否再次发起 | 重试或转人工 |
| 状态未知 | 超时或回调缺失,不能推断成功失败 | 主动查询、冻结重复操作 |
退款接口必须幂等
同一退款请求可能因网络重试、回调重复或人工再次点击被处理多次。建议用“渠道+渠道订单号+退款单号+退款票项”形成唯一业务键。系统再次收到同一请求时返回原处理结果,而不是生成第二笔退款。所有金额使用最小货币单位计算,并保留原价、优惠分摊、实付和已退金额。
库存什么时候回补
库存回补应与票种规则匹配。指定日票、分时票、套票和已经部分核销的票,回补条件并不相同。通用原则是:退款最终成功、票码已失效、未发生不可逆履约,且销售日期仍允许再次销售。若只在申请阶段回补,随后退款失败,就可能产生超卖。
处理核销与退款并发
游客提交退款的同时到闸机核销,是必须演练的竞争场景。票务系统要为票项状态变化设置原子条件:退款锁定后核销应得到明确提示;核销成功后未完成的退款要重新判断。不能让两个系统分别成功,再靠人工事后决定谁算数。
日终差异表怎么设计
- 渠道成功、本地处理中:主动拉取结果并补记退款。
- 本地成功、渠道未确认:暂停二次退款,转渠道核查。
- 退款成功、票码仍有效:立即告警并执行票码关闭补偿。
- 退款成功、库存未回补:按票种和销售窗口判断是否补回。
- 金额不一致:核查优惠分摊、手续费、部分退款和四舍五入规则。
