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


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 程式大小
Dec 06 PHP
php allow_url_include的应用和解释
Apr 22 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
python类定义的讲解
2013/11/01 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
Python requests模块实例用法
2019/02/11 Python
python logging日志模块原理及操作解析
2019/10/12 Python
python的等深分箱实例
2019/11/22 Python
python创建n行m列数组示例
2019/12/02 Python
python基于property()函数定义属性
2020/01/22 Python
Pandas之缺失数据的实现
2021/01/06 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
房地产财务管理制度
2014/02/02 职场文书
人事文员岗位职责
2015/02/04 职场文书
文员岗位职责范本
2015/04/16 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
重温入党誓词主持词
2015/06/29 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js