//1、配置微信公众平台URL
//配置微信平台URL
public function weixinURL(){
//将timestamp,nonce,token按字典排序
$timestamp =$_GET['timestamp'];
$nonce =$_GET['nonce'];
$echostr =$_GET['echostr'];
$token ='weixin';
$signature =$_GET['signature'];
$array =array($timestamp,$nonce,$token);
sort($array);
//将排序后的三个参数拼接之后用sha1加密
$tmpstr=sha1(implode($array));
//将加密后的字符串与signature进行对比,判断该请求是否来自微信
if($tmpstr==$signature && $echostr){
echo $echostr;
exit();
}
else{
$this->reponseMsg();
}
}
//关注时回复
public function reponseMsg(){
//查询微信推送消息内容
$rootM=D('wechatconfig');
$where['id']=1;
$res=$rootM->where($where)->find();
//1.获取微信推送过来的post数据(xml格式)
$postArr=file_get_contents("php://input");
//2.处理消息类型,并设置回复类型和内容
$postObj=simplexml_load_string($postArr);
//判断该数据包是否是订阅的事件推送
//关注时回复
if(strtolower($postObj->MsgType=='event')){
//如果是关注subscribe事件
if(strtolower($postObj->Event=='subscribe')){
//回复用户消息
$toUser=$postObj->FromUserName;
$fromUser=$postObj->ToUserName;
$time=time();
$msgType='text';
$answerM=D('answer');
$whereM['id']=1;
$resultM=$answerM->where($whereM)->find();
$content=array(
array(
'title'=>$resultM['answer_name'],
'description'=>$resultM['answer_charact'],
'picUrl'=>$res['domain_name'].'/'.$resultM['answer_img'],
'url'=>$resultM['answer_url'],
),
);
$template="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>";
foreach ($content as $k=>$v) {
$template.="<item>
<Title><![CDATA[".$v['title']."]]></Title>
<Description><![CDATA[".$v['description']."]]></Description>
<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
<Url><![CDATA[".$v['url']."]]></Url>
</item>";
}
$template.="</Articles>
</xml>";
echo sprintf($template,$toUser,$fromUser,$time,'news');
}
}
//点击回复图文
if(strtolower($postObj->Event)=='click'){
if($postObj->EventKey==$postObj->EventKey){
$titleaa=$postObj->EventKey;
$whereaa['t_explain']=strtolower($titleaa);
$imgtextM=D('imgtext');
$result=$imgtextM->where($whereaa)->find();
$fromUser=$postObj->ToUserName;
$toUser=$postObj->FromUserName;
$time=time();
if($result['t_explain']==$postObj->EventKey){
if($result['t_url']==""){
$arr=array(
array(
'title'=>$result['t_title'],
'description'=>$result['t_synopsis'],
'picUrl'=>$res['domain_name'].'/'.$result['t_img'],
'url'=>$res['domain_name'].'/index.php/index/imgtext/id/'.$result['id'],
),
);
}else{
$arr=array(
array(
'title'=>$result['t_title'],
'description'=>$result['t_synopsis'],
'picUrl'=>$res['domain_name'].'/'.$result['t_img'],
'url'=>$result['t_url'],
),
);
}
$template="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>";
foreach ($arr as $k=>$v) {
$template.="<item>
<Title><![CDATA[".$v['title']."]]></Title>
<Description><![CDATA[".$v['description']."]]></Description>
<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
<Url><![CDATA[".$v['url']."]]></Url>
</item>";
}
$template.="</Articles>
</xml>";
echo sprintf($template,$toUser,$fromUser,$time,'news');
}else{
$toUser=$postObj->FromUserName;
$fromUser=$postObj->ToUserName;
$time=time();
$msgType='text';
$content='没有设置回复';
$template="
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>
";
$info=sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
echo $info;
}
}
}
}