微信公众号验证token+关注回复+关键字回复+单图文回复

来源:互联网 发布:怎么看淘宝销售排名 编辑:程序博客网 时间:2024/05/24 15:38

1. 首先登陆微信公众号开启开发者模式,配置基本信息

这里写图片描述

2. 验证token

public function validToken(){        $timestamp = $_GET['timestamp'];        $nonce = $_GET['nonce'];        $token = 'weixin';//要和上面配置的token令牌一样        $signature = $_GET['signature'];        $echostr = $_GET['echostr'];        $array = array($timestamp,$nonce,$token);        sort($array);        $tmpstr = implode('',$array);        $tmpstr = sha1($tmpstr);        //如果是第一次访问验证token 否则是接受事件是否关注        if ($tmpstr == $signature && $echostr) {            echo $echostr;            exit;        } else {            $this->responseMsg();        }  }

3. 验证通过之后可以写几种消息回复方式

public function responseMsg(){        //获取微信推送过来的数据(xml格式)        $postArr = $GLOBALS["HTTP_RAW_POST_DATA"];        $tmpstr  = $postArr;        //处理消息,并设置回复类型        $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   =  "欢迎关注我的公众号:\n&nbsp;我的公众号"."\n\n微信用户的openid:\n".$postObj->FromUserName."\n\n如需关键字测试请输入:\n(  你好 || phone || composer  )\n\n图文测试请输入:\n(  单图文  ||  多图文  )";                  $template  =  " <xml>                                  <ToUserName><![CDATA[%s]]></ToUserName>                                  <FromUserName><![CDATA[%s]]></FromUserName>                                  <CreateTime>%s</CreateTime>                                  <MsgType><![CDATA[%s]]></MsgType>                                  <Content><![CDATA[%s]]></Content>                                  </xml> ";                  $info      =  sprintf( $template,$toUser,$fromUser,$time,$msgType,$content);                  echo  $info;              }        }        //回复图文消息        if (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "单图文")){              $toUser    =  $postObj->FromUserName;              $fromUser  =  $postObj->ToUserName;              $array = array(                  array(                    "title"=>"微博",                    "description"=>"微博首页!",                    "picUrl"=>"url地址",                    "url"=>"http://weibo.com/",                  ),              );              $template  =  "<xml>                            <ToUserName><![CDATA[%s]]></ToUserName>                            <FromUserName><![CDATA[%s]]></FromUserName>                            <CreateTime>%s</CreateTime>                            <MsgType><![CDATA[%s]]></MsgType>                            <ArticleCount>".count($array)."</ArticleCount>                            <Articles>";              foreach ($array as $key => $v) {                  $template  .= "<item>                                <Title><![CDATA[".$v['title']."]]></Title>                                <Description><![CDATA[".$v['description']."]]></Description>                                <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>                                <Url><![CDATA[".$v['url']."]]></Url>                                </item>";              }              $template.= "</Articles></xml>";              $time     = time();              echo  sprintf( $template,$toUser,$fromUser,$time,"news");     }elseif (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "多图文")) {       $toUser    =  $postObj->FromUserName;       $fromUser  =  $postObj->ToUserName;       $array = array(           array(             "title"=>"腾讯网",             "description"=>"腾讯首页!",             "picUrl"=>"图片url地址",             "url"=>"地址自己填写",           ),           array(             "title"=>"easywechat文档",             "description"=>"微信文档!",             "picUrl"=>"图片url地址",             "url"=>"地址自己填写",           ),           array(             "title"=>"laravel学院",             "description"=>"学院君!",             "picUrl"=>"图片url地址",              "url"=>"地址自己填写",           ),       );       $template  =  "<xml>                     <ToUserName><![CDATA[%s]]></ToUserName>                     <FromUserName><![CDATA[%s]]></FromUserName>                     <CreateTime>%s</CreateTime>                     <MsgType><![CDATA[%s]]></MsgType>                     <ArticleCount>".count($array)."</ArticleCount>                     <Articles>";       foreach ($array as $key => $v) {           $template  .= "<item>                         <Title><![CDATA[".$v['title']."]]></Title>                         <Description><![CDATA[".$v['description']."]]></Description>                         <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>                         <Url><![CDATA[".$v['url']."]]></Url>                         </item>";       }       $template.= "</Articles></xml>";       $time     = time();       echo  sprintf( $template,$toUser,$fromUser,$time,"news");     }else{         switch ($postObj->Content) {           case '你好':             $content  = "hello 你好!";             break;           case 'phone':             $content  = "我的手机号码:\n12339475";             break;           case 'php':             $content  = "我是php";             break;           case 'composer':             $content  = "<a href='链接地址";             break;         }         $template = "<xml>                     <ToUserName><![CDATA[%s]]></ToUserName>                     <FromUserName><![CDATA[%s]]></FromUserName>                     <CreateTime>%s</CreateTime>                     <MsgType><![CDATA[%s]]></MsgType>                     <Content><![CDATA[%s]]></Content>                     </xml>";         $toUser    =  $postObj->FromUserName;         $fromUser  =  $postObj->ToUserName;         $time     = time();         $msgType  = "text";         echo  sprintf( $template,$toUser,$fromUser,$time,$msgType,$content);     }}

微信文档地址:https://mp.weixin.qq.com/wiki

如果对你有帮助,记得点赞!

1 0
原创粉丝点击