//创建一个自定义菜单的json字符串
$jsonmenu = '{
"button":[
{
"name":"关于我们",
"sub_button":[
{
"type":"click",
"name":"公司简介",
"key":"公司简介"
},
{
"type":"click",
"name":"社会责任",
"key":"社会责任"
},
{
"type":"click",
"name":"联系我们",
"key":"联系我们"
}]
},
{
"name":"产品服务",
"sub_button":[
{
"type":"click",
"name":"微信平台",
"key":"微信平台"
},
{
"type":"click",
"name":"微博应用",
"key":"微博应用"
},
{
"type":"click",
"name":"手机网站",
"key":"手机网站"
}]
},
{
"name":"技术支持",
"sub_button":[
{
"type":"click",
"name":"文档下载",
"key":"文档下载"
},
{
"type":"click",
"name":"技术社区",
"key":"技术社区"
},
{
"type":"click",
"name":"服务热线",
"key":"服务热线"
}]
}]
}';
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;//接口地址
$result = https_request($url, $jsonmenu);//与接口建立会话
var_mp($result);
function https_request($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;
}
//把这段代码加入到上面的调用Access Token接口的代码中就可以实现在微信公众号界面添加菜单的功能。
B. 用微发网定义微信自定义菜单返回值“invalid button key size”是怎么回事,怎么解决
在微信客户端创建自定义菜单是通过http的POST请求发送一个JSON格式的特定结构体来实现的,返回“invalid button key size”通常可能是以下原因:
不符合JSON数据格式;
不符合结构体参数限制;
在.net平台下,有可能用指定编码的StreamWriter写入流和用指定编码转换为字节数组再写入流的过程存在不兼容情况。
对于前两种原因,请参考以下示例及参数说明,或参考微信公众平台开发者文档重新构造数据:
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" },
{ "type":"click", "name":"歌手简介", "key":"V1001_TODAY_SINGER" }, { "name":"菜单",
"sub_button":[ { "type":"click", "name":"hello word", "key":"V1001_HELLO_WORLD"
}, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }] }
参数说明:button是按钮数组,按钮个数应为1~3个;type是按钮类型,目前有click,view等类型;name是按钮描述,即按钮名字,不超过16个字节,子菜单name不超过40个字节;sub_button是子按钮数组,按钮个数应为1~5个;菜单KEY值,用于消息接口推送,不超过128字节。
对于第3种原因,请尝试为StreamWriter设置不同的Encoding参数,即尝试不同的编码。
C. 微信菜单开发怎么做
微信菜单开发一般是指微信自定义菜单开发,微信自定义菜单的创建步骤:
1、找到AppId和AppSecret。自定义菜单申请成功后,在“高级功能”-“开发模式”-“接口配置信息”的最后两项就是;
2、根据AppId和AppSecret,以https get方式获取访问特殊接口所必须的凭证access_token;
3、根据access_token,将json格式的菜单数据通过https post方式提交。
难度最大的步骤是https post,需要看懂API文档与通过POST方式提交json格式的菜单数据。此外https的请求与http要复杂一些,有些开发可能并不知道如何发起。
假若你不是上面介绍两眼一抹黑,那么就当屁放了吧,还是找第三方开发服务商帮忙解决。国内第三方开发服务商有1000多家,不同平台有各自的产品特点。当然,也有些存在产品同质化严重、研发能力弱等问题,需要用户仔细甄别。从用户数量上来说,企业使用最多的微盟(weimob),2015年6月上旬入驻企业已经达到1,126,000户。