配置微信公众平台URL关注时自动回复


//1、配置微信公众平台URL
 

//配置微信平台URL
public function weixinURL(){
        //将timestamp,nonce,token按字典排序
        $timestamp =$_GET['timestamp'];
        $nonce     =$_GET['nonce'];
        $echostr   =$_GET['echostr'];
        $token     ='weixin';
        $signature =$_GET['signature'];
        $array     =array($timestamp,$nonce,$token); 
        sort($array);
        //将排序后的三个参数拼接之后用sha1加密
        $tmpstr=sha1(implode($array));
        //将加密后的字符串与signature进行对比,判断该请求是否来自微信
        if($tmpstr==$signature && $echostr){
            echo $echostr;
            exit();
        }
        else{
            $this->reponseMsg();
        }
    }

    //关注时回复
    public function reponseMsg(){

        //查询微信推送消息内容
        $rootM=D('wechatconfig');
        $where['id']=1;
        $res=$rootM->where($where)->find();

        //1.获取微信推送过来的post数据(xml格式)
        $postArr=file_get_contents("php://input");
        //2.处理消息类型,并设置回复类型和内容
        $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';

                $answerM=D('answer');
                $whereM['id']=1;
                $resultM=$answerM->where($whereM)->find();
                $content=array(
                    array(
                        'title'=>$resultM['answer_name'],
                        'description'=>$resultM['answer_charact'],
                        'picUrl'=>$res['domain_name'].'/'.$resultM['answer_img'],
                        'url'=>$resultM['answer_url'],
                    ), 
                );
                $template="<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <ArticleCount>1</ArticleCount>
                            <Articles>";
                foreach ($content as $k=>$v) {
                    $template.="<item>
                                <Title><![CDATA[".$v['title']."]]></Title>
                                <Description><![CDATA[".$v['description']."]]></Description>
                                <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
                                <Url><![CDATA[".$v['url']."]]></Url>
                                </item>";
                }
                $template.="</Articles>
                            </xml>";
                echo sprintf($template,$toUser,$fromUser,$time,'news');
            }
        }
        
        //点击回复图文
        if(strtolower($postObj->Event)=='click'){
            if($postObj->EventKey==$postObj->EventKey){
                $titleaa=$postObj->EventKey;
                $whereaa['t_explain']=strtolower($titleaa);
                $imgtextM=D('imgtext');
                $result=$imgtextM->where($whereaa)->find();
                $fromUser=$postObj->ToUserName;
                $toUser=$postObj->FromUserName;
                $time=time();
                if($result['t_explain']==$postObj->EventKey){
                    if($result['t_url']==""){
                        $arr=array(
                            array(
                                'title'=>$result['t_title'],
                                'description'=>$result['t_synopsis'],
                                'picUrl'=>$res['domain_name'].'/'.$result['t_img'],
                                'url'=>$res['domain_name'].'/index.php/index/imgtext/id/'.$result['id'],
                            ), 
                        );
                    }else{
                        $arr=array(
                            array(
                                'title'=>$result['t_title'],
                                'description'=>$result['t_synopsis'],
                                'picUrl'=>$res['domain_name'].'/'.$result['t_img'],
                                'url'=>$result['t_url'],
                            ), 
                        );
                    }
                    
                    $template="<xml>
                                <ToUserName><![CDATA[%s]]></ToUserName>
                                <FromUserName><![CDATA[%s]]></FromUserName>
                                <CreateTime>%s</CreateTime>
                                <MsgType><![CDATA[%s]]></MsgType>
                                <ArticleCount>1</ArticleCount>
                                <Articles>";
                    foreach ($arr as $k=>$v) {
                        $template.="<item>
                                    <Title><![CDATA[".$v['title']."]]></Title>
                                    <Description><![CDATA[".$v['description']."]]></Description>
                                    <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
                                    <Url><![CDATA[".$v['url']."]]></Url>
                                    </item>";
                    }
                    $template.="</Articles>
                                </xml>";
                    echo sprintf($template,$toUser,$fromUser,$time,'news');
                }else{
                    $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;
                }
                
            }
        }            
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值