php微信开发之关注事件

本文实例为大家分享了php微信关注事件的具体代码,供大家参考,具体内容如下

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
  public function valid()
  {
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }

  public function responseMsg()
  {
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

    //extract post data
    if (!empty($postStr)){

        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $type = $postObj->MsgType;
        $customevent = $postObj->Event;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[%s]]></MsgType>
              <Content><![CDATA[%s]]></Content>
              <FuncFlag>0</FuncFlag>
              </xml>";
        if($type=="event" and $customrevent=="subscribe"){
          $contentStr = "感谢你的关注\n回复1查看联系方式\n回复2查看最新资讯\n回复3查看法律文书";
          $msgType = "text";
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
          echo $resultStr;
          }
        if(!empty( $keyword ))
        {
          $msgType = "text";
          if($keyword=="1"){
          $contentStr = "qiphon";}
          if($keyword=="2"){
          $contentStr = "test 。";}
          if($keyword=="3"){
          $contentStr = "test333";}
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
          echo $resultStr;
        }else{
          echo "Input something...";
        }

    }else {
      echo "";
      exit;
    }
  }

  private function checkSignature()
  {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];  

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){
      return true;
    }else{
      return false;
    }
  }
}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信公众号判断用户是否已关注php代码解析

    现在的活动,很多都引导用户关注公众号,才能参与到活动当中,那如何才能判断用户关注了公众号呢? 本文就为大家提供php代码,解决问题. 官方接口说明 获取用户基本信息(包括UnionID机制) http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html 1.只要有基础的access_token和用户openid就可以判断用户是否关注该公众号 2.利用的接口url为:https://api.weixin.qq.com/c

  • php判断用户是否关注微信公众号

    最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢? 第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid. 但是马上发现一个问题,就是这种方法需要每次都要获取一下关注列表,而且,当公众号的粉丝比较多时,这种方法就比较吃力了. 下面使用php方法,判断用户是否关注了公众号: <?php $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_t

  • php微信公众号开发之欢迎老朋友

    本文实例为大家分享了php微信公众号开发之欢迎老朋友的具体代码,供大家参考,具体内容如下 介绍数据库 insert iconv 进行数据库转码函数 fromusername 关键代码如下: $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName

  • php微信开发之关注事件

    本文实例为大家分享了php微信关注事件的具体代码,供大家参考,具体内容如下 <?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); //$wechatObj->valid(); $wechatObj->responseMsg(); class wechatCallba

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

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

  • C#微信公众号开发之接收事件推送与消息排重的方法

    本文实例讲述了C#微信公众号开发之接收事件推送与消息排重的方法.分享给大家供大家参考.具体分析如下: 微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.这样的话,问题就来了.有这样一个场景:当用户关注微信账号时,获取当前用户信息,然后将信息写到数据库中.类似于pc端网站的注册.可能由于这个关注事件中,我们需要处理的业务逻辑比较复杂.如送积分啊,写用户日志啊,分配用户组啊.等等--一系列的逻辑需要执行,或者网络环境比较复杂,无法保证5秒内响应当前用户的操作,那如果当操作尚未完

  • asp.net微信开发(已关注用户管理)

    公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求. 接口调用请求说明 http请求方式: GET(请使用https协议) 返回说明 正确时返回JSON数据包: 错误时返回JSON数据包(示例为无效AppID错误): {"errcode":40013,"errmsg":"invalid

  • ASP.NET微信开发(接口指南)

    公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数: 开发者通过检验signature对请求进行校验(下面有校验方式).若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败. signature结合了开发者填写的token参数和请求中的timestamp参数.nonce参数. 加密/校验流程: 1. 将token.timestamp.nonce三个参数进行字典序排序 2. 将三个参数字符串拼接成一个字符串进行sha1加密

  • PHP微信开发之有道翻译

    首先,你需要去有道翻译API官网去申请key:http://fanyi.youdao.com/openapi?path=data-mode 得到key之后,就可以开始从该API获得查询的数据了(返回json还是XML,看个人喜好,这里我用的是json)  下面我直接把responseMsg方法里,实现翻译的代码给出.如果你第一次接触微信API,不懂这个方法是干什么的,请去点击PHP微信开发之文本自动回复 </pre><a target=_blank href="http://b

  • php微信开发之带参数二维码的使用

    最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置  下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decorati

  • 微信 开发生成带参数的二维码的实例

    微信开发生成带参数的二维码的讲解 在微信公众号平台开发者那里,在"账号管理"那里,有一项功能是"生成带参数的二维码",通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微信公众号上 用微信扫一扫推送到开发者网址那儿的数据如下: <xml><ToUserName><![CDATA[gh_452****b0f2]]></ToUserName> <FromUserName><![CDATA[o

  • C#微信开发第一章

    不想废话,直接写了!因为是留给自己做随笔的,所以大神们看到别喷--  1.必须有微信公众账号  2.你也可以申请测试微信号,链接给你http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 然后,建立mvc,你只需要点几下vs就帮你搞定了.这不废话  接着,要创建一个一般处理程序,随便起个名字,测试通过才是重点,抓紧时间-- /// <summary> /// 验证微信签名 /// </summary> /// &l

  • asp.net微信开发(消息应答)

    当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上. 请注意: 1.关于重试的消息排重,推荐使用msgid排重. 2.微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次.假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试.详情请见"发送消息-被动回复消息". 3.为了保证更高的安全保障,开发者可以在公众平台官网的开发者中心处设置消息加密.开启加密后,用户发来的消息会被加密

随机推荐