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


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中使用Oracle数据库(6)
Oct 09 PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
php whois查询API制作方法
Jun 23 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 PHP
php微信公众号开发之快递查询
Oct 20 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
JS分割字符串并放入数组的函数
2011/07/04 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
javascript中clone对象详解
2014/12/03 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
Promise.all中对于reject的处理方法
2018/08/01 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
js实现简易计算器功能
2019/10/18 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
python中使用enumerate函数遍历元素实例
2014/06/16 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Django与JS交互的示例代码
2017/08/23 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python设置随机种子实例讲解
2019/09/12 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
详解python中的lambda与sorted函数
2020/09/04 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
大学校园生活自我鉴定
2014/01/13 职场文书
岳麓书院导游词
2015/02/03 职场文书
个人先进事迹总结
2015/02/26 职场文书
2015年大学生工作总结
2015/04/21 职场文书