最近在用Yii2写一个微信商城,在调用微信支付接口时遇到了问题。

支付环节是正常的,微信端能收到支付成功的系统提示,然而回调url始终收不到微信服务器的POST,经过手动测试,回调页面的逻辑也没有问题。

问题究竟出在哪呢,忽然想到在开发者中心里面可以扫码加入一个接口报警群…… 加进去,果然5分钟后发来了报警信息:

天啊,这是个啥!剧本不是这么写的啊,开起来像极了首页头部了。。开始怀疑指定的notify_url是不是有问题了,重新检查了下单逻辑,用硬编码死死的又写了一遍

$notify_url = 'http://www.xxx.com/index.php?r=pay/wx-notify';

再次支付一分钱:),等待提示吧。。。

好吧,如我所愿,要抓狂了,提示信息还是一样。既然我下单逻辑填的地址没有问题,那只能判定是微信服务器访问回调url的时候出错。好,这次我要在controller的init函数中看看你的原型!

echo Yii::$app->request->absoluteUrl;
exit;

然后继续等待下次接口报警信息:

嗯哼,微信开发团队你们滚出来,我保证不打死你!

写文档的孙子,还有你!参数全都忽略了,是否故意为之?然而文档又没有任何解释,让开发者们猜啊!

——————————————————————————我是正义的分割线—————————————————————————————

那么问题来了,解决方案那家强?这个就不用回答了,博主是蓝翔黑客班毕业的!!!

翠花,上解决方案!

写个不带参的脚本notify.php ,把该脚本地址作为回调url。

它将作为中间人,把微信服务器发回来的支付通知数据post到我们先前写的支付回调接口,并将处理结果回复给微信服务器。

 <?php
$data = file_get_contents('php://input');
if(empty($data))
{
return;
}
$url = 'http://'.$_SERVER['HTTP_HOST'].'/index.php?r=pay/wx-notify';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
echo $output;
?>

写完 ,收工!

微信支付:回调地址notify_url不能带参数的更多相关文章

  1. Koa系框架(egg/cabloy)如何获取微信支付回调请求中的xml参数

    背景 在Koa系框架(如EggJS)中进行微信支付开发时,遇到一个问题:微信支付平台会发送一个回调请求,通知支付订单的处理结果.该请求传入的参数是xml格式,而Koa中间件koa-bodyparser ...

  2. 支付回调地址 同步回调地址 异步回调地址 return_url和notify_url的区别

    [微信支付]JSAPI支付开发者文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10 退款结果通知 ...

  3. 微信支付重复回调,java微信支付回调问题

    这几天一直在研究微信支付回调这个问题,发现之前微信支付回调都是正常的也没怎么在意,今天在自己项目上测试的时候发现相同的代码在我这个项目上微信支付回调老是重复执行导致支付成功之后的回调逻辑一直在执行,很 ...

  4. php对微信支付回调处理的方法(合集)

    支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答. 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽 ...

  5. 微信支付回调,XXE攻击漏洞防止方法

    最近微信支付回调发现的XXE攻击漏洞(什么是XXE攻击,度娘.bing去搜,一搜一大把),收到通知后即检查代码, 微信给的解决方法是如果你使用的是: XmlDocument: XmlDocument ...

  6. PHP7 微信支付回调失败 解决

    升级完PHP7 发现微信支付回调失败.原来是 $GLOBALS['HTTP_RAW_POST_DATA'];没有定义的问题.php7 移除了这个全局变量. 问题代码如下: 微信API :WxPay.A ...

  7. 到处都是坑的微信支付V3之 微信支付回调页面

    据上次 到处都是坑的微信支付V3 后很多园友在被虐了千百遍后终于跳转到了亲切的微信支付界面,但输入密码支付后却不知道怎么处理了,接下来补上支付后的处理流程. 1. html中根据前台支付后反馈信息成功 ...

  8. .NET开发微信小程序-接收微信支付回调数据

    获取微信支付传回来的数据 1.MVC控制器 /// <summary> /// 付款返回的数据 /// </summary> /// <returns></r ...

  9. docker+nginx 微信支付回调

    制作微信支付发现回调有问题: docker-compose中接口要映射对应地址 然后再进行访问

随机推荐

  1. poj_3696_The Luckiest number

    Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...

  2. HTML5一些标签和属性

    <bdo> 元素 可以覆盖默认文本的方向  根据dir 属性来控制文字的排序方向            属性:dir="rtl"                     ...

  3. spring cloud 学习之 服务注册和发现(Eureka)

    一:服务注册和发现(Eureka) 1:采用Eureka作为服务注册和发现组件 2:Eureka 项目中 主要在启动类加上 注解@EnableEurekaServer @SpringBootAppli ...

  4. kangle环境liunx一键安装脚本

    1.kangle官方脚本 linux下easypanel版本安装及升级(集成了kangle web 服务器和mysql,仅支持centos 5和centos 6)执行下面的命令即可,安装程序将自动安装 ...

  5. Git-Git协同与工作协同

    Git支持的协议 首先来看看数据交换需要使用的协议. Git提供了丰富的协议支持,包括:SSH.GIT.HTTP.HTTPS.FTP.FTPS.RSYNC及前面已经看到的本地协议等.各种不同协议的UR ...

  6. is 和 == 的区别,utf和gbk的转换,join用法

    is 和 == 的区别 # is 比较的是内存地址 # == 比较的是值 a = 'alex' b = 'alex' #int,str(小数据池)会被缓存,为了节约内存 print(id(a),id( ...

  7. 3714: [PA2014]Kuglarz

    3714: [PA2014]Kuglarz 链接 思路: 好题.对于每个点都需要确定它的值,那么一个点可以直接询问[i,i]来确定,或者已经知道了[i,j]和[i+1,j]推出来. 但是可能产生冲突, ...

  8. 部署微软Nano Server的好处是什么?

    虚拟化对数据中心效率和硬件利用率产生了戏剧性的影响,但是接下来有关系统整合的主要责任落 在了操作系统的重量上.虚拟机通常运行企业级操作系统,比如Windows Server,但是Windows Ser ...

  9. Caliburn.Micro 消息附加多事件

    <Button Content="Let's Talk"cal:Message.Attach="[Event MouseEnter] = [Action Talk( ...

  10. WPF and Silverlight.ComboBox 如何通过 Binding IsDropDownOpen 实现下拉菜单展开

    In the WPF example the Popup and the ToggleButton (the arrow on the right) are bound with the proper ...