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


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的几个常用数字判断函数代码
Apr 24 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
php面向对象的用户登录身份验证
Jun 08 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python中的startswith和endswith函数使用实例
2014/08/25 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
ASP.NET Core中的配置详解
2021/02/05 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
教师业务培训方案
2014/05/01 职场文书
保研推荐信
2014/05/09 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
设备收款委托书范本
2014/10/02 职场文书
工作收入证明模板
2014/10/10 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python