php 引入微信的js-sdk 报签名不合法的解决方案

本文记录了解决微信JSSDK签名不合法的问题过程。作者在使用微信提供的集成包时遇到签名错误,通过排查发现是由于httpGet方法未能正确获取access_token导致。通过重写curl代码解决了这一问题。

1 首先 我下载了 http://demo.open.weixin.qq.com/jssdk/sample.zip的集成包. 发现在做demo的时候 把 该有的配置参数都传过去了 但总报签名不合法.
2 检查发现没有access_token竟然也能成签名 , 我也是醉了
3 在jssdk.php 中发现 httpGet 没起作用
4 重写curl 代码如下:

public function _requestGet($url, $ssl=true) {
        // curl完成
        $curl = curl_init();

        //设置curl选项
        curl_setopt($curl, CURLOPT_URL, $url);//URL
        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';
        curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);//user_agent,请求代理信息
        curl_setopt($curl, CURLOPT_AUTOREFERER, true);//referer头,请求来源
        //SSL相关
        if ($ssl) {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁用后cURL将终止从服务端进行验证
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//检查服务器SSL证书中是否存在一个公用名(common name)。
        }
        curl_setopt($curl, CURLOPT_HEADER, false);//是否处理响应头
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_exec()是否返回响应结果

        // 发出请求
        $response = curl_exec($curl);
        if (false === $response) {
            echo '<br>', curl_error($curl), '<br>';
            return false;
        }
        return $response;
    }

5 把2处的httpGet 换成 _requestGet
6 成功 config:ok!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值