zoukankan      html  css  js  c++  java
  • 微信公众平台开发--订阅、文本、单图文回复

    <?php
    class Index{
    public function index(){
    //获得参数 signature nonce token timestamp echostr
    $nonce=$_GET["nonce"];
    $token="ceshi";//在微信公众平台设置
    $timestamp=$_GET["timestamp"];
    $echostr=$_GET["echostr"];
    $signature=$_GET["signature"];
    //形成数组,然后按字典序排序
    $array=array();
    $array=array($nonce,$token,$timestamp);
    sort($array);
    //拼接成字符串,sha1加密 ,然后与signature进行校验
    $str=sha1(implode($array));//加密
    if($str==$signature&&$echostr)
    {
    //第一次接入weixin api接口的时候
    echo $echostr;
    exit;
    }else{
    $this->responseMsg();
    }
    }

    // 接收事件推送并回复
    public function responseMsg(){
    //1.获取到微信推送过来post数据(xml格式)
    $postArr=$GLOBALS['HTTP_RAW_POST_DATA'];
    //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";
    //$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,"欢迎".$toUser."关注蓝飞公众账号");
    echo $info;
    }
    }

    //判断该数据包是否是文本的事件推送
    /*if(strtolower($postObj->MsgType)=="text")
    {
    $tempalte="<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    $fromUser=$postObj->ToUserName;
    $toUser=$postObj->FromUserName;
    $time=time();
    $content="您发送的内容是:".$postObj->Content."如有疑问,请上<a href='http://www.baidu.com'>百度</a>查询";
    $msgType="text";
    echo sprintf($tempalte,$toUser,$fromUser,$time,$msgType,$content);
    }*/

    //发送"tuwen",回复一个单图文
    if( strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='tuwen' ){
    $toUser = $postObj->FromUserName;
    $fromUser = $postObj->ToUserName;
    $arr = array(
    array(
    'title'=>'虾咪音乐吧',
    'description'=>"ktv",
    'picUrl'=>'http://www.huimeiktv.cn/View/Index/img/logo.png',
    'url'=>'http://www.huimeiktv.cn',
    ),
    array(
    'title'=>'hao123',
    'description'=>"hao123 is very cool",
    'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
    'url'=>'http://www.hao123.com',
    ),
    );
    $template = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <ArticleCount>".count($arr)."</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{
    $tempalte="<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    $fromUser=$postObj->ToUserName;
    $toUser=$postObj->FromUserName;
    $time=time();
    $content="您发送的内容是:".$postObj->Content."如有疑问,请上<a href='http://www.baidu.com'>百度</a>查询";
    $msgType="text";
    echo sprintf($tempalte,$toUser,$fromUser,$time,$msgType,$content);
    }
    }//responseMsg end
    }//class end

    $res=new Index();
    $res->index();
    ?>

    每天积累一点,离成功就近一点
  • 相关阅读:
    ubuntu下查看某个头文件来自哪个软件包?
    系统调用fork()在powerpc上的源码分析
    linux应用程序如何从用户空间进入内核空间?
    执行docker ps时提示"dial unix /var/run/docker.sock: connect: permission denied"如何处理?
    ubuntu上安装远程桌面服务
    执行python安装命令时报错"ModuleNotFoundError: No module named 'setuptools'"如何处理?
    在arm下使用docker build创建容器镜像时磁盘空间不足如何处理?
    9、序列
    8、数据类型
    7、运算符与表达式
  • 原文地址:https://www.cnblogs.com/apes-monkeys/p/5105269.html
Copyright © 2011-2022 走看看