• 微信支付:回调地址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 ?>

    写完 ,收工!

  • 相关阅读:
    提取多层嵌套Json数据
    Jquery 使用Ajax获取后台返回的Json数据后,页面处理
    Jquery购物车jsorder改进版,支持后台处理程序直接转换成DataTable处理
    长连接和短连接
    JAVA8新特性
    线程、进程与程序+并行与并发
    订单号生成规则
    散列表解决冲突的方式
    125.Valid Palindrome
    128.Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/haries/p/wxpay-notify.html
Copyright © 2020-2023  润新知