为了账号安全,请及时绑定邮箱和手机立即绑定

求大神看一下小问题,token验证成功 为什么关注了没回复


<?php
class IndexAction extends Action {

  public function __construct(){
     
  }

  public function index(){
     //获得参数 signature nonce token timestamp echostr
     $nonce     = $_GET['nonce'];
     $token     = 'imooc';
     $timestamp = $_GET['timestamp'];
     $echostr   = $_GET['echostr'];
     $signature = $_GET['signature'];
     //形成数组,然后按字典序排序
     $array = array();
     $array = array($nonce, $timestamp, $token);
     sort($array);
     //拼接成字符串,sha1加密 ,然后与signature进行校验
     $str = sha1( implode( $array ) );
     if( $str  == $signature && $echostr ){
        //第一次接入weixin api接口的时候
        echo  $echostr;
        exit;
     }else{
        $this->reponseMsg();
     }
  }
  // 接收事件推送并回复
  public function reponseMsg(){
     //1.获取到微信推送过来post数据(xml格式)
     $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
     //2.处理消息类型,并设置回复类型和内容
     /*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>*/
     $postObj = simplexml_load_string( $postArr );
     //$postObj->ToUserName = '';
     //$postObj->FromUserName = '';
     //$postObj->CreateTime = '';
     //$postObj->MsgType = '';
     //$postObj->Event = '';
     // gh_e79a177814ed
     //判断该数据包是否是订阅的事件推送
     if( strtolower( $postObj->MsgType) == 'event'){
        //如果是关注 subscribe 事件
        if( strtolower($postObj->Event == 'subscribe') ){
           //回复用户消息(纯文本格式)    
           $toUser   = $postObj->FromUserName;
           $fromUser = $postObj->ToUserName;
           $time     = time();
           $msgType  =  'text';
           $content  = '欢迎关注我们的微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;
           $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;
/*<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>*/
       

        }
     }
}
}

正在回答

举报

0/150
提交
取消
PHP实现微信公众平台开发—提升篇
  • 参与学习       64907    人
  • 解答问题       257    个

本课程详细讲解了接收微信用户发送的消息和接收订阅关注的事件推送

进入课程

求大神看一下小问题,token验证成功 为什么关注了没回复

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信