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


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 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
PHP5中新增stdClass 内部保留类
Jun 13 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
一致性哈希算法以及其PHP实现详细解析
Aug 24 PHP
php验证码实现代码(3种)
Sep 07 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP实现git部署的方法教程
Dec 19 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 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,ajax实现分页
2008/03/27 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python实现弹球小游戏
2020/08/01 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
学生会主席就职演讲稿
2014/01/14 职场文书
自我鉴定四大框架
2014/01/17 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
设备管理实施方案
2014/05/31 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
2015年度女工工作总结
2015/10/22 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android