当前位置: 首页 > 知识库问答 >
问题:

php - 支付回调的时候需要锁吗?

吴哲
2024-04-08

对于微信的支付回调如何写比较好
我们一般是生成订单 未支付 生成支付订单未支付
支付成功回调修改支付订单为已经支付 修改业务订单为已支付 并且进行其他逻辑

$data = 微信回来的数据验签try {改状态其他逻辑返回状态码200}catch(){}但是是否存在并发的情况 应该在外面先lock if(已支付) 返回状态200order::lock 改为已经支付try {改状态其他逻辑返回状态码200}catch(){}

事务锁

共有2个答案

湛光明
2024-04-08

支付回调会出现多次调用的情况,理论上不会出现并发的情况,你只需要做好,去重操作就行了

壤驷子安
2024-04-08

如果有队列的话,你的业务逻辑最好放到队列里面去。

为了避免重入,你可以在验签之后加锁,无论加锁成功与否,你最好都把回调的内容保存一下,以避免出现问题的时候好复盘。

 类似资料:
  • 在支付完成后,从微信服务器请求我们的异步通知地址。 // SDK实例化,传入公共配置 $sdk = new \Yurun\PaySDK\Weixin\SDK($params); class PayNotify extends \Yurun\PaySDK\Weixin\Notify\Pay { /** * 后续执行操作 * @return void */

  • 如题, 在将包含汉字的数据转json存的时候,什么时候需要转unicode存储,什么时候不需要 如下: {"subject":"\u6395\u7268\u51ef\u86c1"} {"subject":"吃饭了没"}

  • 本文向大家介绍php对微信支付回调处理的方法,包括了php对微信支付回调处理的方法的使用技巧和注意事项,需要的朋友参考一下 应用场景 支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为1

  • 问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须

  • 问题内容: 我使用类只有很短的时间,编写方法时,我使所有变量都引用了self,例如self.foo。 但是,我在浏览《 wxPython in Action》 一书时发现,“ self”并没有一直使用。例如: 下面的一个确实使用“自我”。 如果我没记错的话,“自我”是指该类的特定实例,那么什么时候没有必要?有一般的经验法则吗? 问题答案: 您用于引用当前实例的属性。 您用于引用父类的方法。 如果仅