武大微淘微信版开发(20140117更新)

🕓 · ☕3 min read

武大微淘是我最近一直在做的项目,关于这个项目是干嘛的,下学期会详细介绍。放假这几天以来,我把全部心思都花在这个项目的开发上,目前已经做好了网页版的大部门功能及主要界面的美工,APP也已经做好,现在要做的就是尽快把微信版也做好,然后就可以安心回家过年了(还有四天)。关注互联网的人应该知道,未来几年,微信作为一个超级APP,将会在很大程度上改变我们的生活,而2013年很火的O2O模式也会在未来的日子里广泛流行。所以微信开发是一个热衷于IT行业的码农不可或缺的一项技能,也是想搞互联网创业的人不可忽视的一个领域。 闲话不多说,上一段今天写的代码,主要实现了用户关注回复图文消息、查询网站数据库返回店铺信息到微信、关键词回复等功能。采用昨天刚学的thinkphp框架开发,比起一个月前写的面向过程查询数据库,在代码结构方面要简洁很多。大部分功能有待完善…

扫描关注该微信号

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
//实例化微信控制器类
$weixinObj = new WeixinAction();
//调用微信回复方法
$weixinObj->responseMsg();
//定义微信控制器类
class WeixinAction extends Action
{
	//定义微信回复主函数
    public function responseMsg()
    {
		//获取微信发送数据
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      	//返回微信回复数据
		if (!empty($postStr)){
                //解析数据
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
				//发送消息方ID
                $fromUsername = $postObj->FromUserName;
				//接收消息方ID
                $toUsername = $postObj->ToUserName;
				//获取用户发送消息
                $keyword = trim($postObj->Content);
				//截取用户发送消息前两个汉字,GBsubstr为自定义字符串截取函数
				$keyword1=$this->GBsubstr($keyword,0,6);
				//截取用户发送消息除前两个汉字外的剩余汉字
				$keyword2=$this->GBsubstr($keyword,6);
				//用户发送消息的时间
                $time = time();
				//消息类型
				$form_MsgType=$postObj->MsgType;
				//文本消息回复模板
				$textTpl = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[%s]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							<FuncFlag>0</FuncFlag>
							</xml>"; 
				//事件消息
				if($form_MsgType=="event"){
					$form_Event=$postObj->Event;
					//用户订阅事件
					if($form_Event=="subscribe"){
						//回复欢迎消息
						$this->responseWelcome($fromUsername,$toUsername,$time);
					}
				}
				//文本消息
				if($form_MsgType=="text"){
					//用户发送消息为“help”或者“帮助”时
					if($keyword=="help" || $keyword=="帮助"){
						//回复文本消息,测试中,待完善
                		$this->responseText($fromUsername,$toUsername,$keyword,$time,$textTpl);
					}
					//用户发送消息前两个汉字为“逛逛时”
					if($keyword1=="逛逛"){
						//回复文本消息,测试中,待完善
                		$this->responseText($fromUsername,$toUsername,$keyword2,$time,$textTpl);
					}
					//默认回复消息
					$this->responseWelcome($fromUsername,$toUsername,$time);
				}

        }else {
        	echo "";
        	exit;
        }
    }
	//自定义函数,回复欢迎消息
	public function responseWelcome($fromUsername,$toUsername,$time){
			  $resultStr="<xml>\n
              <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>\n
              <FromUserName><![CDATA[".$toUsername."]]></FromUserName>\n
              <CreateTime>".$time."</CreateTime>\n
              <MsgType><![CDATA[news]]></MsgType>\n
              <ArticleCount>5</ArticleCount>\n
              <Articles>\n";

              //添加封面图文消息
              $resultStr.="<item>\n
              <Title><![CDATA[武大微淘——让O2O成为一种流行]]></Title> \n
              <Description><![CDATA[]]></Description>\n
              <PicUrl><![CDATA[http://weitao.bestwhu.com/webcss/default/images/logo.png]]></PicUrl>\n
              <Url><![CDATA[http://weitao.bestwhu.com/]]></Url>\n
              </item>\n";
			  //查询店铺信息
			  $Data = M('meal_shop');
			  $data1 = $Data->select();
              foreach($data1 as $item){
              //回复四个店铺信息
              $resultStr.="<item>\n
              <Title><![CDATA[【".$item[shop_name]."】\n店铺地址:".$item[shop_address]."\n订购电话:".$item[shop_tel]."\n点击进入网站购买]]></Title> \n
              <Description><![CDATA[]]></Description>\n
              <PicUrl><![CDATA[http://weitao.bestwhu.com/".$item[shop_pic]."]]></PicUrl>\n
              <Url><![CDATA[http://weitao.bestwhu.com/?app_act=shop&id=$item[shop_id]]]></Url>\n
              </item>\n";
			  }

              $resultStr.="</Articles>\n
              <FuncFlag>0</FuncFlag>\n
              </xml>";

              echo $resultStr;
              exit;
	}
	//自定义函数,回复文字消息
	public function responseText($fromUsername,$toUsername,$keyword,$time,$textTpl){
				if(!empty( $keyword ))
                {
              		$msgType = "text";
					$contentStr = $keyword;
					$Data = M('meal_shop'); 
        			$data1 = $Data->select();
					foreach($data1 as $item){
					$contentStr.=$item['shop_name']."
";
					}

                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                	echo $resultStr;
                }else{
                	echo "Input something...";
                }
	}
	//自定义函数,截取字符串(gbk编码下,一个汉字占两个字符;utf8编码下,一个汉字占三个字符。为避免乱码,自定义该函数截取字符串)
	public function GBsubstr($string, $start, $length) {  
				if(empty($length)){
					$length=strlen($string)-$start;
				}
				if(strlen($string)>$length){  
					$str=null;  
					$len=$start+$length;  
					for($i=$start;$i<$len;$i++){  
						if(ord(substr($string,$i,1))>0xa0){  
							$str.=substr($string,$i,2);  
							$i++;  
						}else{  
							$str.=substr($string,$i,1);  
						}  
					}  
					return $str;  
				}else{  
					return $string;  
				}  
	}  

}

?>