关注了收不到任何回复?求解答

来源:-

16_szez谋事在人_成事在天

2019-01-04 00:42


<?php
// 本类由系统自动生成,仅供测试用途
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function _construct(){

    }
    public function index(){
    //1.获得参数signature,echostr,timestamp,noce,token 按字典序排序
        $nonce         = $_GET['nonce'];
        $token         = 'Glaze';
        $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'];
         $tmpstr  = $postArr;
           //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 = '';
           //判断该数据包是否是订阅的事件推送
           if( strtolower( $postObj->MsgType ) == 'event' ){
               //如果是关注 subscribe 事件
               if( strtolower($postObj->Event  == 'subscribe')){
                   //回复用户消息
                   $toUser   = $postObj->FromUserName;
                   $fromUser = $postObj->ToUserName;
                   $time     = time();
                   $msgType  = 'text';
                   $content  = '欢迎关注微信公众账号';
                   $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回答

还没有人回答问题,可以看看其他问题

PHP实现微信公众平台开发—提升篇

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

64945 学习 · 262 问题

查看课程

相似问题