php关注微信服务号回复

来源:互联网 发布:charindex函数 sql 编辑:程序博客网 时间:2024/06/05 17:30

环境:新浪SAE+ThinkPHP5.0.12

注:代码留存用

坑点:新浪SAE一定记得实名认证,不然token验证不让过
URL填写TP5入口文件的路径,token自己设置(和自己的代码对接),key随机生成

控制器文件代码(功能:关注公众号回复文字):

<?phpnamespace app\index\controller;class Index {    public function __construct() {    }    public function Index() {        if (isset($_GET['echostr'])) {            //获得参数 signature,nonce,timestamp,token            $nonce = $_GET['nonce'];            $token = 'TzxWeiXin';            $timestamp = $_GET['timestamp'];            $echostr = $_GET['echostr'];            $signature = $_GET['signature'];            //形成数组,然后案字典序排序            $array = array();            $array = array($nonce, $timestamp, $token);            sort($array);            //拼接字符串,sha1加密,然后与signature进行校验            $str = sha1(implode($array));            if ($str == $signature) {                echo $echostr;                exit ;            }        } else {            $this -> responseMsg();        }    }    //接受事件推送并回复    public function responseMsg() {        //获取微信post过来的xml数据(不能用$_POST,因为PHP不识别XML)        $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];        //处理消息类型,并且设置回复类型        //      <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);        //      ToUserName  开发者微信号        //      FromUserName    发送方帐号(一个OpenID)        //      CreateTime  消息创建时间 (整型)        //      MsgType 消息类型,event        //      Event   事件类型,subscribe(订阅)、unsubscribe(取消订阅)        if (strtolower($postObj -> MsgType) == 'event') {            //如果是关注事件subcribe            if (strtolower($postObj -> Event) == 'subscribe') {                //回复用户消息                $toUser = $postObj -> FromUserName;                $fromUser = $postObj -> ToUserName;                $time = time();                $msgType = 'text';                $content = '欢迎关注我们的微信';                //              回复用户消息格式                //              <xml>                //              <ToUserName><![CDATA[toUser]]></ToUserName>                //              <FromUserName><![CDATA[fromUser]]></FromUserName>                //              <CreateTime>12345678</CreateTime>                //              <MsgType><![CDATA[text]]></MsgType>                //              <Content><![CDATA[你好]]></Content>                //              </xml>                $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;            }        }    }}
阅读全文
0 0
原创粉丝点击