跨境独立站的支付幂等性设计:如何防范重复发货
技术领域:支付系统|幂等性设计
支付是代购独立站的关键环节,也是故障高发区。PayPal、Stripe因网络抖动可能重复发送同一笔交易的回调通知。如果不对回调做幂等性处理,订单可能被重复更新,甚至触发多次发货,引发严重资损。
三层幂等保障机制的设计:第一层是支付流水号幂等校验——用支付流水号作为Redis分布式锁的Key,同一流水号的回调只有获取到锁的线程才能处理,其余并发请求被拦截。第二层是数据库唯一索引——支付回调记录表对支付流水号建立唯一索引,插入成功说明第一次处理,插入失败说明已处理过,直接返回成功。第三层是订单状态前置检查——在处理支付成功逻辑前,先查询订单状态,如果已经是“已采购”或“已发货”,直接跳过更新,不再重复执行业务。
幂等性设计的核心哲学是“宁可重复不处理,不可重复处理”。重试可以丢,但发错不能有。每支付一笔回扣都是真金白银,宁可漏掉几次通知(用户手动查询确认),也不能因为重复回调把货发两次。