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

基于thinkphp微信开发

##1、 微信公众平台开启服务器配置
微信开发(一):接收事件推送并回复_第1张图片
##2、 具体代码
在http://ip/tp/wx.php/Home/Index.index
微信开发(一):接收事件推送并回复_第2张图片

###wx.php


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

###Home/Controller/IndexController.class.php


namespace 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.处理消息类型并设置回复类型和内容
    /*
         
            
            
            123456789
            
            
        
     * */
     $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="
                    
                    
                    
                    %s
                    
                    
                    
           ";
            $info=sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
           echo $info;
            }
        }
        ///.....微信开发(二).....
    }
}

测试,关注该公众号,会收到“欢迎关注我们~~~”
微信开发(一):接收事件推送并回复_第3张图片

你可能感兴趣的:(PHP)