微信自定义菜单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)
共有0 条评论 发言请遵守【相关规定

网友评论

会员头像
发 表同步腾讯微博    验证码:  点击更新请先登陆
  • 暂无评论
关闭模块文章图片 article Pictrue
  • 我的妈妈爸爸
  • 基于koa2+mysql+vue2.0+Element阳光内容管理系统
  • 代码覆盖率工具 Istanbul 入门教程
  • 全栈工程师的武器——MEAN
  • 9款超炫的 CSS3 复选框(Checkbox)
  • 微信开发在线翻译功能
  • CSS3那些不为人知的高级属性
  • 给easyui的datebox添加清空事件
  • flash写字效果
  • kendoUI系列教程之DropDownList下拉菜单
  • kendoUI系列教程之datetimepicker日期时间选择
  • kendoUI系列教程之datepicker日期选择
  • kendoUI系列教程之combobox下拉列表框
  • kendoUI系列教程之colorpicker
  • kendoUI系列教程之calendar日历表
  • kendoUI系列教程之autocomplete自动补齐