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


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垃圾代码优化操作代码
Aug 05 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
phplot生成图片类用法详解
2015/01/06 PHP
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python获取当前时间的方法
2014/01/14 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
对python Tkinter Text的用法详解
2018/10/11 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python读取表格类型文件代码实例
2020/02/17 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
室内设计实习自我鉴定
2013/09/25 职场文书
职业女性的职业规划
2014/03/04 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
销售员自我评价
2015/03/11 职场文书
倡议书怎么写?
2019/04/11 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电