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


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 相关文章推荐
PHPMailer安装方法及简单实例
Nov 25 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
深入分析php之面向对象
May 15 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
asp批量修改记录的代码
2008/06/25 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
JavaScript模拟push
2016/03/06 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python中的下划线详解
2015/06/24 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
使用tensorflow实现AlexNet
2017/11/20 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
django 微信网页授权登陆的实现
2019/07/30 Python
浅谈Python type的使用
2019/11/19 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
党建工作经验交流材料
2014/05/25 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android