微信开发教程:[5]音乐消息的回复
1、接口文件(wx_sample)全部代码如下:
<?php
include_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;}
?>
![微信开发教程:[5]音乐消息的回复](https://exp-picture.cdn.bcebos.com/def72c6c576699cffa0891d0a885e036e3915ef3.jpg)
2、封装数据格式的文件全部代码如下:
<?php
$textTpl = "<xml>(文字消息格式)
<ToUserName><![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>";
?>
![微信开发教程:[5]音乐消息的回复](https://exp-picture.cdn.bcebos.com/d695563104ebf6a756533c98ffee1c324a184ff3.jpg)
3、实现效果。将上面两个文件放置到空间就可以实现效果(前提是接口已经配置好):当用户订阅公众号的时候,收到一首歌曲,如图:
![微信开发教程:[5]音乐消息的回复](https://exp-picture.cdn.bcebos.com/27725684cde34b2c43b2c5cc0d0e7c75e4f443f3.jpg)
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]音乐消息的回复](https://exp-picture.cdn.bcebos.com/3b8fb4d7726b0ce245bb8abcef781423bfb9b6f3.jpg)
5、代码讲解2:
$msgType = "music";
规定回复的消息时音乐。
![微信开发教程:[5]音乐消息的回复](https://exp-picture.cdn.bcebos.com/65390a23beb9763e079e05656ad06de89b61b0f3.jpg)
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链接必须有
![微信开发教程:[5]音乐消息的回复](https://exp-picture.cdn.bcebos.com/6ca9846186254193e3b40eb7df1bd10ff326abf3.jpg)