[导读] 一、简介微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。二、思路分
一、简介
微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。
二、思路分析
用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。
关键代码如下:
view sourceprint?
1.
if($keyword=="你好"){
2.
$contentStr= "hello";
3.
}elseif($keyword=="苏州"){
4.
$contentStr= "上有天堂,下有苏杭";
5.
}else{
6.
$contentStr= "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
7.
}
如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。
三、完整代码
view sourceprint?
001.
一、简介
002.
003.
微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。
004.
005.
二、思路分析
006.
007.
用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。
008.
009.
关键代码如下:
010.
011.
012.
if($keyword=="你好"){
013.
$contentStr= "hello";
014.
}elseif($keyword=="苏州"){
015.
$contentStr= "上有天堂,下有苏杭";
016.
}else{
017.
$contentStr= "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
018.
}
019.
020.
如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。
021.
022.
三、完整代码
023.
024.
025.
<!--?php
026.
/**
027.
* wechat php test
028.
*/
029.
030.
//define your token
031.
define("TOKEN","zhuojin");
032.
$wechatObj = new wechatCallbackapiTest();
033.
$wechatObj--->responseMsg();
034.
//$wechatObj->valid();
035.
036.
class wechatCallbackapiTest
037.
{
038.
/*public function valid()
039.
{
040.
$echoStr = $_GET["echostr"];
041.
042.
//valid signature , option
043.
if($this->checkSignature()){
044.
echo $echoStr;
045.
exit;
046.
}
047.
}*/
048.
049.
public function responseMsg()
050.
{
051.
//get post data, May be due to thedifferent environments
052.
$postStr =$GLOBALS["HTTP_RAW_POST_DATA"];
053.
054.
//extract post data
055.
if (!emptyempty($postStr)){
056.
057.
$postObj = simplexml_load_string($postStr,'www.sm136.com', LIBXML_NOCDATA);
058.
$RX_TYPE = trim($postObj->MsgType);
059.
060.
switch($RX_TYPE)
061.
{
062.
case "text":
063.
$resultStr =$this->handleText($postObj);
064.
break;
065.
case "event":
066.
$resultStr =$this->handleEvent($postObj);
067.
break;
068.
default:
069.
$resultStr = "Unknow msg type:".$RX_TYPE;
070.
break;
071.
}
072.
echo $resultStr;
073.
}else {
074.
echo "";
075.
exit;
076.
}
077.
}
078.
079.
public function handleText($postObj)
080.
{
081.
$fromUsername = $postObj->FromUserName;
082.
$toUsername = $postObj->ToUserName;
083.
$keyword = trim($postObj->Content);
084.
$time = time();
085.
$textTpl = "<xml>
086.
<tousername><!--[CDATA[%s]]--></tousername>
087.
<fromusername><!--[CDATA[%s]]--></fromusername>
088.
<createtime>%s</createtime>
089.
<msgtype><!--[CDATA[%s]]--></msgtype>
090.
<content><!--[CDATA[%s]]--></content>
091.
<funcflag>0</funcflag>
092.
</xml>";
093.
if(!emptyempty( $keyword ))
094.
{
095.
$msgType = "text";
096.
097.
if($keyword=="你好"){
098.
$contentStr = "hello";
099.
}elseif($keyword=="苏州"){
100.
$contentStr = "上有天堂,下有苏杭";
101.
}else{
102.
$contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
103.
}
104.
$resultStr = sprintf($textTpl,$fromUsername, $toUsername, $time, $msgType, $contentStr);
105.
echo $resultStr;
106.
}else{
107.
echo "Input something...";
108.
}
109.
}
110.
111.
public function handleEvent($object)
112.
{
113.
$contentStr = "";
114.
switch ($object->Event)
115.
{
116.
case "subscribe":
117.
$contentStr = "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待...";
118.
break;
119.
default :
120.
$contentStr = "Unknow Event:".$object->Event;
121.
break;
122.
}
123.
$resultStr =$this->responseText($object, $contentStr);
124.
return $resultStr;
125.
}
126.
127.
public function responseText($object,$content, $flag=0)
128.
{
129.
$textTpl = "<xml>
130.
<tousername><!--[CDATA[%s]]--></tousername>
131.
<fromusername><!--[CDATA[%s]]--></fromusername>
132.
<createtime>%s</createtime>
133.
<msgtype><!--[CDATA[text]]--></msgtype>
134.
<content><!--[CDATA[%s]]--></content>
135.
<funcflag>%d</funcflag>
136.
</xml>";
137.
$resultStr = sprintf($textTpl,$object->FromUserName, $object->ToUserName, time(), $content, $flag);
138.
return $resultStr;
139.
}
140.
141.
142.
private function checkSignature()
143.
{
144.
$signature = $_GET["signature"];
145.
$timestamp = $_GET["timestamp"];
146.
$nonce = $_GET["nonce"];
147.
148.
$token = TOKEN;
149.
$tmpArr = array($token, $timestamp,$nonce);
150.
sort($tmpArr);
151.
$tmpStr = implode( $tmpArr );
152.
$tmpStr = sha1( $tmpStr );
153.
154.
if( $tmpStr == $signature ){
155.
return true;
156.
}else{
157.
return false;
158.
}
159.
}
160.
}
161.
162.
?>
163.
164.
四、测试
165.
166.
167.
168.
五、关注
四、测试
\
联系客服