前段时间,在做一个网上商场的项目。在做秒杀模块时候,遇到一个棘手的问题。就是我设置的秒杀活动的库存,总是莫名其妙的减少了。我是把减库存放在微信支付的成功回调里面的。
查询资料发现,原来微信支付成功之后微信服务器会发送8次请求到回调地址。这样我这样的做法就会导致库存减少。
微信支付回调会返回微信生成的订单号以及我们自己生成的订单号。
我的逻辑是这样的,通过他返回的我们自己生成的订单号去数据库查询订单,订单包含微信订单号字段transaction_id 。如果查询到,且这个字段为空的话我们就让它继续走逻辑。我们执行去修改库存的操作和将微信生成的订单号修改到订单的相应的字段。
这样在相同请求到的时候,订单的transaction_id的字段已经不为空了,直接return。问题解决