微信开发之事件推送与被动回复

来源:互联网 发布:猪八戒的前世今生 知乎 编辑:程序博客网 时间:2024/05/15 23:45

直接上代码,公众号后台基本配置:

设置URL、token、EncodingAESKey,并退出启用改配置,后上代码

class TestController extends Controller{//公众号后台的URL的接口    public function index()    {        //将timestamp,nonce,token按字典序排序        $timestamp = $_GET['timestamp'];        $nonce = $_GET['nonce'];        $token = 'weixin';        $signature = $_GET['signature'];        //将排序之后的三个参数拼接之后用sha1加密        $array = array($timestamp, $nonce, $token);        sort($array);        $tmpstr = implode('', $array);        $tmpstr = sha1($tmpstr);        //将加密后的字符串与sianature进行对比,判断请求是否来自于微信        if ($tmpstr == $signature && $_GET['echostr']) {//第一次接入微信Api            echo $_GET['echostr'];            exit;        } else {            $this->responseMsg();        }    }    public function responseMsg()    {        //接收到的用户消息格式<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>        //把接收到的xml格式数据包转化为对象格式        $postObj = simplexml_load_string($postArr);//        被动回复用户消息格式//            <xml>//            <ToUserName><![CDATA[toUser]]></ToUserName>//            <FromUserName><![CDATA[fromUser]]></FromUserName>//            <CreateTime>12345678</CreateTime>//            <MsgType><![CDATA[text]]></MsgType>//            <Content><![CDATA[你好]]></Content>//            </xml>        if (strtolower($postObj->MsgType) == 'event') {//判断是否为订阅的事件推送            if (strtolower($postObj->Event) == 'subscribe') {//判断是否为关注的事件推送                $toUser = $postObj->FromUserName;                $fromUser = $postObj->ToUserName;                $time = time();                $msgType = 'text';                $content = '你好:'.$postObj->FromUserName.'!欢迎关注我们的微信公众号';                $template = "<xml>                            <ToUserName><![CDATA[%s]]></ToUserNames>                            <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
原创粉丝点击