当前位置 博文首页 > json_li的博客:微信公众号服务器配置及接入验证

    json_li的博客:微信公众号服务器配置及接入验证

    作者:[db:作者] 时间:2021-08-25 15:49

    目录

    ?

    一、填写服务器配置

    二、微信服务器验证


    一、填写服务器配置

    登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,

    其中URL是开发者用来接收微信消息和事件的接口URL(即自己服务器接收处理url)。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。

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

    二、微信服务器验证

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

    填写好服务器之后,先不要提交,在服务器响应url处增加方法处理,以响应微信的验证

    路由配置

    //微信公众号事件接口
    Route::any('wxNotify', 'ApiWeChatController@wxNotify');

    控制器代码如下

       /**
         * 微信事件通知
         */
        public function wxNotify()
        {
            $model = new ApiOther();
            # 接收值方式为laravel框架封装方法 非框架可使用 $_GET
            $signature = request()->input('signature');
            $timestamp = request()->input('timestamp');
            $nonce = request()->input('nonce');
            $echostr = request()->input('echostr');
            echo $model->checkSignature($signature, $timestamp, $nonce, $echostr);
        }

    模型层代码如下

       /**
         * 微信验证签名
         * @param $signature
         * @param $timestamp
         * @param $nonce
         * @param $echostr
         * @return bool
         */
        public function checkSignature($signature, $timestamp, $nonce, $echostr)
        {
            if (empty($signature) || empty($timestamp) || empty($nonce)) return false;
    
            $token = 'xxxxxxxxxxxx'; # 自己设定的Token
            $tmpArr = array($token, $timestamp, $nonce);
            sort($tmpArr, SORT_STRING);
            $tmpStr = implode($tmpArr);
            $tmpStr = sha1($tmpStr);
            // 检验signature,若确认此次GET请求来自微信服务器,原样返回echostr参数内容,则接入生效,否则接入失败
            if ($tmpStr == $signature) {
                return $echostr;
            }
            return false;
        }

    写好后,可提交微信配置,开启服务器配置

    这样验证URL有效性成功后即接入生效,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,

    开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应。

    cs
    下一篇:没有了