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


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 相关文章推荐
PHP4实际应用经验篇(7)
Oct 09 PHP
PHP产生随机字符串函数
Dec 06 PHP
php批量删除数据
Jan 18 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php类中private属性继承问题分析
Nov 01 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
php正则修正符用法实例详解
Dec 29 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
php实现文章评论系统
Feb 18 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 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中截取字符串支持utf-8
2007/01/18 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
php获取图片信息的方法详解
2015/12/10 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python去除字符串两端空格的方法
2015/05/21 Python
python解析xml文件实例分析
2015/05/27 Python
Python聊天室实例程序分享
2016/01/05 Python
Python中static相关知识小结
2018/01/02 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
python版百度语音识别功能
2019/07/09 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
建筑工程毕业生自我鉴定
2014/01/14 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
经管应届生求职信范文
2014/05/18 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
2016年端午节寄语
2015/12/04 职场文书