微信公众平台如何创建公众号自定义菜单单

您现在的位置: &
微信公众平台快速上手教程Part9 详解自定义菜单与大家疑问
微信公众平台快速上手教程Part9 详解自定义菜单与大家疑问
  已经有一段时间没有写教程了,本来想自定义菜单不需要写教程的,但是居然有不少人询问自定义菜单的问题,所以还是写出来比较好,也可以与之前的教程连贯起来。这次我还归纳了大家对自定义菜单问得最多的一些问题,希望能让大家对自定义菜单有个完整的了解。
  问得最多的问题:
  1、为什么有些订阅号他们有自定义菜单呢?
  刘子骏回复:有些账号在微信分服务号和订阅号之前就有自定义菜单了,只是微信把他们的自定义菜单功能保留下来而已。
  2、我是为了自定义菜单才升级到服务号的,请问有办法突破群发限制吗?
  刘子骏回复:不可能突破群发限制的。
  3、服务号可以降级为订阅号吗?
  刘子骏回复:不行的。
  4、我看到别人的自定义菜单有在线预约、图文投票、在线抽奖等功能,请问如何在官方后台调用这些功能呢?
  刘子骏回复:他们是通过开发模式接入第三方系统来实现这些功能的,微信官方后台是没有的。
  5、自定义菜单可以直接跳转到我指定的网址吗?
  刘子骏回复:可以的,下面教程有说明的。
  6、我如何判断是否需要自定义菜单呢?如何选择服务号和订阅号?
  刘子骏回复:首先我们了解一下两种帐号的区别,服务号拥有自定义菜单,但是每月只能群发一次。订阅号没有自定义菜单,但是每日都可以群发一次。服务号简单来说就是提供客户自助服务的帐号,例如像招商银行、高德地图以提供自助查询功能服务为主的帐号就适合使用服务号。如果你的帐号是资讯、销售为主的帐号就适合订阅号,例如你是媒体、实体店商家、淘宝店等等就适合使用订阅号。特别是商家,他们需要经常推送折扣信息和活动信息给客户,如果使用服务号每月只能群发一次,对他们的运营是十分不利的。
  上面就是目前大家问得最多的问题,以后我会不断收集更多问题补充进去的,务求让大家可以更深入了解自定义菜单。下面正式进入教程。
  现在在你申请微信公众账号的时候,系统就会提示你选择服务号还是订阅号,只要你选择服务号默认就会开通自定义菜单的。如果你之前已经开通了微信公众账号,你的账号默认就是订阅号,当然也可以把订阅号升级到服务号来开通自定义菜单的。
  具体步骤如下:
  首先登陆后台后,你会看到右边的系统公告上有一条是&将公众号升级成服务号&的连接,点击进入到以下页面。
  选择左边的服务号,然后点击确认按钮。
  这时系统就会提示你,如果升级到服务号,每个月只能群发一次,不能每日群发一次了,而且不能改回订阅号。之前是没有这个提示的,现在可能有不少人误以为服务号也是每天群发一次,导致升级后后悔了,所以微信官方做了这个提醒。点击确定后就会出现下面的补充信息页面!
  大家可以看到,类型没有了个人,所以服务号是不支持个人申请的。
  点击提交后,账号立刻升级为服务号了。
  我们点击顶部栏目【高级功能】,选择【编辑模式】进入到上面的页面。我们会看到自定义菜单后面的启用按钮,点击【启用】。
  点击【启用】后,按钮会变成上图一样,我们点击【设置】按钮。
  点击【设置】后我们会进入到上图的页面,页面里面左边是自定义菜单的栏目设置,右边是对应栏目的内容设置。我们先说说右边的栏目设置吧。
  自定义菜单是分两层的,第一层菜单就是大家平时看到一些微信账号底部的按钮层,这一层最多只能设置3个,第二层菜单就是点击第一层按钮后,弹出来的栏目,第二层最多只能设置5个。我们再看看上图顶部的【添加菜单】按钮,点击它就可以添加第一层栏目,如果点击顶部【排序】按钮,可以上下拖动来调整栏目的顺序。然后看看图片上面添加好的内容,上图的&APP定制&就是第一层栏目,点击它后面会出现3个按钮,就是上图3个红点的地方,第一个是添加二级菜单,第二个是编辑栏目名称,第三个是删除栏目。大家对应操作就可以了。
  我们点击一下第二层菜单,右边的内容编辑页面就会出现&发送消息&和&跳转到网页&的两个按钮。我们先点击&发送消息&按钮看看。
  上图就是&发送消息&的页面,其实就是添加本地内容框。我们返回到刚刚的页面,点击&跳转到网页&。
  &跳转到网页&功能可以随你添加指定的网址,用户只要点击对应按钮就可以直接访问网址,方便连接到第三方系统,或自己定制开发的系统页面。
  设置完自定义菜单的内容后,可以点击下面的【预览】按钮看看效果,确认没有问题可以点击【发布】按钮即可发布,一般1个小时左右在手机上就看到账号里自定义菜单的效果,慢的可能要几小时才看到。下图就是自定义菜单生成后的效果。
  自定义菜单教程到这里,如果你还有不明白的地方可以加微信公号:liuzijuncom 或在微信搜索刘子骏,或在新浪微博上@刘子骏的微博 留言给我的。
  来源:刘子骏博客
&&&主编推荐
&&&热门试卷
&&&最新视频
&&&热门阅读
&&&最新问答
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-当前位置:->->文章详细内容php版微信公众平台账号自定义菜单类摘要:微信公众平台服务号可申请自定义菜单了,其它的号暂时不支持自定义菜单了,这个不但可以使用api来操作,还可以直接在后台定义菜单与参数哦。...
申请自定义菜单
服务号可以申请自定义菜单;使用QQ登录的公众号,可以升级为邮箱登录;使用邮箱登录的公众号,可以修改登录邮箱;群发消息可以同步到腾讯微博。
微信公众平台账号api程序
//define your token
define("TOKEN", "chenxiang");//改成自己的TOKEN
define('APP_ID', '');//改成自己的APPID
define('APP_SECRET', '');//改成自己的APPSECRET
$wechatObj = new wechatCallbackapiTest(APP_ID,APP_SECRET);
$wechatObj-&Run();
class wechatCallbackapiTest
&&& private $fromU
&&& private $toU
&&& private $
&&& private $
&&& private $app_
&&& private $app_
&&& public function __construct($appid,$appsecret)
&&&&&&& # code...
&&&&&&& $this-&app_id = $
&&&&&&& $this-&app_secret = $
&&& public function valid()
&&&&&&& $echoStr = $_GET["echostr"];
&&&&&&& if($this-&checkSignature()){
&&&&&&&&&&& echo $echoS
&&&&&&&&&&&
&&&& * 运行程序
&&&& * @param string $value [description]
&&& public function Run()
&&&&&&& $this-&responseMsg();
&&&&&&& $arr[]= "您好,这是自动回复,我现在不在,有事请留言,我会尽快回复你的^_^";
&&&&&&& echo $this-&make_xml("text",$arr);
&&& public function responseMsg()
&&&&&&& $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//返回回复数据
&&&&&&& if (!empty($postStr)){
&&&&&&&&&&&&&&& $access_token = $this-&get_access_token();//获取access_token
&&&&&&&&&&&&&&& $this-&createmenu($access_token);//创建菜单
&&&&&&&&&&&&&&& //$this-&delmenu($access_token);//删除菜单
&&&&&&&&&&&&&&& $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
&&&&&&&&&&&&&&& $this-&fromUsername = $postObj-&FromUserN//发送消息方ID
&&&&&&&&&&&&&&& $this-&toUsername = $postObj-&ToUserN//接收消息方ID
&&&&&&&&&&&&&&& $this-&keyword = trim($postObj-&Content);//用户发送的消息
&&&&&&&&&&&&&&& $this-&times = time();//发送时间
&&&&&&&&&&&&&&& $MsgType = $postObj-&MsgT//消息类型
&&&&&&&&&&&&&&& if($MsgType=='event'){
&&&&&&&&&&&&&&&&&&& $MsgEvent = $postObj-&E//获取事件类型
&&&&&&&&&&&&&&&&&&& if ($MsgEvent=='subscribe') {//订阅事件
&&&&&&&&&&&&&&&&&&&&&&& $arr[] = "你好,我是xxx,现在我们是好友咯![愉快][玫瑰]";
&&&&&&&&&&&&&&&&&&&&&&& echo $this-&make_xml("text",$arr);
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& }elseif ($MsgEvent=='CLICK') {//点击事件
&&&&&&&&&&&&&&&&&&&&&&& $EventKey = $postObj-&EventK//菜单的自定义的key值,可以根据此值判断用户点击了什么内容,从而推送不同信息
&&&&&&&&&&&&&&&&&&&&&&& $arr[] = $EventK
&&&&&&&&&&&&&&&&&&&&&&& echo $this-&make_xml("text",$arr);
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&& }else {
&&&&&&&&&&& echo "this a file for weixin API!";
&&&&&&&&&&&
&&&& * 获取access_token
&&& private function get_access_token()
&&&&&&& $url = "https://api./cgi-bin/token?grant_type=client_credential&appid=".$this-&app_id."&secret=".$this-&app_
&&&&&&& $data = json_decode(file_get_contents($url),true);
&&&&&&& if($data['access_token']){
&&&&&&&&&&& return $data['access_token'];
&&&&&&& }else{
&&&&&&&&&&& return "获取access_token错误";
&&&& * 创建菜单
&&&& * @param $access_token 已获取的ACCESS_TOKEN
&&& public function createmenu($access_token)
&&&&&&& $url = "https://api./cgi-bin/menu/create?access_token=".$access_
&&&&&&& $arr = array(&
&&&&&&&&&&& 'button' =&array(
&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("生活查询"),
&&&&&&&&&&&&&&&&&&& 'sub_button'=&array(
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("天气查询"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_WEATHER'
&&&&&&&&&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("身份证查询"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_IDENT'
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("轻松娱乐"),
&&&&&&&&&&&&&&&&&&& 'sub_button'=&array(
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("刮刮乐"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_GUAHAPPY'
&&&&&&&&&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("幸运大转盘"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_LUCKPAN'
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("我的信息"),
&&&&&&&&&&&&&&&&&&& 'sub_button'=&array(
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("关于我"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_ABOUTME'
&&&&&&&&&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'name'=&urlencode("工作信息"),
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'type'=&'click',
&&&&&&&&&&&&&&&&&&&&&&&&&&& 'key'=&'VCX_JOBINFORMATION'
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&& )
&&&&&&&&&&& )
&&&&&&& );
&&&&&&& $jsondata = urldecode(json_encode($arr));
&&&&&&& $ch = curl_init();
&&&&&&&&curl_setopt($ch,CURLOPT_URL,$url);
&&&&&&& curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
&&&&&&& curl_setopt($ch,CURLOPT_POST,1);
&&&&&&& curl_setopt($ch,CURLOPT_POSTFIELDS,$jsondata);
&&&&&&& curl_exec($ch);
&&&&&&& curl_close($ch);
&&&& * 查询菜单
&&&& * @param $access_token 已获取的ACCESS_TOKEN
&&& private function getmenu($access_token)
&&&&&&& # code...
&&&&&&& $url = "https://api./cgi-bin/menu/get?access_token=".$access_
&&&&&&& $data = file_get_contents($url);
&&&&&&& return $
&&&& * 删除菜单
&&&& * @param $access_token 已获取的ACCESS_TOKEN
&&& private function delmenu($access_token)
&&&&&&& # code...
&&&&&&& $url = "https://api./cgi-bin/menu/delete?access_token=".$access_
&&&&&&& $data = json_decode(file_get_contents($url),true);
&&&&&&& if ($data['errcode']==0) {
&&&&&&&&&&& # code...
&&&&&&&&&&&
&&&&&&& }else{
&&&&&&&&&&&
&&&& *@param type: text 文本类型, news 图文类型
&&&& *@param value_arr array(内容),array(ID)
&&&& *@param o_arr array(array(标题,介绍,图片,超链接),...小于10条),array(条数,ID)
&&& private function make_xml($type,$value_arr,$o_arr=array(0)){
&&&&&&& //=================xml header============
&&&&&&& $con="&xml&
&&&&&&&&&&&&&&&&&&& &ToUserName&&![CDATA[{$this-&fromUsername}]]&&/ToUserName&
&&&&&&&&&&&&&&&&&&& &FromUserName&&![CDATA[{$this-&toUsername}]]&&/FromUserName&
&&&&&&&&&&&&&&&&&&& &CreateTime&{$this-&times}&/CreateTime&
&&&&&&&&&&&&&&&&&&& &MsgType&&![CDATA[{$type}]]&&/MsgType&";
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&& //=================type content============
&&&&&&& switch($type){
&&&&&&&&&&
&&&&&&&&&&& case "text" :&
&&&&&&&&&&&&&&& $con.="&Content&&![CDATA[{$value_arr[0]}]]&&/Content&
&&&&&&&&&&&&&&&&&&& &FuncFlag&{$o_arr}&/FuncFlag&";&&
&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&& case "news" :&
&&&&&&&&&&&&&&& $con.="&ArticleCount&{$o_arr[0]}&/ArticleCount&
&&&&&&&&&&&&&&&&&&&& &Articles&";
&&&&&&&&&&&&&&&&foreach($value_arr as $id=&$v){
&&&&&&&&&&&&&&&&&&& if($id&=$o_arr[0]) //判断数组数不超过设置数
&&&&&&&&&&&&&&&&&&& $con.="&item&
&&&&&&&&&&&&&&&&&&&&&&&& &Title&&![CDATA[{$v[0]}]]&&/Title&&
&&&&&&&&&&&&&&&&&&&&&&&& &Description&&![CDATA[{$v[1]}]]&&/Description&
&&&&&&&&&&&&&&&&&&&&&&&& &PicUrl&&![CDATA[{$v[2]}]]&&/PicUrl&
&&&&&&&&&&&&&&&&&&&&&&&& &Url&&![CDATA[{$v[3]}]]&&/Url&
&&&&&&&&&&&&&&&&&&&&&&&& &/item&";
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& $con.="&/Articles&
&&&&&&&&&&&&&&&&&&&& &FuncFlag&{$o_arr[1]}&/FuncFlag&";&&
&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&& } //end switch
&&&&&&&&&&
&&&&&&&& //=================end return============
&&&&&&& $con.="&/xml&";
&&&&&&& return $
&&& private function checkSignature()
&&&&&&& $signature = $_GET["signature"];
&&&&&&& $timestamp = $_GET["timestamp"];
&&&&&&& $nonce = $_GET["nonce"];&&&&
&&&&&&&&&&&&&&&&
&&&&&&& $token = TOKEN;
&&&&&&& $tmpArr = array($token, $timestamp, $nonce);
&&&&&&& sort($tmpArr);
&&&&&&& $tmpStr = implode( $tmpArr );
&&&&&&& $tmpStr = sha1( $tmpStr );
&&&&&&& if( $tmpStr == $signature ){
&&&&&&&&&&&
&&&&&&& }else{
&&&&&&&&&&&
小困惑我想想学到了好文章赶紧学标签: ,,注:与内容无关的评论将被删除,严重者禁用帐号! |
&&|&&最新评论不吐不快,赶紧来一发!栏目推荐热门点击本站推荐
| 服务协议 | 隐私权保护 | 开放平台 | 广告服务 | PHP1招聘 | PHP1公益 | 客服中心
| Copyright (C) 1998 - . All Rights Reserved
第一PHP社区目前自定义菜单已经停止接受申请,但将来肯定会开放,微信公众平台后台的帮助文档..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
微信公众平台:功能强大的自定义菜单
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口自定义菜单的创建
本文所属图书&>&
全书一共9章,在逻辑上分为四大部分:第一部分(第1章)介绍了微信公众平台的开发模式、数据交互方式,以及开发公众平台应用所需要的各项技术;第二部分(第2~4章)首先详细讲解了微信公众平台开放的所有API的功&&
创建菜单的接口地址是:https://api./cgi-bin/menu/create?access_token=ACCESS_TOKEN。
上面的地址中的ACCESS_TOKEN是通过凭证接口获取到的凭证。POST参数如下:
&&&& &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&
&&&&&&&&&&& }]
这个POST参数是一个JSON格式的字符串。JSON格式是HTTP网络传送中经常用到的字符串格式。这种格式和的多维数组结合得非常好,JSON格式中中括号包含的字符串对应的数值数组,而大括号内的字符串对应PHP的关联数组。PHP提供了两个内建的函数来处理JSON格式的字符串:json_encode把PHP数组转换成JSON格式的字符串;json_decode把JSON格式的字符串转换成PHP的多维数组。上面的JSON格式的字符串用json_decode函数之后得到的PHP数组如下所示:
&button& =& array(
&&&&&&& array(
&&&&&&&&&&&&&&& &type& =& &click&,
&&&&&&&&&&&&&&& &name& =& &今日歌曲&,
&&&&&&&&&&&&&&& &key& =& &V1001_TODAY_MUSIC&
&&&&&&& ),
&&&&&&& array(
&&&&&&&&&&&&&&& &type& =& &click&,
&&&&&&& &name& =& &歌手简介&,
&&&&&&& &key& =& &V1001_TODAY_SINGER&
&&&&&&& ),
&&&&&&& array(
&&&&&&&&&&&&&&& &name& =& &菜单&,
&&&&&&&&&&&&&&& &sub_button& =& array(
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &type& =& &click&,
&&&&&&&&&&&&&&& &name& =& &hello word&,
&&&&&&&&&&&&&&& &key& =& &V1001_HELLO_WORLD&
&&&&&&&&&&&&&&&&&&&&&&& ),
&&&&&&&&&&&&&&&&&&&&&&& array(
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &type& =& &click&,
&&&&&&&&&&&&&&& &name& =& &赞一下我们&,
&&&&&&&&&&&&&&& &key& =& &V1001_GOOD&
&&&&&&&&&&&&&&&&&&&&&&& )
&&&&&&&&&&&&&&& )
JSON格式的一般使用方法是:在发送请求前,用PHP数组表示需要发送的数据,然后使用json_encode把PHP数组编码成JSON字符串,接着把JSON字符串以HTTP的POST数据的形式发送出去。程序接收到返回的JSON数据段的时候,使用json_decode转换成PHP数组,然后再获取需要的数据。
创建菜单请求的POST数据的各个参数的详细描述如表2-11所示。
表2-11&& 创建菜单请求中各个参数的描述
参  数&是否必须&说  明
button&是&按钮数组,按钮个数应为1~3个
sub_button&否&子按钮数组,按钮个数应为1~5个
type&是&按钮类型,目前有click类型
name&是&按钮描述,即按钮名字,不超过16字节,子菜单不超过40字节
key&类型为click必须&按钮KEY值,用于消息接口(event类型)推送,不超过128字节
请求成功后得到的返回字符串如下:
{&errcode&:0,&errmsg&:&ok&}
请求失败的话返回字符串如下:
{&errcode&:40018,&errmsg&:&invalid button name size&}
其中errcode表示错误码,errmsg表示对应的错误信息。所有错误码及其错误信息的描述如表2-12所示。
表2-12&& 返回码说明
返回码&说  明
0&请求成功
40001&验证失败
40002&不合法的凭证类型
40003&不合法的OpenID
40004&不合法的媒体文件类型
40005&不合法的文件类型
40006&不合法的文件大小
40007&不合法的媒体文件ID
40008&不合法的消息类型
40009&不合法的图片文件大小
40010&不合法的语音文件大小
40011&不合法的视频文件大小
40012&不合法的缩略图文件大小
40013&不合法的APPID
40014&不合法的access_token
40015&不合法的菜单类型
40016&不合法的按钮个数
40017&不合法的按钮个数
40018&不合法的按钮名字长度
40019&不合法的按钮KEY长度
40020&不合法的按钮URL长度
40021&不合法的菜单版本号
40022&不合法的子菜单级数
40023&不合法的子菜单按钮个数
40024&不合法的子菜单按钮类型
40025&不合法的子菜单按钮名字长度
40026&不合法的子菜单按钮KEY长度
40027&不合法的子菜单按钮URL长度
40028&不合法的自定义菜单使用用户
41001&缺少access_token参数
41002&缺少appid参数
41003&缺少refresh_token参数
41004&缺少secret参数
41005&缺少多媒体文件数据
41006&缺少media_id参数
41007&缺少子菜单数据
42001&access_token超时
43001&需要GET请求
43002&需要POST请求
43003&需要HTTPS请求
44001&多媒体文件为空
44002&POST的数据包为空
44003&图文消息内容为空
45001&多媒体文件大小超过限制
45002&消息内容超过限制
45003&标题字段超过限制
45004&描述字段超过限制
45005&链接字段超过限制
45006&图片链接字段超过限制
45007&语音播放时间超过限制
45008&图文消息超过限制
45009&接口调用超过限制
45010&创建菜单个数超过限制
46001&不存在媒体数据
46002&不存在的菜单版本
46003&不存在的菜单数据
47001&解析JSON/XML内容错误
菜单请求创建成功后的自定义菜单如图2-7所示。
菜单创建成功之后,当用户单击任意的一个菜单时,公众账号后台会收到一个事件推送信息,消息的中的Event为&CLICK&,EventKey为菜单定义中对应的KEY值。在创建完自定义菜单之后,用户的微信并不能立即看到这些菜单,需要大概一天的时间之后才会展现出来。这是因为微信客户端的缓存过期时间是24小时。但是我们测试自己的程序不可能等这么长时间,一个好办法是先取消关注自己的公众账号,重启微信,然后重新关注。这样微信会立即重新拉一次最新的自定义菜单数据并做展现。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。仿站中国,提供仿站,网站克隆,网站仿制,仿站中国,仿网站,建网站,专业团队,七年建站经验,先仿站后付款,让您建站无优!
微信公众平台开发(八) 自定义菜单功能开发
19:23:13&&&&编辑:仿站&&&&点击:
微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接。自定义菜单接口将为公众账号的信息展示空间提供更多可能性。thinkphp。本文将针对自定义菜单做简单的开发应用,以供读者参考。
二、官方说明
开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。自定义菜单接口可实现以下类型按钮:
click(点击事件):
用户点击click类型按钮后,想知道php100。微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复。
view(访问网页):
用户点击view类型按钮后,会直接跳转到开发者指定的url中。
创建自定义菜单后,对比一下php源码。由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后,事实上php是什么。再次关注,则可以看到创建后的效果。php是什么。
文档地址:相比看php源码。相比看。wiki/index.php?title=自定义菜单接口
三、获取使用凭证
3.1 获取appid 和appsecret
在 微信公众平台 & 高级功能 &开发模式中找到appid和appsecret。
3.2 使用appid 和appsecret 向微信凭证获取接口请求access_token
请求地址:
请求参数说明:
grant_type:获取access_token填写client_credential
appid:看着php date。第三方用户唯一凭证
secret:第三方用户唯一凭证密钥,看着php。既appsecret
返回说明:
正确的Json返回结果:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
返回参数说明:学会。php date。。
access_token:获取到的凭证
expires_in:凭证有效时间,单位:php。秒
3.3 具体实现
a. 打印出格式
结果如下:
b. 获取access_token
注:access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效。
四、创建菜单
方法:通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求地址:phpnow。https://cgi-bin/menu/create?access_token=ACCESS_TOKEN
请求示例:
{"button":[{"name":"公共查询","sub_button":[{"type":"click","name":"天气查询","key":"tianQi"},{"type":"click","name":"公交查询","key":"gongJiao"},{"type":"click","name":"翻译","key":"fanYi"}]},{"name":"苏州本地","sub_button":[{"type":"click","name":"爱上苏州","key":"loveSuzhou"},{"type":"click","name":"苏州景点","key":"suzhouScenic"},{"type":"click","name":"苏州美食","key":"suzhouFood"},{"type":"click","name":"住在苏州","key":"liveSuzhou"}]},{"type":"click","name":"联系我们","key":"lianxiUs"}]}
示例说明:
菜单结构及说明:
{"button":[//button定义该结构为一个菜单{"name":"分支主菜单名","sub_button":[//sub_button定义子菜单{"type":"click",//按钮类型"name":"分支子菜单名1",//菜单名称"key":"loveSuzhou"//菜单key值},{"type":"click","name":"分支子菜单名2","key":"liveSuzhou"}]},//菜单之间用 , 分隔{"type":"click","name":"独立菜单","key":"lianxiUs"}]}
返回说明:php date。
正确的Json返回结果:
{"errcode":0,"errmsg":"ok"}提交菜单:
通过curl 提交以上的菜单数据,代码如下:
$MENU_URL="https://cgi-bin/menu/create?access_token=".$ACC_TOKEN;$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $MENU_URL);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 ( MSIE5.01; Windows NT 5.0)');curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_AUTOREFERER, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$info = curl_exec($ch);if (curl_errno($ch)) {echo'Errno'.curl_error($ch);}curl_close($ch);var_dump($info);
运行结果:
测试结果:
菜单创建成功。
五、查询菜单
查询当前使用的自定义菜单结构。
请求地址:https://cgi-bin/menu/get?access_token=ACCESS_TOKEN
curl 代码如下:
$MENU_URL="https://cgi-bin/menu/get?access_token=".$ACC_TOKEN;$cu = curl_init();curl_setopt($cu, CURLOPT_URL, $MENU_URL);curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);$menu_json = curl_exec($cu);$menu = json_decode($menu_json);curl_close($cu);echo $menu_
运行结果:
菜单查询成功。
六、删除菜单
取消当前使用的自定义菜单。
请求地址:https://cgi-bin/menu/delete?access_token=ACCESS_TOKEN
curl 代码如下:
$MENU_URL="https://cgi-bin/menu/delete?access_token=".$ACC_TOKEN;$cu = curl_init();curl_setopt($cu, CURLOPT_URL, $MENU_URL);curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);$info = curl_exec($cu);$res = json_decode($info);curl_close($cu);if($res-&errcode == "0"){echo"菜单删除成功";}else{echo"菜单删除失败";}
运行结果:
(图文来源于:html/php/api/***.html)}

我要回帖

更多关于 微信公众平台 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信