微信扫码充值交易完成后,怎么防止重复充值,目前是轮询微信充值交易状态,当支付成功后调用第三方充值业务

微信扫码充值交易完成后,怎么防止重复充值,目前是轮询微信充值交易状态,当支付成功后调用第三方充值业务

问题描述:

防止重复充值是指重复调用第三方充值业务吗?
调用第三方充值业务的时候使用的是http还是?

建议无非就是幂等:数据库方面(锁),缓存方面(redis缓存token)

因为微信支付成功有可能会异步通知多次,所以微信第一次支付成功后你要更新你自己的数据库记录,在调用充值前判断数据库记录是否是第一次的微信支付请求,是的话才执行充值操作。后续的就不执行充值。

而不是同一笔交易,微信多次通知就多次调用充值接口。看你代码没加这个控制

 

微信的文档里面已经有说明的,你需要自己加判断https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml

 

加锁,充值前先查一下是否充值过。

1.创建订单之后拉起支付并生成二维码返回前台

2.用户扫码支付

3.支付完成进入回调处理订单

4.在回调接口检测订单状态,如果订单状态为未处理则处理订单并调用第三方充值,否则不做任何处理