微信自定义菜单开发和生成器的使用方法

时间:2016-07-10 16:48:00

一般来说,如果你接入或授权了第三方系统,那么在对方系统都自带有自定义菜单生成功能。如果由于其他原因,导致自定义菜单失效或无法生成自定义菜单,可通过本工具自助生成,需要注意的是,第三方开发生成自定义菜单需要您的微信已经通过微信认证,否则只能在微信后台编辑自定义菜单。

微信自定义菜单开发和生成器的使用方法

微信自定义菜单生成器:http://user.tianapi.com/weixin/debug/menu/


使用在线生成自定义菜单功能,需要填入如下两个参数,用于提交菜单数据时校对权限。本系统不会保存这些参数,自定义菜单生成后,你可以重置应用密钥,不会导致失效,下次修改菜单,只需继续需要AppID和新的应用密匙即可。


AppID:应用ID,微信公众后台-基本配置-开发者ID-AppID

应用密钥:微信公众后台-基本配置-开发者ID-AppSecret


菜单结构如下, 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

{
    "button": [
        {
            "name": "点击事件",   //一级菜单
            "sub_button": [
                {
                    "type": "click",    //关键词触发类型
                    "name": "社会新闻",  //菜单显示的名称
                    "key": "社会新闻"    //菜单值,如后台事件配合
                },
                {
                    "type": "view",         //URL跳转类型
                    "name": "百度一下",         //菜单显示的名称
                    "url": "http://m.baidu.com/" //点击后跳转的地址
                },
				{
                    "type": "click",
                    "name": "关于我们",
                    "key": "帮助"
                }
            ]
        },
        {
            "name": "发图或拍照",  
            "sub_button": [
                {
                    "type": "pic_sysphoto",   //系统拍照类型
                    "name": "系统拍照发图",
                    "key": "rselfmenu_1_0"
                },
                {
                    "type": "pic_photo_or_album",
                    "name": "拍照或相册发图",
                    "key": "rselfmenu_1_1"
                },
                {
                    "type": "pic_weixin",   //选择相册类型
                    "name": "微信相册发图",
                    "key": "rselfmenu_1_2"
                }
            ]
        },
        {
			"name": "扫码或定位",
            "sub_button": [
			    {
                    "type": "scancode_waitmsg",  //扫描二维码类型
                    "name": "扫码带提示",
                    "key": "rselfmenu_0_0"
                },
                {
                    "type": "scancode_push",
                    "name": "扫码推事件",
                    "key": "rselfmenu_0_1"
                },
			    {
                    "name": "发送位置",
                    "type": "location_select",  //发送地址位置类型
                    "key": "rselfmenu_2_0"
                }
            ]
	]
}


开发自定义菜单提交菜单数据PHP代码:

<?php
/**
 * 天行微信API开发学习系统
 * @version 1.3
 * Modified at 2015/06/03 20:25
 */
header("Content-type:text/html;charset=utf-8");
session_start();

 if(isset($_POST['appid']) && isset($_POST['appsecret'])){ //判断参数是否为空	
$appid = $_POST['appid'];  //微信开发者中心你的appid
$secret = $_POST['appsecret'];  //微信开发者中心你的secret

$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";

if(!isset($_SESSION['access_token']) || empty($_SESSION['access_token']) || ($_SESSION['get_time']+$_SESSION['expires_time'])  < time()){
	//获取token和有效期

	$result = curl::https_request($url);
	$data  = json_decode($result,true);
	$_SESSION['expires_time'] = $data['expires_in']; 
	$_SESSION['get_time'] = time();
	$_SESSION['access_token'] = $data['access_token'];	
}

// 创建自定义菜单
    $uri = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$_SESSION['access_token']}";
//一级最多3个,二级最多5个,以下是举例,可自由编辑添加
    $menu_data = $_POST['customermenu'];   //form表单textarea输入框绑定的ID
	$menucot = curl::https_request($uri,$menu_data);  //发送菜单数据
	
 }  //参数为空则跳过
 

 /*  CURL发送请求      */
 
 class  curl{	
     public static function https_request($url, $data = null)
     {
           $ch = curl_init();	 // 创建一个新cURL资源
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HEADER, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

		if(!empty($data)){
			curl_setopt($ch, CURLOPT_POST, true);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $data);	// 传递post数据 
		}	

		$returnTransfer = curl_exec($ch);
		curl_close($ch);
		return $returnTransfer;	
     }
};
 
?>

1. 通过本工具,可以生成所有类型的微信公众号自定义菜单,也可用于排查问题。

2. 自定义菜单结构,所提交的是微信自定义菜单的原始JSON数据,请参照默认结构照葫芦画瓢增删改,每次提交后会覆盖前一次的菜单。

3. 点击生成菜单后,因为微信一般会缓存几个小时,建议先取消在重新关注,就可以立即看到效果。

4. 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

5. 自定义菜单结构,自定义菜单内容是保存在微信服务器上的。

6. 本系统不会缓存任何AppID、AppSecret数据,在您点击生成菜单时用于验证。

8. 任何您还是担心AppID数据会泄露,那么建议在您生成菜单后登录微信后台点击-基本配置-开发者ID-重置应用密匙即可。

9. 特别注意菜单结构中的菜单类型:

"type": "click",click表示点击触发事件类型。name为显示的菜单名称可随便填写,key是菜单触发对应的值,一般与后台相对应。

"type": "view",view表示链接类型,name同上,url是菜单点击后跳转的网址其他类型的菜单请参照默认类型,或阅读微信官方开发文档中关于自定义菜单的解释

10.如果提交后返回错误,请参考如下微信自定义菜单错误状态提示码参照表


本站所有文章均为天行博客原创,转载请注明来源及出处!

作者:宇天行 (关于我

本文首发地址:http://www.huceo.com/post/438.html

或许您还会喜欢这些文章:

Tags: 作者:宇天行 | 分类:开发技术 | 评论:25 | 浏览:13045