微信公众平台开发--订阅、文本、单图文回复

<?php
class Index{
public function index(){
//获得参数 signature nonce token timestamp echostr
$nonce=$_GET["nonce"];
$token="ceshi";//在微信公众平台设置
$timestamp=$_GET["timestamp"];
$echostr=$_GET["echostr"];
$signature=$_GET["signature"];
//形成数组,然后按字典序排序
$array=array();
$array=array($nonce,$token,$timestamp);
sort($array);
//拼接成字符串,sha1加密 ,然后与signature进行校验
$str=sha1(implode($array));//加密
if($str==$signature&&$echostr)
{
//第一次接入weixin api接口的时候
echo $echostr;
exit;
}else{
$this->responseMsg();
}
}

// 接收事件推送并回复
public function responseMsg(){
//1.获取到微信推送过来post数据(xml格式)
$postArr=$GLOBALS['HTTP_RAW_POST_DATA'];
//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";
//$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,"欢迎".$toUser."关注蓝飞公众账号");
echo $info;
}
}

//判断该数据包是否是文本的事件推送
/*if(strtolower($postObj->MsgType)=="text")
{
$tempalte="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$fromUser=$postObj->ToUserName;
$toUser=$postObj->FromUserName;
$time=time();
$content="您发送的内容是:".$postObj->Content."如有疑问,请上<a href='http://www.baidu.com'>百度</a>查询";
$msgType="text";
echo sprintf($tempalte,$toUser,$fromUser,$time,$msgType,$content);
}*/

//发送"tuwen",回复一个单图文
if( strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='tuwen' ){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$arr = array(
array(
'title'=>'虾咪音乐吧',
'description'=>"ktv",
'picUrl'=>'http://www.huimeiktv.cn/View/Index/img/logo.png',
'url'=>'http://www.huimeiktv.cn',
),
array(
'title'=>'hao123',
'description'=>"hao123 is very cool",
'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
'url'=>'http://www.hao123.com',
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</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{
$tempalte="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$fromUser=$postObj->ToUserName;
$toUser=$postObj->FromUserName;
$time=time();
$content="您发送的内容是:".$postObj->Content."如有疑问,请上<a href='http://www.baidu.com'>百度</a>查询";
$msgType="text";
echo sprintf($tempalte,$toUser,$fromUser,$time,$msgType,$content);
}
}//responseMsg end
}//class end

$res=new Index();
$res->index();
?>

posted @ 2016-01-06 13:39  码动未来  阅读(205)  评论(0编辑  收藏  举报