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


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 相关文章推荐
拼音码表的生成
Oct 09 PHP
帖几个PHP的无限分类实现想法~
Jan 02 PHP
php ss7.5的数据调用 (笔记)
Mar 08 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
非常有用的9个PHP代码片段
Apr 06 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 PHP
Smarty模板语法详解
Jul 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
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python新手学习标准库模块命名
2020/05/29 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
什么是接口(Interface)?
2013/02/01 面试题
Linux开机引导的步骤是什么
2014/02/26 面试题
表彰先进的通报
2014/01/31 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers