美文网首页
IIS+PHP下微信二次开发JS-SDK签名失败(已解决)

IIS+PHP下微信二次开发JS-SDK签名失败(已解决)

作者: 老4 | 来源:发表于2016-02-03 13:58 被阅读931次

今天朋友丢个页面给我让配置下微信分享信息(标题,摘要,图片)。
二话不说,从微信开发文档里面把JS-SDK的下载下来,然后按开发文档说的那样做好配置。但是签名一直失败啊~~~~,我想很多新手跟我一样,也会遇到或多或少这样的问题,如果你遇到的问题跟我一样,那这篇文章一定对你有所帮助。
服务器环境
IIS6.0+PHP5.2.9 (ISAPI模式)

  • 问题一:报错“Call to undelfined function curl_init()
    解决方案:打开php.ini,找到;extension=php_curl.dll,把前面的;去掉重启服务器,开始我是在服务里面重启IIS server,但是重启了还是同样的报错,用命令行模式运行下curl_init()没报错,看来是没重启成功,继续去IIS里面进行下步操作:
    QQ图片20160203133325.png
    好啦,这下没有报错了,但是签名还是失败。
    好吧~~~又去看jssdk.php函数:
private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
    // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }

这里我想应该是CURLOPT_SSL的问题,可以试试把php.ini里面的extension=php_openssl.dll开启,这里我跳过了这部,直接修改了httpGet这个函数,改成下面这样子咯~

  private function httpGet($url) {
    $res = file_get_contents($url);
    return $res;
  }

到这里以为万事大吉了,可是刷新页面,继续出现如下错误

  • 问题二:警告“iis php file_get_contents failed to open stream
    继续打开php.ini,保证下面2行是开启状态,重启ISAPI_筛选器
allow_url_fopen = On
allow_url_include = On

好啦,警告也没有啦,签名也成功!但是问题又来了

 public function getSignPackage() {
    $jsapiTicket = $this->getJsApiTicket();

    // 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

说明:
1.在apache+php下面,上面2个链接的$_SERVER[REQUEST_URI]分别对应"/index.php"和“/”
2.在IIS+php中两个链接的$_SERVER[REQUEST_URI]都是"/index.php",在IIS环境下只需要把

$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

改成

$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[HTTP_X_REWRITE_URL]";

因为微信浏览器打开的url必须跟签名sdk里面传入的url一致!

相关文章

  • IIS+PHP下微信二次开发JS-SDK签名失败(已解决)

    今天朋友丢个页面给我让配置下微信分享信息(标题,摘要,图片)。二话不说,从微信开发文档里面把JS-SDK的下载下来...

  • jssdk集成的签名抛错问题

    问题: 集成微信js-sdk,出现invalid signature签名抛错。 解决初步思路: 根据问题抛错,去查...

  • 解决微信分享默认参数问题

    场景 微信二次分享时,会带上默认参数,导致二次分享失败 解决方案 方案一:微信方案 微信JS-SDK说明文档 转到...

  • JS-SDK

    1. 签名 ​看到网上的大部分问题都集中在签名部分,请大家一定请熟读微信JS-SDK说明文档附录5-常见错误及解决...

  • Android 开发遇到的问题列表

    待解决 1、微信登录问题,未打包时候APP微信登录回调:说的是签名错误,打包后使用APP微信登录正常 已解决 一、...

  • 微信 JS-SDK 录音功能开发

    今天分享一下我第一次接触微信开发,微信JS-SDK录音功能开发的经历. 在开发微信JS-SDK录音功之前我是没有接...

  • 微信公众号开发 ---- 微信jssdk开发示例

    概述 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,...

  • 微信公众号开发——JS-SDK扫一扫接口调用

    概述 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网...

  • 微信公众号开发 JSSDK

    微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发...

  • nodejs 开发公众号

    概念 JS-SDK: 是微信公众平台向微信网页开发者提供的微信网页开发者工具包, 通过js-sdk我们可以高效的使...

网友评论

      本文标题:IIS+PHP下微信二次开发JS-SDK签名失败(已解决)

      本文链接:https://www.haomeiwen.com/subject/mvlekttx.html