php - 微信支付,1次支付后,回调通知好像请求有很多次,这样会不会重复入库。。。

 多米音乐_35547384 发布于 2022-11-30 15:16

这个是1次微信支付的回调通知,可以看出来有7个,而且时间间隔还蛮大的。这样会不会重复校验支付信息并入库,同理也会增大服务器压力吧

我有反馈给微信哦,我用的是官方提供的PHP SDK,代码如下:

// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(false);

// 返回给微信确认
echo $notify->ToXml();

但是好像不管用,于是我就将Handle中的false修改为true,结果好像还是不管用

// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(true);

// 返回给微信确认
echo $notify->ToXml();

请问要怎么做咧?是不是我有遗漏什么,求解

6 个回答
  • https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

    请参考这个文档。

    在你处理业务之后,你需要向微信服务器反馈,这样就可以停止它继续请求。

    还有,你的代码中,当然要判断是否对同一订单进行重复处理。

    它提供的sdk我没怎么研究过,其实处理完业务直接 echo 'SUCCESS'就可以了,后期,处理业务的逻辑应该做成异步的。

    2022-11-30 15:29 回答
  • 回调里处理订单前先根据订单号判断该订单是否已处理,已处理的话直接echo 'SUCCESS'

    2022-11-30 15:29 回答
  • 请向微信的服务端响应成功的值,以终止通知,同时,在处理逻辑中进行判断是否处理过了,双重保险。

    2022-11-30 15:29 回答
  • 微信回调如果你给他返回成功信息,他是不会重复调的

    2022-11-30 15:29 回答
  • 我也遇到过这种问题

    2022-11-30 15:29 回答
  • V3 官方的SDK有问题。
    需要修改 lib->WxPay.Notify.php 的ReplyNotify函数,
    $this->GetReturn_code($return_code) == "SUCCESS"
    需要改成
    $this->GetReturn_code() == "SUCCESS"

    2022-11-30 15:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有