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


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个人网站架设连环讲(一)
Oct 09 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
php 冒泡排序 交换排序法
May 10 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
php轻松实现文件上传功能
Mar 03 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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 数据库树的遍历方法
2009/02/06 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php防止sql注入简单分析
2015/03/18 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
python基础教程之常用运算符
2014/08/29 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
高中毕业生个人自我鉴定
2013/11/24 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
2015大学迎新标语
2015/07/16 职场文书
python基础详解之if循环语句
2021/04/24 Python