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

本文实例讲述了微信公众平台开发关注及取消关注事件的方法。分享给大家供大家参考。具体分析如下:

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的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程序设计有所帮助。

(0)

相关推荐

  • 微信公众平台开发入门教程(SAE方倍工作室)

    我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用启用微信公众平台开发模式基础接口消息及事件微信公众平台PHP SDK微信公众平台开发模式原理开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.sina.com.cn/ ,使用新浪微博账号可以直接登录SAE,登录后SAE将赠送50

  • 微信公众平台实现获取用户OpenID的方法

    本文实例讲述了微信公众平台实现获取用户OpenID的方法.分享给大家供大家参考.具体分析如下: 用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信"网页授权获取用户基本信息"高级接口结合使用,获得用户的登入个人信息. 具体方法: 1.配置网页授权回调域名,如 www.jb51.net 2.模拟公众号的第三方网页,http://www.jb51.net/getc

  • java开发微信公众号支付

    最近做了微信公众号支付的开发,由于是第一次做也摸索了几天的时间,也只是达到了实现功能的水平,并没有太多考虑到性能问题,所以这篇文章比较适合初学者. 微信公众号支付的总体其实很简单,大致就分为三步.第一步需要获取用户授权:第二步调用统一下单接口获取预支付id:第三步H5调起微信支付的内置的js.下面介绍具体每一步的开发流程. 一    首先要明确微信公众号支付属于网页版支付,所以相较于app的直接调取微信支付要多一步微信授权.也就是需要获取用户的openid.微信公众号使用的交易类型是JSAPI,

  • 微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动

    在腾讯的微信公众平台开发者文档,网页授权获取用户基本信息这一节中写道"在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名.请注意,这里填写的域名不要加http://",链接: http://mp.weixin.qq.com/wiki/index.php?title=%e7%bd%91%e9%a1%b5%e6%8e%88%e6%9d%83%e8%8e%b7%e5%8f%96%e7%94%a8%e6%88%b7%e5%9f%ba%e6%9c%ac%e

  • 微信公众号 摇一摇周边功能开发

    ①申请开通摇一摇功能 申请开通摇一摇周边功能.成功提交申请请求后,工作人员会在三个工作日内完成审核.若审核不通过,可以重新提交申请请求.若是审核中,请耐心等待工作人员审核,在审核中状态不能再提交申请请求. 接口代码如下: http请求方式: POST(请使用https协议)https://api.weixin.qq.com/shakearound/account/register?access_token=ACCESS_TOKENPOST数据格式:json POST数据例子: { "name&q

  • 使用Nodejs开发微信公众号后台服务实例

    摘要: 微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力. Nodejs,近两年发展非常快的开发工具,尤其适合构建移动后台.本文就以笔者自己开发的实例,来描述如何基于Nodejs开发属于自己的微信公众号.在这个实例中,主要使用到了express, wechat, mongodb, monk等模块. 前期准备: 1.申请微信公众号,前往 https://mp.weixin.qq.com/  申请,这里不做过多阐述. 2. 购买服务器, 这里推荐Amazon的EC2,首次用户可

  • 微信公众号点击菜单即可打开并登录微站的实现方法

    本文实例讲述了微信公众号点击菜单即可打开并登录微站的实现方法.分享给大家供大家参考.具体分析如下: 总体来说,微信公众号点击菜单即可打开并登录微站实现步骤比较复杂,但很多微站在己用上了,本文对此进行整理归纳,相信可以给大家带来一定的参考借鉴价值. 现在大部分微站都通过用户的微信openid来实现自动登录.在我之前的开发中,用户通过点击一个菜单,公众号返回一个图文,用户点击这个图文才可以自动登录微站.但是如果你拥有高级接口,就可以实现点击菜单,打开网页就能获取这个openid,实现自动登录. 这里

  • 微信公众号支付(二)实现统一下单接口

    上一篇已经获取到了用户的OpenId 这篇主要是调用微信公众支付的统一下单API API地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 看文档,主要流程就是把20个左右的参数封装为XML格式发送到微信给的接口地址,然后就可以获取到返回的内容了,如果成功里面就有支付所需要的预支付ID 请求参数就不解释了. 其中,随机字符串:我用的是UUID去中划线 public static String create_nonce_s

  • PHP对接微信公众平台消息接口开发流程教程

    一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: 复制代码 代码如下: <?phpdefine("TOKEN", "weixin");//自己定义的token 就是个通信的私钥$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();//$wechatObj->responseMsg();c

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

    本文实例讲述了微信公众平台开发关注及取消关注事件的方法.分享给大家供大家参考.具体分析如下: 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL,方便开发者给用户下发欢迎消息或者做帐号的解绑. 下面是一个微信公众平台关注和取消关注的实例,代码如下: 复制代码 代码如下: define("TOKEN", "w3note");//定义识别码 $wechatObj = new wechatCallbackapiTest();//实例化wechatCal

  • 微信公众平台开发入门教程(图文详解)

    在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯及XML语言基础.如果你还没有,那么请先学习相关知识. 我们将使用微信公众账号方倍工作室(账号:pondbaystudio,二维码在最底部)作为讲解的例子. 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅.文字.图片.语音.视频消息回复文本.图文及音乐消息程序开发 创建百度云应用 申请账号 登录http://developer.baidu.com/bae ,使用邮箱或者手机

  • Java微信公众平台开发(12) 微信用户信息的获取

    前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关联,所以在这里我们就采用openid去获取用户微信信息,并实现一个简单场景应用:当微信新用户关注我们的微信公众平台的时候我们自动回复一篇图文消息,然后在图文消息中标题为:[尊敬的:XXX,你好!],而且在图文消息中的图片就是用户的微信头像,如下图: 有关获取微信用户信息的文档我们可以参照:http:

  • 微信公众平台开发实战Java版之微信获取用户基本信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 开发者可通过OpenID来获取用户基本信息.请使用https协议. 我们可以看看官方的文档:获取用户的基本信息. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-b

  • 微信公众平台开发教程②微信端分享功能图文详解

    本文实例讲述了微信公众平台微信端分享功能.分享给大家供大家参考,具体如下: 背景 初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客.问答,对于参差不齐的信息,自己也是有苦说不出,抽出一点时间写点文章,既是对自己的学习总结,也希望给予同是菜鸟的小白一点帮助. 今天想添加微信分享的功能,如果不进行自定义设计,那么当我们点击分享朋友圈.好友或者QQ好友.空间时,默认的标题就是<title>标签中的信息,而显示的描述信息就是链接,图片多是默认为页面中显示的第一张图片,显然这样的处理是不

  • 微信公众平台开发——群发信息

    1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片等,只是发送数据格式不同而已,下面有链接,可以查询数据类型的数据发送格式. 2.群发短信的流程 获取测试公众账号(有账号的可以不用测试账号,不过正式的账号限制比较多) 用户关注上面的公众账号 通过appid和appsecret获取我们的access_token 通过access_token群发短信 3.获取测试公众账号 + 关注公众号 1).公众测试账号获取 访问上面的连接,选择"接口测试号申请"获得直

  • php 微信公众平台开发模式实现多客服的实例代码

    其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧 在这篇微信公众平台开发教程中,我们将介绍如何使用开发模式实现多客服系统. 一.回复多客服消息 在新的微信协议中,开发模式也可以接入客服系统. 开发者如果需要让用户使用客服系统,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_se

  • php微信公众平台开发之获取用户基本信息

    本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 把微信和第三方网站结合起来运行,是许多客户经常要的方案.这里简要介绍一下获取微信用户的基本信息,并在第三方网站直接登录. 当微信公户关注一个公众号时,会产生一个独一无二的OpenID,此时我们就需要用到它去请求微信服务器获取用户的基本信息,包括头像,昵称等. 更加详细的说明请参考 微信开发文档 . 获取的步骤如下: 1 第一步:用户同意授权,获取code 2 第二步:通过c

  • php微信公众平台开发(三)订阅事件处理

    一.简介 新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理. 在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是该平台的"使用说明书". 本文将详细讲述对subscribe事件的处理过程,回复相应信息提升交互性. 二.思路分析 微信目前提供了五种消息类型,分别为: 文本消息(text): 图片消息(image): 地理位置消息(location): 链接消息(link): 事件推送(e

随机推荐