文章分类 Classification
微信自定义菜单php参考脚本
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2014-04-12 阅读次数: 373 查看权限: 游客查看
虽然太晚了,还是上了脚本再睡吧。
如果不了解请先查看:腾讯微信开发初级教程
前言:编辑模式下的菜单与开发模式下的菜单本是不相关的。但是编辑模式下转入开发模式下自定义菜单特别注意的是,需要停用编辑模式下的菜单,使其显示“当前菜单未发布”字样。否则在开发模式下创建菜单及删除菜单操作,也会让编辑模式下的菜单消失!
微信自定义菜单php参考脚本:
<?php header('Content-Type: text/html; charset=UTF-8'); /* author:太阳光 Q 群:166631605 */ class WeixinChat{ const APPID = 'wx547e54xxxxxdec3'; #换成自己的APPID const APPSECRET = 'fd0c59bc0174xxxxxxx70a557ea623c'; #换成自己的APPSECRET //获取access_token public function get_access_token(){ if (!isset($_COOKIE["access_token"])){ $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.self::APPID.'&secret='.self::APPSECRET; $json = $this->get_https($url); $result=json_decode($json,true); if(isset($result['access_token'])){ setcookie("access_token", $result['access_token'], time()+intval($result['expires_in'])-100); #写入cookie,并减少一点时间 }else{ die('error :'.$result['errmsg']); } } return $_COOKIE["access_token"]; } //自定义菜单 public function create_tree(){ $jsonmenu = '{ "button":[ { "name":"关于我们", "sub_button":[ { "type":"click", "name":"公司简介", "key":"公司简介" }, { "type":"view", "name":"网页链接", "url":"http://www.baidu.com/" } ] }, { "name":"产品中心", "sub_button":[ { "type":"click", "name":"产品分类", "key":"company" }, { "type":"click", "name":"趣味游戏", "key":"游戏" }, { "type":"view", "name":"网页链接", "url":"http://www.baidu.com/" } ] }, { "name":"新闻中心", "sub_button":[ { "type":"click", "name":"新闻分类", "key":"news" }, { "type":"click", "name":"国内新闻", "key":"国内新闻" }, { "type":"click", "name":"国际新闻", "key":"国内新闻" }, { "type":"view", "name":"网页链接", "url":"http://www.baidu.com/" } ] } ] }'; $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$this->get_access_token(); $result = $this->get_https($url, $jsonmenu); $result =json_decode($json,true); //var_dump($result); echo $result['errcode'] == 0 ? '菜单设置成功!' : '菜单设置失败 :'.$result['errmsg']; } //查询菜单 public function query_tree(){ $url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$this->get_access_token(); $result = $this->get_https($url); print_r($result); } //删除菜单 public function dell_tree(){ $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$this->get_access_token(); $result = $this->get_https($url); $result =json_decode($json,true); echo $result['errcode'] == 0 ? '成功删除菜单!' : '删除菜单失败 :'.$result['errmsg']; } //请求https数据 file_get_contents 无权读取https public function get_https($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; } } ?> <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8" /> <title>微信公众平台开发测试文档</title> <style> button{font-size:14px;margin:10px;text-decoration : none} </style> </head> <body> <h1>微信公众平台开发测试文档</h1> <?php $action = isset($_GET['action']) ? $_GET['action'] : ''; if(!empty($action)){ $weixin = new WeixinChat(); $action == "create_tree" && $weixin -> create_tree(); $action == "query_tree" && $weixin -> query_tree(); $action == "dell_tree" && $weixin -> dell_tree(); } $_COOKIE["nonce"]; ?> <button type="button" onclick="location.href='?action=create_tree'">生成菜单</button> <button type="button" onclick="location.href='?action=query_tree'">查询菜单</button> <button type="button" onclick="if(confirm('确定删除菜单?'))location.href='?action=dell_tree'">删除菜单</button> </body> </html>
说明:自定义菜单最多三个一级菜单,每个二级菜单里至多5个。菜单点击类型分两种click和view。
click:
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
view:
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
菜单刚刚修改可能看不到效果,那么你可以清除一下微信的内容。方法是点公众号右上角小头像、然后再点三个小点弹出下拉菜单"清空内容”。仍不行就用手机管理软件清除缓存再登陆微信。再不行就重新关注一下服务号。仍然不行就用手机砸老马的头
======================================附加题==================================
怎么样设置click菜单及获取事件?
设置click菜单格式:
{ "type":"click", "name":"菜单事件", "key":"scscms" },
捕捉事件方法:
}else if($postObj->Event == 'CLICK'){ $EventKey = $postObj->EventKey; if($EventKey=='scscms'){ $Content = '你点了【菜单事件】菜单'; } }
关键词: 腾讯微信,微信开发 编辑时间: 2014-04-25 17:38:53
0
高兴0
支持0
搞笑0
不解0
谎言0
枪稿0
震惊0
无奈0
无聊0
反对0
愤怒
0%(0)
0%(0)
- 中搜索:微信自定义菜单php参考脚本
- 中搜索:微信自定义菜单php参考脚本
- 暂无评论
文章图片 article Pictrue
网友评论