新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理。

在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是该平台的“使用说明书”。例如下图两个服务号的处理:

微信目前提供了五种消息类型,分别为:

文本消息(text);
图片消息(image);
地理位置消息(location);
链接消息(link);
事件推送(event);

接收到消息后,首先需要对消息类型做出判断,然后再针对不同类型的消息做出处理。在事件推送中,事件类型又分为三种,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件),还需要再加一次判断;判断为subscribe事件后,根据设定好的欢迎消息,回复给用户。

代码实现代码如下:

<?php  $testObj = new Test();  if(!empty($_GET['echostr'])){  //验证配置信息  $testObj->valid();
}else{  //如果不是验证就不会有echostr这个参数  $testObj->responseMsg();
}  exit;  class Test
{  /** * 绑定url、token信息 */  public function valid(){  $echoStr = $_GET["echostr"];  if ($this->checkSignature()) {  ob_clean();echo $echoStr;  }  exit();  }  /** * 检查签名,确保请求是从微信发过来的 */  private function checkSignature()  {  $signature = $_GET["signature"];  $timestamp = $_GET["timestamp"];  $nonce = $_GET["nonce"];      $token = "lingsg";//与在微信配置的token一致,不可泄露  $tmpArr = array($token, $timestamp, $nonce);  sort($tmpArr);  $tmpStr = implode( $tmpArr );  $tmpStr = sha1( $tmpStr );  if( $tmpStr == $signature ){  return true;  }else{  return false;  }  }  public function responseMsg(){//验证签名if ($this->checkSignature()){//获取到关注事件推送的XML数据$postArr = $GLOBALS["HTTP_RAW_POST_DATA"];$postObj = simplexml_load_string( $postArr );//判断:消息类型是否是 事件推送if( strtolower( $postObj->MsgType ) == 'event' ){//判断:事件类型是否是  订阅(subscribe)if( strtolower( $postObj->Event == 'subscribe' ) ){$toUser   = $postObj->FromUserName;$fromUser = $postObj->ToUserName;$time     = time();$msgType  = 'text';$content  = '微信公众号:'.$fromUser.",\n你的微信openid是:".$toUser;$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;}}}}
}
?> 

推送信息:

【微信公众号开发】自我学习第二章:关注事件触发的自动回复相关推荐

  1. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    C#微信公众号开发系列教程五(接收事件推送与消息排重) 原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续 ...

  2. C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权

    通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...

  3. Java 微信公众号开发_学习笔记

    一.课程介绍 本套课程的学习内容,开发语言 微信公众号介绍,申请以及后台设置详解 编辑模式下的消息回复,菜单建立,素材管理等 开发前的环境搭建以及工具准备 开发者模式的切换.以及消息的接收与响应 百度 ...

  4. 微信公众号开发,扫描二维码事件推送丢失参数问题

    需求场景: 每个用户都有自己的推广二维码,分享自己推广二维码,别人扫码后跳转关注公众号,关注后绑定推荐关系. 用到技术点: 1.生成带参数二维码 2.接收事件推送,这里主要是关注和扫带参数二维码两个事 ...

  5. 微信公众号开发:接收通用消息与事件

    接收消息 当普通微信用户向公众账号发送消息时,微信服务器将POST消息的XML数据包到开发者在微信公众号管理后台中配置的服务器地址URL上. 常见消息类型的推送XML数据包结构如下. 文本消息 < ...

  6. 微信公众号测试的那些坑(关注事件/验证token)

    楼主是根据慕课网视频学习由于框架及PHP版本不一样造成的问题~! 1. $GLOBALS['HTTP_RAW_POST_DATA']  如果你的PHP版本是7及以上获取xml数据包:则使用file_g ...

  7. 微信公众号开发学习指南

    写在前面的话微信公众号开发自己学习时不知从何下手,写此文希望可以帮到今后学习开发这方面的朋友.学编程以来,刚开始我一直挺喜欢看视频教程的,边学边模仿.然而现在视频教程我却越发不愿意看了.越来越觉得教程 ...

  8. 微信公众号开发小记(二)--服务器验证

    这篇是微信公众号开发小记的第二篇,承接上一篇,此次将完成如下主要功能 对接微信服务器和自己的服务器 需要的"材料" 到这里需要梳理一下都需要什么东西,以便在整个编码的过程中方便我们 ...

  9. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  10. 微信公众号开发(1)--微信公众平台与后台服务器

    一.前言 今天开始整理一下前面两个月关于微信公众号开发的学习,鉴于本人是边学习边总结,故错误与不足之处还望包涵.鉴于很多例如购买服务器.搭建服务器等大条的操作就不展开叙述了. 本博文主要包涵以下内容: ...

最新文章

  1. 嵌入式系统分类及其应用场景_词嵌入及其应用简介
  2. linux tomcat守护_linux下非root用户运行tomcat
  3. 利用unison+inotify 实现数据双向实时同步
  4. 吴恩达神经网络和深度学习-学习笔记-11-Momentum梯度下降法
  5. python项目实战:实现任意位置文件分割
  6. 编译OpenJDK8:No CONF given, but more than one configuration found in
  7. 当第一资本、高盛、摩根士丹利等巨头纷纷启用CDO时,您想到了什么?
  8. [转][darkbaby]任天堂传——失落的泰坦王朝(上)
  9. 【H5调用iOS原生高德定位】
  10. wps for linux字体缺失,wps for linux 字体库缺失问题的解决办法
  11. java和c制作游戏软件,游戏软件制作,游戏软件制作入门教程
  12. 数据挖掘概念与技术14--Star-Cubing
  13. denoiser降噪实例
  14. VLINK 的更新版本
  15. 运行快应用rpk文件只需要3分钟4个步骤?
  16. 命令行快速删除当前行_在命令行中快速有效地工作
  17. mysql修改数据库名的方法
  18. linux下vanish的部署
  19. PowerBI视觉对象共计271组,2021.01.20日更新
  20. IE6/IE7 /IE8/Firefox/Chrome/Safa…

热门文章

  1. java 获取浏览器名称及版本号
  2. 为防手机游戏成瘾,科技巨头纷纷增加数位健康应用
  3. 论文笔记:基于深度学习的遥感影像变化检测综述
  4. 你的人生你定义!享你所想,无惧冒险
  5. VS2022编译libpng库
  6. 微整理IDEA快捷键
  7. 前端浏览器窗口直接展示pdf文件
  8. mysql最优库容_一种增加已达到设计库容的尾矿库存储量的方法
  9. MP4视频测试URL地址,亲测有效
  10. python如何保存训练好的模型_Python机器学习7:如何保存、加载训练好的机器学习模型...