zoukankan      html  css  js  c++  java
  • 微信支付:回调地址notify_url不能带参数

    最近在用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到我们先前写的支付回调接口,并将处理结果回复给微信服务器。

     1 <?php
     2 $data = file_get_contents('php://input');
     3 if(empty($data))
     4 {
     5     return;
     6 }
     7 $url = 'http://'.$_SERVER['HTTP_HOST'].'/index.php?r=pay/wx-notify';
     8 $curl = curl_init();
     9 curl_setopt($curl, CURLOPT_URL, $url);
    10 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    11 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    12 curl_setopt($curl,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
    13 curl_setopt($curl, CURLOPT_POST, 1);
    14 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    15 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    16 $output = curl_exec($curl);
    17 curl_close($curl);
    18 echo $output;
    19 ?>

    写完 ,收工!

  • 相关阅读:
    常见银行编码收集
    kafka集群在消息消费出现无法找到topic分区的处理解决
    find命令通过排序只保留最新的文件目录
    Git fetch和git pull的区别
    git 常用命令
    wordpress模板修改及函数说明
    webbench进行压力测试
    git存储用户名与密码
    导出putty配置
    一个成功的Git分支模型
  • 原文地址:https://www.cnblogs.com/haries/p/wxpay-notify.html
Copyright © 2011-2022 走看看