📌 问题描述

用户网络波动导致重复点击”立即支付”,如何设计接口幂等方案,保证不会重复扣款或生成重复订单?

✅ 回答要点

我会使用”幂等令牌”方案:idempotent-幂等

  1. 用户进入支付页时,后端生成一个全局唯一ID(如UUID或雪花算法ID)作为idempotent_key,返回给前端并存入Redis(设置过期时间5分钟)。

  2. 支付请求携带该key,后端先查Redis,如果key存在则执行扣款并删除key;如果key不存在或已被消费,则直接返回”请勿重复支付”。

  3. 数据库层同时给订单号唯一约束,双重保障。
    此外,还可使用乐观锁update ... where order_status=待支付,只有状态正确才更新。

🔗 相关知识

💡 记忆技巧

📚 参考资料