TA的每日心情 | 奋斗 2019-3-14 22:24 |
---|
签到天数: 160 天 [LV.7]常住居民III
管理员
  
- 积分
- 18046
|
当自定义菜单中有click类型的菜单,用户单击此菜单的时候,微信公众平台服务器会接收时间状态并转发给开发者的第三方服务器,请求的格式为如下XML:
- <xml>
- <ToUserName><![CDATA[toUser]]></ToUserName>
- <FromUserName><![CDATA[FromUser]]></FromUserName>
- <CreateTime>123456789</CreateTime>
- <MsgType><![CDATA[event]]></MsgType>
- <Event><![CDATA[CLICK]]></Event>
- <EventKey><![CDATA[EVENTKEY]]></EventKey>
- </xml>
复制代码 参数说明见图
第三方服务器在收到消息中的Event和EventKey字段值后,就可以进行相应的判断和业务逻辑实现。
当用户点击“资讯”和“音乐”菜单按钮后,微信平台平台回复的不同消息类型的效果如图所示。
因为要处理微信公众平台推送过来的XML消息,所以这里就用到了消息处理类WxBase。在IndexController.class.php类中的configToken()方法中实现Token的验证和WxBase处理类的集成。首先定义创建自定义菜单方法myMenu(),菜单事件类型都为click,事件唯一标识key分别为“news”和“music”,代码如下:
- // 创建/查看/删除 菜单
- public function myMenu()
- {
- $data = '{
- "button":[
- {
- "type":"click",
- "name":"资讯",
- "key":"news"
- },
- {
- "type":"click",
- "name":"音乐",
- "key":"music"
- }
- ]}';
- import('@Lib.Wx.WxMenu');
- $wx = new \WxMenu(APP_ID,APP_SECRET);
- dump($wx->createMenu($data));
- }
复制代码菜单创建成功后,接收消息推送和逻辑处理的实现代码在configToken()方法中定义:
- // CLICK事件处理
- if($this->data['MsgType'] == 'event' && $this->data['Event'] == 'CLICK')
- {
- if($this->data['EventKey'] == 'news')
- {
- // 单个图文信息
- $wx->replyNewsOnce(
- '测试文章标题',
- '测试文章内容',
- 'http://www.baidu.com',
- 'http://api.38pay.com/wxmsg/Muisc/logo.jpeg'
- );
- }
- if($this->data['EventKey'] == 'music')
- {
- $wx->replyMusic(
- 'yongforyou音乐', //标题
- 'yongforyou描述', //描述
- 'http://api.38pay.com/wxmsg/Muisc/YoungForYouMP3.mp3', //普通音质音乐文件
- 'http://api.38pay.com/wxmsg/Muisc/YoungForYouMP3.mp3', //高品质音乐文件
- 'VJNC9Q2aF0c4BybGRpEFprHm6JEnBR2b_u0BXuVLcwnSBzGSSxWoX6aT02VDU1bT'
- );
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|