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


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+Html+缓存
Nov 25 PHP
smarty section简介与用法分析
Oct 03 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
php生成数字字母的验证码图片
Jul 14 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
php自动载入类用法实例分析
Jun 24 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
TP5框架安全机制实例分析
Apr 05 PHP
php7中停止php-fpm服务的方法详解
May 09 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计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
JavaScript事件列表解说
2006/12/22 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
python中set()函数简介及实例解析
2018/01/09 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
Python实现Linux监控的方法
2019/05/16 Python
python基于property()函数定义属性
2020/01/22 Python
浅析Python面向对象编程
2020/07/10 Python
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
行政经理岗位职责
2013/11/09 职场文书
先进典型事迹材料
2014/12/29 职场文书
电力培训学习心得体会
2016/01/11 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android