博主信息
博文 40
粉丝 0
评论 0
访问量 53017
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
微信公众号开发之(关注自动回复消息)
无須終有的博客
原创
5103人浏览过
  1. 配置psb.png

  2. 填写url和token  之后,在对应的目录下,写方法。。

     

  3. psb (1).png
  4. 在url这个目录下写方法


<?php

 

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

 

  public function index(){

    //获得参数 signature nonce token timestamp echostr

    $nonce     = $_GET['nonce'];

    $token     = 'weixin';

    $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();

    }

  }
 }

4.方法写好之后点击提交 配置成功后写自动回复的方法

// 接收事件推送并回复

  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  = '欢迎关注我们的公众号,我们的网址是www.guyongtu.com';

        $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;

 

      

      }

    }

 

}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、完整的代码。。。。。。。。。。。。。。。。。。。。。。。

<?php

 

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

 

  public function index(){

    //获得参数 signature nonce token timestamp echostr

    $nonce     = $_GET['nonce'];

    $token     = 'weixin';

    $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  = '欢迎关注我们的公众号,我们的网址是www.guyongtu.com';

        $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;

 

      

      }

    }

 

}

  

 

}

 

    本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
    全部评论 文明上网理性发言,请遵守新闻评论服务协议
    0条评论
    作者最新博文
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  1. 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学