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


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程序中的常见漏洞进行攻击
Oct 09 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
php批量删除操作代码分享
Feb 26 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 PHP
PHP number_format函数原理及实例解析
Jul 14 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
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
Javascript typeof 用法
2008/12/28 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
js里面的变量范围分享
2020/07/18 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
Python中的函数作用域
2018/05/07 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
超市店庆活动方案
2014/08/31 职场文书
特岗教师个人总结
2015/02/10 职场文书
安徽导游词
2015/02/12 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Docker官方工具docker-registry案例演示
2022/04/13 Servers