TAOCARTS 知识

客户付了一次钱,系统扣了两次,我差点被当骗子

2026-06-26 博客文章

去年旺季出了档事,一个老客户半夜下单买了七八件日妆,付款成功后第二天又收到一条扣款短信,跑来问我是不是盗刷。我一查后台,订单状态显示已支付,没重复扣啊。联系支付渠道客服,确认确实扣了两次,只是第二笔没关联到任何订单,钱飘在中间账户里。排查了半天才搞明白。那段时间网络有点波动,支付网关的支付成功回调推送了两次,间隔不到一秒。第一次回调把订单状态改成了“已付款”,生成采购单。第二次回调进来,系统一看这订单号没处理过,又走了一遍流程——好在库存扣减那边卡住了没发双重货,但客户的支付渠道上实实在在被扣了两次钱。这就是支付回调里一个很容易被忽略的坑:支付网关为了保证送达,回调可能重复发送。如果系统在应用层不做幂等性校验——通俗说就是不判断“这笔交易我是不是已经处理过了”,重复回调就会导致重复扣款、重复发货,甚至对账时凭空多出一笔钱。踩了这坑我才学乖。后来上的系统(现在用的 Taocarts)在支付模块里直接做了支付流水号的去重校验,同一笔交易回调不管来几次,处理完第一次后续全部直接丢弃,订单状态不会反复横跳,财务对账也清爽了。给做代购的兄弟提个醒:别等客户来找你问为什么多扣钱了,才开始查支付日志。选系统的时候多问一句,支付回调有没有做防重处理,这比什么花里胡哨的功能都实在。你们遇到过支付回调坑吗?有没有客户投诉多扣钱的?