美文网首页
初试微信公众号开发+关注自动

初试微信公众号开发+关注自动

作者: theache | 来源:发表于2018-03-26 00:38 被阅读0次

    今天试了试微信公众号的开发,整体下来都很简单,都坑在自己的不仔细上面了。
    首先进行开发的服务器的基本配置

       public function index(Request $request){
            //获取timestamp nonce signature echostr
            $timestamp = $request->get('timestamp','');
            $nonce = $request->get('nonce','');
            $signature = $request->get('signature','');
            $echostr = $request->get('echostr','');
            $token = 'wxgzh';
            //形成字符串  字典排序
            $array = array($timestamp,$nonce,$token);
            sort($array,SORT_STRING);
            //拼接成字符串  sha1加密   并于$signature比较
            $tmp = implode('',$array);
            $tmp = sha1($tmp);
            if ($tmp == $signature && $echostr){
                echo $echostr;
                exit();
            }else{
                //关注自动回复
                $this->responseMsg();
            }
        }
    
    微信订阅号基本配置

    点击提交即可。这样就完成了微信公众号的接入。完成之后别忘记点击启用服务器配置~ 查看微信微信关注取消事件。按照文档所示返回相应的数据即可。

    微信关注取消关注事件
    文本消息回复事件
    public function responseMsg(){
            $postArr = file_get_contents("php://input");//不支持multipart/form-data类数据
    //        $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];//需要开启对应的php扩展
            $postObj = simplexml_load_string($postArr);
            if (strtolower($postObj->MsgType) == 'event'){
                if (strtolower($postObj->Event) == 'subscribe'){
                    $toUser = $postObj->FromUserName;
                    $fromUser = $postObj->ToUserName;
                    $time = time();
                    $MsgType = 'text';
                    $content = '欢迎关注ache的公众号';
                    $tmp = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                    $info = sprintf($tmp, $toUser, $fromUser, $time, $MsgType, $content);
                    echo $info;
                }
            }
            echo '';
        }
    

    然后自己的公众号关注走一波。


    最终效果

    在编写测试过程中需要注意的是返回微信的数据是不能带空格的。在测试失败之后找了好久才发现。另外在接收关注事件的数据的时候因为是post请求关系,如果是使用框架开发的可能需要关闭csrf验证。我就是用laravel5.5来写的。死活就是收不到数据。看了文档是post请求,脑补了下才想到。

    相关文章

      网友评论

          本文标题:初试微信公众号开发+关注自动

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