【微信开发】微信公众平台接入及绑定提示“请求URL超时”的解决办法

成为微信开发者的第一步——微信公众平台接入

第一步:填写服务器配置

在开发->基本配置处启用服务器配置。修改配置

其中URL是开发者用来接收微信消息和事件的接口URL。

Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。

EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

点击提交

【微信开发】微信公众平台接入及绑定提示“请求URL超时”的解决办法

第二步:验证服务器地址的有效性

    开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

    signature ------  微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

    timestamp  ------时间戳

    nonce  ------  随机数

    echostr  ------  随机字符串

    开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

//获取接口Token值和UID
        $memberModel = D('Member');
        $userinfo = $memberModel -> getWechatInfo(WID);
        
        //获取用户的微信账号信息 
        $weixinLogic = D('Weixin','Logic');
        $weixin = $weixinLogic -> detail(WID);
        
        $weixin = new ThinkWechat($userinfo['token']);

    在微信公共函数里面,检验signature:

if(IS_GET){
            $this->auth($token) || die('token信息错误');
            exit($_GET['echostr']);
        }
        
 /**
     * 对数据进行签名认证,确保是微信发送的数据
     * @param  string $token 微信开放平台设置的TOKEN
     * @return boolean       true-签名正确,false-签名错误
     */
    private function auth($token){
        /* 获取数据 */
        $data = array($_GET['timestamp'], $_GET['nonce'], $token);
        $sign = $_GET['signature'];
        
        /* 对数据进行字典排序 */
        sort($data, SORT_STRING);

        /* 生成签名 */
        $signature = sha1(implode($data));

        return $signature === $sign;
    }

    注意:此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

绑定微信公众平台提示“请求URL超时”解决办法:

    一般只有windows的服务器才会出现这样的情况,Linux服务器就不会,具体原因是由于mysql的数据库信息配置为localhost出错了,在数据库配置文件中把'DB_HOST的地址改成 127.0.0.1 就OK了。

    注意:打开数据库链接文件最好用notepad,不要用记事本。

© 著作权归作者所有

相关推荐