微信公众平台基础接口

来源:互联网 发布:php采集程序 编辑:程序博客网 时间:2024/04/28 19:37
<?php/*    方倍工作室     http://www.cnblogs.com/txw1958/    CopyRight 2014 All Rights Reserved*/define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();if (!isset($_GET['echostr'])) {    $wechatObj->responseMsg();}else{    $wechatObj->valid();}class wechatCallbackapiTest{    //验证消息    public function valid()    {        $echoStr = $_GET["echostr"];        if($this->checkSignature()){            echo $echoStr;            exit;        }    }    //检查签名    private function checkSignature()    {        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];        $token = TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        sort($tmpArr, SORT_STRING);        $tmpStr = implode($tmpArr);        $tmpStr = sha1($tmpStr);        if($tmpStr == $signature){            return true;        }else{            return false;        }    }    //响应消息    public function responseMsg()    {        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        if (!empty($postStr)){            $this->logger("R ".$postStr);            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);            $RX_TYPE = trim($postObj->MsgType);            switch ($RX_TYPE)            {                case "event":                    $result = $this->receiveEvent($postObj);                    break;                case "text":                    $result = $this->receiveText($postObj);                    break;                case "image":                    $result = $this->receiveImage($postObj);                    break;                case "location":                    $result = $this->receiveLocation($postObj);                    break;                case "voice":                    $result = $this->receiveVoice($postObj);                    break;                case "video":                    $result = $this->receiveVideo($postObj);                    break;                case "link":                    $result = $this->receiveLink($postObj);                    break;                default:                    $result = "unknown msg type: ".$RX_TYPE;                    break;            }            $this->logger("T ".$result);            echo $result;        }else {            echo "";            exit;        }    }    //接收事件消息    private function receiveEvent($object)    {        $content = "";        switch ($object->Event)        {            case "subscribe":                $content = "欢迎关注方倍工作室 ";                $content .= (!empty($object->EventKey))?("\n来自二维码场景 ".str_replace("qrscene_","",$object->EventKey)):"";                break;            case "unsubscribe":                $content = "取消关注";                break;            case "SCAN":                $content = "扫描场景 ".$object->EventKey;                break;            case "CLICK":                switch ($object->EventKey)                {                    case "COMPANY":                        $content = "方倍工作室提供互联网相关产品与服务。";                        break;                    default:                        $content = "点击菜单:".$object->EventKey;                        break;                }                break;            case "LOCATION":                $content = "上传位置:纬度 ".$object->Latitude.";经度 ".$object->Longitude;                break;            case "VIEW":                $content = "跳转链接 ".$object->EventKey;                break;            default:                $content = "receive a new event: ".$object->Event;                break;        }        $result = $this->transmitText($object, $content);        return $result;    }    //接收文本消息    private function receiveText($object)    {        switch ($object->Content)        {            case "文本":                $content = "这是个文本消息";                break;            case "图文":            case "单图文":                $content = array();                $content[] = array("Title"=>"单图文标题",  "Description"=>"单图文内容", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                break;            case "多图文":                $content = array();                $content[] = array("Title"=>"多图文1标题", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                $content[] = array("Title"=>"多图文2标题", "Description"=>"", "PicUrl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                $content[] = array("Title"=>"多图文3标题", "Description"=>"", "PicUrl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                break;            case "音乐":                $content = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3", "HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3");                break;            default:                $content = date("Y-m-d H:i:s",time())."\n技术支持 方倍工作室";                break;        }        if(is_array($content)){            if (isset($content[0]['PicUrl'])){                $result = $this->transmitNews($object, $content);            }else if (isset($content['MusicUrl'])){                $result = $this->transmitMusic($object, $content);            }        }else{            $result = $this->transmitText($object, $content);        }        return $result;    }    //接收图片消息    private function receiveImage($object)    {        $content = array("MediaId"=>$object->MediaId);        $result = $this->transmitImage($object, $content);        return $result;    }    //接收位置消息    private function receiveLocation($object)    {        $content = "你发送的是位置,纬度为:".$object->Location_X.";经度为:".$object->Location_Y.";缩放级别为:".$object->Scale.";位置为:".$object->Label;        $result = $this->transmitText($object, $content);        return $result;    }    //接收语音消息    private function receiveVoice($object)    {        if (isset($object->Recognition) && !empty($object->Recognition)){            $content = "你刚才说的是:".$object->Recognition;            $result = $this->transmitText($object, $content);        }else{            $content = array("MediaId"=>$object->MediaId);            $result = $this->transmitVoice($object, $content);        }        return $result;    }    //接收视频消息    private function receiveVideo($object)    {        $content = array("MediaId"=>$object->MediaId, "ThumbMediaId"=>$object->ThumbMediaId, "Title"=>"", "Description"=>"");        $result = $this->transmitVideo($object, $content);        return $result;    }    //接收链接消息    private function receiveLink($object)    {        $content = "你发送的是链接,标题为:".$object->Title.";内容为:".$object->Description.";链接地址为:".$object->Url;        $result = $this->transmitText($object, $content);        return $result;    }    //回复文本消息    private function transmitText($object, $content)    {        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>";        $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);        return $result;    }    //回复图片消息    private function transmitImage($object, $imageArray)    {        $itemTpl = "<Image>    <MediaId><![CDATA[%s]]></MediaId></Image>";        $item_str = sprintf($itemTpl, $imageArray['MediaId']);        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[image]]></MsgType>$item_str</xml>";        $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());        return $result;    }    //回复语音消息    private function transmitVoice($object, $voiceArray)    {        $itemTpl = "<Voice>    <MediaId><![CDATA[%s]]></MediaId></Voice>";        $item_str = sprintf($itemTpl, $voiceArray['MediaId']);        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[voice]]></MsgType>$item_str</xml>";        $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());        return $result;    }    //回复视频消息    private function transmitVideo($object, $videoArray)    {        $itemTpl = "<Video>    <MediaId><![CDATA[%s]]></MediaId>    <ThumbMediaId><![CDATA[%s]]></ThumbMediaId>    <Title><![CDATA[%s]]></Title>    <Description><![CDATA[%s]]></Description></Video>";        $item_str = sprintf($itemTpl, $videoArray['MediaId'], $videoArray['ThumbMediaId'], $videoArray['Title'], $videoArray['Description']);        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[video]]></MsgType>$item_str</xml>";        $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());        return $result;    }    //回复图文消息    private function transmitNews($object, $newsArray)    {        if(!is_array($newsArray)){            return;        }        $itemTpl = "    <item>        <Title><![CDATA[%s]]></Title>        <Description><![CDATA[%s]]></Description>        <PicUrl><![CDATA[%s]]></PicUrl>        <Url><![CDATA[%s]]></Url>    </item>";        $item_str = "";        foreach ($newsArray as $item){            $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);        }        $newsTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>%s</ArticleCount><Articles>$item_str</Articles></xml>";        $result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));        return $result;    }    //回复音乐消息    private function transmitMusic($object, $musicArray)    {        $itemTpl = "<Music>    <Title><![CDATA[%s]]></Title>    <Description><![CDATA[%s]]></Description>    <MusicUrl><![CDATA[%s]]></MusicUrl>    <HQMusicUrl><![CDATA[%s]]></HQMusicUrl></Music>";        $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);        $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[music]]></MsgType>$item_str</xml>";        $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time());        return $result;    }    //日志记录    private function logger($log_content)    {        if(isset($_SERVER['HTTP_APPNAME'])){   //SAE            sae_set_display_errors(false);            sae_debug($log_content);            sae_set_display_errors(true);        }else if($_SERVER['REMOTE_ADDR'] != "127.0.0.1"){ //LOCAL            $max_size = 10000;            $log_filename = "log.xml";            if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}            file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND);        }    }}?>
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子上幼儿园总生病怎么办 台湾人抗拒统大陆人中国人怎么办 如果一年的公休日耍不完怎么办 我一个月要歇三天班怎么办 学校没给报到证怎么办 员工休息一天老板拉着脸怎么办 换工作了报到证怎么办 幼儿园的孩子不写作业怎么办 幼儿园宝宝不写作业怎么办 幼儿园孩子不写作业怎么办 光盘数据面写字了怎么办 娃娃的手断了怎么办 联币金融跑路了怎么办 胃消化不了想吐怎么办 吃撑了恶心想吐怎么办 mac口红膏体晃动怎么办 excl图标和以前不一样了怎么办 冰箱显示板坏了怎么办 冰箱电脑显示屏坏了怎么办 冰箱的电子显示屏坏了怎么办 指导别人炒股亏损了怎么办 没有协议委托别人炒股亏损怎么办 炒股亏了很多钱崩溃了怎么办 帮人炒股亏了很多钱怎么办 破净买入继续跌怎么办 国画颜色上错了怎么办 宝宝5个月脸一直开裂怎么办 宝宝冻脸怎么办小妙招 3岁小儿长期便秘怎么办 脚裂了怎么办小妙招 宝宝脸风吹裂了怎么办 宝宝脸被风吹裂了怎么办 小宝贝的手有时候抖怎么办 打球把手戳肿了怎么办 阴茎上皮肤皴了怎么办 手皮肤干燥起皮怎么办 一到冬天手脚冰凉怎么办 脸上的皮肤被搓掉了怎么办 皮肤的表皮搓掉了怎么办 固体水彩经常掉出来怎么办 画水彩纸皱了怎么办