1、接口文件(wx_sample)全部代码如下:争犸禀淫<?phpinclude_once("wx_tpl.php");//装载数据格式模板文件$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//获取微信发送数据 //返回回复数据if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//解析数据 $fromUsername = $postObj->FromUserName;//发送消息方Id $toUsername = $postObj->ToUserName;//接收消息方ID $form_MsgType = $postObj->MsgType;//消息类型 //事件消息 if($form_MsgType=="event"){ $form_Event = $postObj->Event;//获取事件类型 //订阅事件 if($form_Event=="subscribe") { $msgType = "music"; $resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType, "歌名", "歌手","http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.aac", "http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.mp3"); echo $resultStr; exit;} } } else { echo ""; exit;}?>
2、封装数据格式的文件全部代码如下:<?php$textTpl = "<xml>(文字消息格式) <ToUserName&爿讥旌护gt;<![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; $newsTpl = "<xml>(图文消息) <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>%s</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> <FuncFlag>1</FuncFlag> </xml> ";$musicTpl = "<xml>(音乐消息) <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music> <FuncFlag>0</FuncFlag> </xml>";?>
3、实现效果。将上面两个文件放置到空间就可以实现效果(前提是接口已经配置好):当用户订阅公众号的时候,收到一首歌曲,如图:
4、代码讲解1:if($form_Event=="subscribe") { $msgType = "music"; $resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType, "歌名", "歌手","http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.aac", "http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.mp3"); echo $resultStr; exit;} 这部分代码是先判断是否为订阅事件,是的话则回复一首音乐
5、代码讲解2:$msgType = "music";规定回复的消息时音乐。
6、代码讲解3:$resultStr = sprintf($musicTpl, $fromUsername, $toUsername, $time, $msgType, "歌名", "歌手","http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.aac", "http://weixincourse-weixincourse.stor.sinaapp.com/mysongs.mp3");规定歌名、歌手、以及歌曲的来源。在用户网络条件好的时候回复aac格式优质音乐,当然这个链接是可选的,但是MP3链接必须有