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


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数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
详解php中curl返回false的解决办法
Mar 18 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
jquery动态添加option示例
2013/12/30 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
vue.js简单配置axios的方法详解
2017/12/13 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
小学教师听课制度
2014/02/01 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers