公众号回复消息代码实现
链接: http://pan.baidu.com/s/1eQFb5QU 密码: c57t
<?php //填入微信后台中使用的TOKEN define("TOKEN", ""); $wechatObj = new wechatCallbackapiTest(); if(!isset($_GET['echostr'])){ $wechatObj->responseMsg();
}else{
$wechatObj->valid();
}
//回调类
class wechatCallbackapiTest{
public $fromUsername='';
public $toUsername='';
public $time='';
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"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA );
$this->fromUsername = $postObj->FromUserName;
$this->toUsername = $postObj->ToUserName;
$type = $postObj->MsgType;
$event=$postObj->Event;
$Event_Key=$postObj->EventKey;
$this->mid=$postObj->MediaId;
$link=$postObj->Url;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
$this->keyword = trim($postObj->Content);
$this->time = time();
$this->find_type($type);
}
//判断用户发送的消息类型调用不同方法进行回复
public function find_type($type){
switch($type){
case 'text':
$result=$this->fetch_text($this->keyword);
break;
case 'image':
$result=$this->fetch_image($this->mid);
break;
case 'voice':
$result=$this->fetch_voice($this->mid);
break;
case 'video':
$result=$this->fetch_video($this->mid);
break;
default:
$result=$this->fetch_default_text($this->keyword);
break;
}
echo $result;
}
//判断用户发送的文本内容
public function fetch_text($keyword){
switch ($keyword) {
case '图片':
$res=$this->fetch_image();
break;
case '语音':
$res=$this->fetch_voice();
break;
case '视频':
$res=$this->fetch_video();
break;
case '音乐':
$res=$this->fetch_music();
break;
case '单图文':
$res=$this->fetch_sigle_news();
break;
case '多图文':
$res=$this->fetch_muti_news();
break;
default:
$res=$this->fetch_default_text($keyword);
break;
}
return $res;
}
//回复文本消息
public function fetch_default_text($keyword){
if($keyword=''){
echo "";
}else{
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$contentStr="您发送的是文本消息,消息内容是:".$keyword;
$resultStr = sprintf($textTpl, $this->fromUsername, $this->toUsername, $this->time, $contentStr);
return $resultStr;
}
}
//回复图片消息
public function fetch_image($mid='O1roH6Z6lAglbpNycSRiSGAIX-0M5hPwrNMn24n6QHsTWBCI1s_smv3cHhrxN32X'){
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[%s]]></MediaId>
</Image>
</xml>";
$resultStr=sprintf($textTpl,$this->fromUsername,$this->toUsername,$this->time,$mid);
return $resultStr;
}
//回复语音消息
public function fetch_voice($mid='q8GlXn_aIrRRQS2_3THhScuWhM-ZGR1e512eiyX7I_kAiJoRRtbTJvhQg9LWeuSR'){
$textTpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<Voice>
<MediaId><![CDATA[%s]]></MediaId>
</Voice>
</xml>';
$resultStr=sprintf($textTpl,$this->fromUsername,$this->toUsername,$this->time,$mid);
return $resultStr;
}
//回复视频消息
public function fetch_video($mid='OZ4dnt_nujz5_zRqlwYHUo_aF4zTqn8ub7X-dN5lXmOT0jmhPV2zjld5qc50ueOC'){
$textTpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA . ]></MsgType>
<Video>
<MediaId><![CDATA[%s]]></MediaId>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
</Video>
</xml>';
$title="随手拍的小视频";
$desc="随手拍书桌小视频,只有几秒钟,用来测试。视频文件不宜太大,微信上传视频有大小限制";
$resultStr=sprintf($textTpl,$this->fromUsername,$this->toUsername,$this->time,$mid,$title,$desc);
return $resultStr;
}
//回复音乐消息
public function fetch_music(){
$textTpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[梦中的婚礼]]></Title>
<Description><![CDATA[理查德.克里德曼,非常美妙的旋律,钢琴的至美境界]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
<ThumbMediaId><![CDATA[%s]]></ThumbMediaId>
</Music>
</xml>';
$music_url="http://alanhou.org/a.mp3";
$hq_url="http://alanhou.org/a.mp3";
$mid="mYBU_kavD71rqGKg34YV47YNNcHz88C47cL9vN5QkDXdI8L_zIyWsXNPmfwICLWE";
$resultStr=sprintf($textTpl,$this->fromUsername,$this->toUsername,$this->time,$music_url,$hq_url,$mid);
return $resultStr;
}
//回复单图文消息;
public function fetch_sigle_news(){
$textTpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
</Articles>
</xml> ';
$title="Test个人理财中心";
$desc="提供保险,投资,理财咨询服务。你身边的投资理财专家。";
$picurl="http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png";
$url="http://alanhou.org/";
$resultStr=sprintf($textTpl,$this->fromUsername,$this->toUsername,$this->time,$title,$desc,$picurl,$url);
return $resultStr;
}
//回复多图文消息
public function fetch_muti_news(){
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>5</ArticleCount>
<Articles>
<item>
<Title><![CDATA[欢迎您!点击进入Alan Hou的首页]]></Title>
<Description><![CDATA[描述]]></Description>
<PicUrl><![CDATA[http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png]]></PicUrl>
<Url><![CDATA[http://alanhou.org]]></Url>
</item>
<item>
<Title><![CDATA[个人介绍]]></Title>
<Description><![CDATA[个人介绍]]></Description>
<PicUrl><![CDATA[http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png]]></PicUrl>
<Url><![CDATA[http://alanhou.org/]]></Url>
</item>
<item>
<Title><![CDATA[诚聘英才]]></Title>
<Description><![CDATA[招聘]]></Description>
<PicUrl><![CDATA[http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png]]></PicUrl>
<Url><![CDATA[http://alanhou.org/]]></Url>
</item>
<item>
<Title><![CDATA[微图文]]></Title>
<Description><![CDATA[图文]]></Description>
<PicUrl><![CDATA[http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png]]></PicUrl>
<Url><![CDATA[http://alanhou.org/]]></Url>
</item>
<item>
<Title><![CDATA[联系我]]></Title>
<Description><![CDATA[联系我]]></Description>
<PicUrl><![CDATA[http://alanhou.org/wp-content/uploads/2015/09/wechat-development-notes.png]]></PicUrl>
<Url><![CDATA[http://alanhou.org/]]></Url>
</item>
</Articles>
</xml>";
$resultStr = sprintf($textTpl, $this->fromUsername, $this->toUsername,time());
return $resultStr;
}
}
?>


