非常久没写微信公众号的文章了,并且由于是自己是订阅号,所以研究也告一段落了,但还是把自己仅有的一些功能的完整代码共享出来。希望大家一起进步:
- <?
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