微信公众平台开发关注及取消关注事件的方法


Posted in PHP onDecember 23, 2014

本文实例讲述了微信公众平台开发关注及取消关注事件的方法。分享给大家供大家参考。具体分析如下:

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL,方便开发者给用户下发欢迎消息或者做帐号的解绑.

下面是一个微信公众平台关注和取消关注的实例,代码如下:

define("TOKEN", "w3note");//定义识别码 

$wechatObj = new wechatCallbackapiTest();//实例化wechatCallbackapiTest类 

 

if(!isset($_GET["echostr"])){ 

     $wechatObj->responseMsg(); 

}else{ 

 $wechatObj->valid(); 

} 

class wechatCallbackapiTest 

{ 

 public function valid() 

    { 

        $echoStr = $_GET["echostr"]; 

        if($this->checkSignature()){ 

         echo $echoStr; 

         exit; 

        } 

    } 

    public function responseMsg()//执行接收器方法 

    { 

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 

    if (!emptyempty($postStr)){ 

      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 

      $RX_TYPE = trim($postObj->MsgType); 

      switch($RX_TYPE){ 

       case "event": 

       $result = $this->receiveEvent($postObj); 

       breadk; 

      } 

      echo $result; 

  }else{ 

   echo ""; 

   exit; 

  } 

 } 

  private function receiveEvent($object){ 

   $content = ""; 

   switch ($postObj->Event){ 

    case "subscribe": 

    $content = "欢迎关注网志博客";//这里是向关注者发送的提示信息 

    break; 

    case "unsubscribe": 

    $content = ""; 

    break; 

   } 

   $result = $this->transmitText($object,$content); 

   return $result; 

    } 

 private function transmitText($object,$content){ 

   $textTpl = "<xml> 

       <ToUserName><![CDATA[%s]]></ToUserName> 

       <FromUserName><![CDATA[%s]]></FromUserName> 

       <CreateTime>%s</CreateTime> 

       <MsgType><![CDATA[text]]></MsgType> 

       <Content><![CDATA[%s]]></Content> 

       <FuncFlag>0</FuncFlag> 

       </xml>"; 

    $result = sprintf($textTpl, $object->FromUserName, $object->$ToUserName, time(), $content); 

    return $result; 

  } 

 private function checkSignature() 

 { 

  $signature = $_GET["signature"]; 

  $timestamp = $_GET["timestamp"]; 

  $nonce = $_GET["nonce"]; 

  $token = TOKEN; 

  $tmpArr = array($token, $timestamp, $nonce); 

  sort($tmpArr, SORT_STRING); 

  $tmpStr = implode( $tmpArr ); 

  $tmpStr = sha1( $tmpStr ); 

  if( $tmpStr == $signature ){ 

   return true; 

  }else{ 

   return false; 

  } 

 } 

}

代码相关参数说明:
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType  消息类型,event
Event 事件类型,subscribe(订阅)、unsubscribe(取消订阅)

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
Php部分常见问题总结
Oct 09 PHP
请php正则走开
Mar 15 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
php引用传值实例详解学习
Nov 06 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php如何连接sql server
Oct 16 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
PHP 获取 ping 时间的实现方法
Sep 29 PHP
分析php://output和php://stdout的区别
May 06 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
php打印输出棋盘的实现方法
Dec 23 #PHP
php新浪微博登录接口用法实例
Dec 23 #PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 #PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 #PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 #PHP
php获取QQ头像并显示的方法
Dec 23 #PHP
关于URL最大长度限制的相关资料查证
Dec 23 #PHP
You might like
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
js运动事件函数详解
2016/10/21 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python爬豆瓣电影实例
2018/02/23 Python
python使用mysql的两种使用方式
2018/03/07 Python
python八皇后问题的解决方法
2018/09/27 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
师范毕业生个人求职信
2013/12/09 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
新年主持词
2014/03/27 职场文书
保密协议书范本
2014/04/22 职场文书
抗震救灾标语
2014/06/26 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
2015年预算员工作总结
2015/05/14 职场文书
环境卫生标语
2015/08/03 职场文书
React如何创建组件
2021/06/27 Javascript