1. 首先登陆微信公众号开启开发者模式,配置基本信息
2. 验证token
public function validToken()
{
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
$token = 'weixin';//要和上面配置的token令牌一样
$signature = $_GET['signature'];
$echostr = $_GET['echostr'];
$array = array($timestamp,$nonce,$token);
sort($array);
$tmpstr = implode('',$array);
$tmpstr = sha1($tmpstr);
//如果是第一次访问验证token 否则是接受事件是否关注
if ($tmpstr == $signature && $echostr) {
echo $echostr;
exit;
} else {
$this->responseMsg();
}
}
3. 验证通过之后可以写几种消息回复方式
public function responseMsg()
{
//获取微信推送过来的数据(xml格式)
$postArr = $GLOBALS["HTTP_RAW_POST_DATA"];
$tmpstr = $postArr;
//处理消息,并设置回复类型
$postObj = simplexml_load_string($postArr);
//关注回复
if (strtolower($postObj->MsgType) =="event"{
//如果是关注事件
if(strtolower($postObj->Event) == "subscribe"){
//回复用户消息
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = "text";
$content = "欢迎关注我的公众号:\n 我的公众号"."\n\n微信用户的openid:\n".$postObj->FromUserName."\n\n如需关键字测试请输入:\n( 你好 || phone || composer )\n\n图文测试请输入:\n( 单图文 || 多图文 )";
$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;
}
}
//回复图文消息
if (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "单图文")){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$array = array(
array(
"title"=>"微博",
"description"=>"微博首页!",
"picUrl"=>"url地址",
"url"=>"http://weibo.com/",
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($array)."</ArticleCount>
<Articles>";
foreach ($array as $key => $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>";
$time = time();
echo sprintf( $template,$toUser,$fromUser,$time,"news");
}elseif (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "多图文")) {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$array = array(
array(
"title"=>"腾讯网",
"description"=>"腾讯首页!",
"picUrl"=>"图片url地址",
"url"=>"地址自己填写",
),
array(
"title"=>"easywechat文档",
"description"=>"微信文档!",
"picUrl"=>"图片url地址",
"url"=>"地址自己填写",
),
array(
"title"=>"laravel学院",
"description"=>"学院君!",
"picUrl"=>"图片url地址",
"url"=>"地址自己填写",
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($array)."</ArticleCount>
<Articles>";
foreach ($array as $key => $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>";
$time = time();
echo sprintf( $template,$toUser,$fromUser,$time,"news");
}else{
switch ($postObj->Content) {
case '你好':
$content = "hello 你好!";
break;
case 'phone':
$content = "我的手机号码:\n12339475";
break;
case 'php':
$content = "我是php";
break;
case 'composer':
$content = "<a href='链接地址";
break;
}
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = "text";
echo sprintf( $template,$toUser,$fromUser,$time,$msgType,$content);
}
}
微信文档地址:https://mp.weixin.qq.com/wiki
如果对你有帮助,记得点赞!