微信支付53----基础支付APlv3---支付通知---处理重复通知和接口调用的幂等性

看一下支付通知API的文档中,支付通知的注意事项

什么情况下,通知会多次发送给商户系统呢?

现在有一个场景,是商户系统,另一块是微信的支付系统,正常情况下我们的商户系统向微信系统发送支付请求,等待用户扫码支付,用户扫码成功之后,微信的支付系统会给我们的商户系统发送给通知

接下来会给通知进行处理,如果成功了会给一个应答,必须是200的应答

如果出于超时应答的情况下

超过5秒之后,微信就会重复的发送通知,微信会重复的接收通知

重复的接收通知会导致重复的记录日志

导致会出现一种情况,用户在购买产品之后,会导致它的购买积分不断增加,用户的积分会不断的在积分中进行增加,就在这个位置模拟应答超时

模拟接收微信端的重复通知

重新做一笔支付,点击扫描二维码

在这种场景下,我们后台已经接收到了支付通知的id

出现了支付日志的不断增加的情况

订单数据没有增加,但是支付日志不断增加

Ctrl + C两次重新启动内网穿透

这一次内网穿透已经发生了改变

把这一个改一下

我们要判断一个订单状态

在这个processOrder处理方法的订单状态当中

在更新订单状态和记录支付日志之前,处理重复的通知

根据订单号获取订单状态

如果是已支付的话,就return,如果是未支付的话,我们才接收到相应的支付命令

之后我们就创建相应的方法

Alt + enter,将方法创建出来

这种写法是针对空指针异常写的

这里的是为了方便而写 + 绿色的向上符号进行操作

这里

接口调用的幂等性,无论接口被调用多少次,产生的结果是一致的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱你三千遍斯塔克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值