微信开发(一):接收事件推送并回复

来源:互联网 发布:video.js ie8无法使用 编辑:程序博客网 时间:2024/05/29 14:57

基于thinkphp微信开发

1、 微信公众平台开启服务器配置

这里写图片描述

2、 具体代码

在http://ip/tp/wx.php/Home/Index.index
这里写图片描述

wx.php

<?php//1、定义项目名称define('APP_NAME','wx');//2、定义项目路径define('APP_PATH','wx/');//3、引入tp核心文件require './ThinkPHP/ThinkPHP.php';?>

Home/Controller/IndexController.class.php

<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller {public function index(){    //1将timestamp,nonce,token按字典排序    $timestamp=$_GET['timestamp'];//时间戳    $nonce=$_GET['nonce'];//随机数    $token='abcd';    $signature=$_GET['signature'];//微信加密签名    //第一次接入微信API会多传一个echostr字符串/////////    $echostr=$_GET['echostr'];//随机字符串    $array=array($timestamp,$nonce,$token);    sort($array);    //2将排序后的三个参数拼接之后用sha1加密    $tmpstr=sha1(implode('',$array));    //3将加密后的字符串与signature对比,判断该请求是否来自微信    if($tmpstr==$signature && $echostr){      /*      第一次在微信公众平台设置url地址的时候,这是微信公众帐号第一次推送get 请求到第三方服务器url地址///////////    * */      //第一次接入微信API接口的时候      echo $echostr;      exit;     }else{        $this->reponseMwg();     }    }// 接收事件推送并回复    public function reponseMwg(){    //1.获取到微信推送过来post数据(xml格式)///////////    $postArr=$GLOBALS['HTTP_RAW_POST_DATA'];    //2.处理消息类型并设置回复类型和内容    /*         <xml>            <ToUserName><![CDATA[toUser]]></ToUserName>            <FromUserName><![CDATA[FromUser]]></FromUserName>            <CreateTime>123456789</CreateTime>            <MsgType><![CDATA[event]]></MsgType>            <Event><![CDATA[subscribe]]></Event>        </xml>     * */     $postObj=simplexml_load_string($postArr);     //判断该数据包是否是订阅的事件推送///////////     if(strtolower($postObj->MsgType)=='event'){        //如果是关注时间subscribe事件///////////        if(strtolower($postObj->Event)=='subscribe'){           //回复用户消息           $toUser=$postObj->FromUserName;           $fromUser=$postObj->ToUserName;           $time=time();           $msgType='text';           $content='欢迎关注我们~~~';           //回复消息模版           $template="                    <xml>                    <ToUserName><![CDATA[%s]]></ToUserName>                    <FromUserName><![CDATA[%s]]></FromUserName>                    <CreateTime>%s</CreateTime>                    <MsgType><![CDATA[%s]]></MsgType>                    <Content><![CDATA[%s]]></Content>                    </xml>           ";            $info=sprintf($template,$toUser,$fromUser,$time,$msgType,$content);           echo $info;            }        }        ///.....微信开发(二).....    }}

测试,关注该公众号,会收到“欢迎关注我们~~~”
这里写图片描述

原创粉丝点击