很久没写微信公众号的文章了,而且因为是自己是订阅号,所以研究也告一段落了,但还是把自己仅有的一些功能的完整代码共享出来。希望大家一起进步:
<?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->weixin_run(); class wechatCallbackapiTest { private $fromUsername; private $toUsername; private $times; private $keyword; private $MsgType; public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)) { $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $this->fromUsername = $postObj->FromUserName; $this->toUsername = $postObj->ToUserName; $this->keyword = trim($postObj->Content); $this->time = time(); $this->MsgType = $postObj->MsgType; } else { echo "Pay attention to <a href='http://{$_SERVER['HTTP_HOST']}'>http://{$_SERVER['HTTP_HOST']}</a>,thanks!"; exit; } } public function weixin_run() { $this->responseMsg(); if($this->MsgType != 'event') { //attention $data = $this->getData(); $this->fun_xml("news", $data, count($data)); } else { $data = $this->getWelData(); $this->fun_xml("text", $data, 1); } } //type: text 文本类型, news 图文类型 //text,array(内容),array(ID) //news,array(array(标题,介绍,图片,超链接),...小于10条),条数 private function fun_xml($type, $value_arr, $count) { $con="<xml> <ToUserName><![CDATA[{$this->fromUsername}]]></ToUserName> <FromUserName><![CDATA[{$this->toUsername}]]></FromUserName> <CreateTime>{$this->times}</CreateTime> <MsgType><![CDATA[{$type}]]></MsgType>"; switch($type) { case "text" : $con.="<Content><![CDATA[$value_arr]]></Content>"; break; case "news" : $con.="<ArticleCount>{$count}</ArticleCount> <Articles>"; foreach($value_arr as $key => $v) { $con.="<item> <Title><![CDATA[{$v[0]}]]></Title> <Description><![CDATA[{$v[1]}]]></Description> <PicUrl><![CDATA[{$v[2]}]]></PicUrl> <Url><![CDATA[{$v[3]}]]></Url> </item>"; } $con.="</Articles>"; break; } echo $con."</xml>"; } private function getData() { //数据库通过关键字查询文章 //。。。。。。。。。。。。 //。。。。。。。。。。。。 //返回文章结果的数组 return $data; } private function getWelData() { $data = "感谢您关注AndyYang个人博客微信小助手。/r/n". "回复【1】返回两篇最新文章/r/n". "回复【2】返回两篇人气文章/r/n". "回复【3】返回两篇热评文章/r/n". "回复【4】返回两篇最新技术文章/r/n". "回复【5】返回两篇最新写作文章/r/n". "回复其他返回搜索关键字的两篇文章/r/n". "更多精彩内容,尽在:<a href='http://www.webyang.net/mobile.php'>www.webyang.net</a>。亲们,请多多支持哦,谢谢~"; ; return $data; } }
老实说很想弄个服务号玩玩,自定义菜单是没什么技术含量的,但是后面的微信支付之类,服务号仅有的服务,还是挺值得去尝试下的。。。
也希望大家支持微信号:webyangnet
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98465.html