博客列表 >微信公众号开发之(关注自动回复消息)

微信公众号开发之(关注自动回复消息)

无須終有的博客
无須終有的博客原创
2018年07月16日 15:12:484798浏览
  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 核实处理。
    全部评论
    文明上网理性发言,请遵守新闻评论服务协议