一、简介

微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接。自定义菜单接口将为公众账号的信息展示空间提供更多可能性。本文将针对自定义菜单做简单的开发应用,以供读者参考。

二、官方说明

开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。 自定义菜单接口可实现以下类型按钮:

click(点击事件):

用户点击click类型按钮后,微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复。

view(访问网页):

用户点击view类型按钮后,会直接跳转到开发者指定的url中。

创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。

文档地址:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3

三、获取使用凭证

3.1 获取appid 和appsecret

在 微信公众平台 > 高级功能 > 开发模式中找到appid 和appsecret。

3.2 使用appid 和appsecret 向微信凭证获取接口请求access_token

请求参数说明:

grant_type:获取access_token填写client_credential

appid:第三方用户唯一凭证

secret:第三方用户唯一凭证密钥,既appsecret

返回说明:

正确的Json返回结果:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

返回参数说明:

access_token:获取到的凭证

expires_in:凭证有效时间,单位:秒

3.3 具体实现

a. 打印出格式

结果如下:

b. 获取access_token

注:access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效。

四、创建菜单

方法:通过POST一个特定结构体,实现在微信客户端创建自定义菜单。

请求地址:https://api.weixin.qq.com/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"

}]

}

返回说明:

正确的Json返回结果:

{"errcode":0,"errmsg":"ok"}

提交菜单:

通过curl 提交以上的菜单数据,代码如下:

$MENU_URL="https://api.weixin.qq.com/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 (compatible; MSIE 5.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://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

curl 代码如下:

$MENU_URL="https://api.weixin.qq.com/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_json;

运行结果:

菜单查询成功。

六、删除菜单

取消当前使用的自定义菜单。

请求地址:https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

curl 代码如下:

$MENU_URL="https://api.weixin.qq.com/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 "菜单删除失败";

}

php微信自定义菜单开发,微信公众平台开发自定义菜单功能开发相关推荐

  1. 微信自定义菜单java_使用Java语言开发微信公众平台(八)——自定义菜单功能

    随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...

  2. 微信公众平台创建自定义菜单的PHP代码

    接口说明 在使用通用接口前,你需要做以下两步工作: 1.拥有一个  微信公众账号,并获取到  appid和appsecret(在公众平台申请自定义菜单功能,开启开发者模式,填写URL与Token后获得 ...

  3. 九宝老师公开课第1讲:微信公众平台与javaWeb的结合开发-CSDN公开课-专题视频课程...

    九宝老师公开课第1讲:微信公众平台与javaWeb的结合开发-4385人已学习 课程介绍         对微信公众号的相关知识进行介绍,从程序员角度谈如何认识微信公众号以及微信公众号的优势.重点讲解 ...

  4. php微信个性化菜单,微信公众平台新增个性化菜单接口,实现公众号

    为了帮助公众号实现灵活的业务运营,微信公众平台新增个性化菜单接口. 如何开通微信公众平台个性化菜单接口 目前只对已通过认证的微信订阅号和服务号开放. 在此之前的微信订阅号和服务号是只能按照微信公众平台 ...

  5. 微信公众平台推数据统计功能 商业价值可量化

    8月29日晚,微信产品团队通过服务号"微信公众平台"发布消息,宣布"微信公众平台增加数据统计功能".与此同时,细心的用户发现登陆微信公众平台,后台界面上增加了& ...

  6. java 朋友圈分享接口_Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

  7. JAVA 实现朋友圈_Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

  8. iOS微信公众平台彻底关闭打赏功能

    微信团队官方宣布,受苹果公司新规定影响,2017年4月19日17点起,iOS版微信公众平台赞赏功能关闭,但安卓等其他版本微信的赞赏功能不受影响. 微信团队官方宣布,受苹果公司新规定影响,2017年4月 ...

  9. iOS9 3D Touch 标签菜单 peek and pop force 压力触控 功能开发高级版教程

    iOS9 3D Touch 标签菜单 peek and pop  force 压力触控 功能开发高级版教程 github地址: https://github.com/wyk125/3DTouchDem ...

  10. 关于微信公众平台的自定义菜单

    在微信公众平台中,菜单是可以配置的,分为两种,登陆微信公众平台账号,在后台管理界面,可以进行手动配置,登陆地址:https://mp.weixin.qq.com/ 温馨提示:服务号开通即带自定义菜单, ...

最新文章

  1. 【lidar】3D目标检测PointPillars:论文解读、代码解读、部署实现(2)
  2. IDEA 构建为了打 jar 包的工程,包含 maven 打 jar 包的过程
  3. OpenCV图像处理使用笔记(六)——图像滤波
  4. Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion
  5. JavaScript 验证API
  6. wamp5.5.12安装re dis扩展
  7. 基于Gulp的简易前端自动化工程搭建
  8. Oracle数据库的三种标准的备份方法
  9. 13-5 15 xshell使用xftp pure-ftpd
  10. 丁克是什么意思,丁克家庭是什么意思,丁克家庭为什么越来越多
  11. 使用MOE进行药效团建模与分析
  12. js简单正则表达式验证密码
  13. rocketmq 同步双写
  14. 利用cad计算型材的弹性模量_已知阶梯形直杆受力如图所示,材料的弹性模量
  15. 通过温度湿度计算露点
  16. 文菌装NAS E5:超详细!手把手教您安装黑群晖918+6.2保姆级教程
  17. sklearn的roc_curve()函数分析
  18. Java Web3J概述
  19. 金海佳学C++primer 练习9.43
  20. android 模拟返回键

热门文章

  1. 十六进制颜色和RGB互转
  2. 好悲伤?快去MuseNet上听听Gaga风的肖邦!
  3. 理解偏差和方差(Bias-Variance)的Tradeoff
  4. 传奇开服一条龙GEE引擎登录器配置教程
  5. 交叉线和直通线的做法
  6. edge 禁止网页自动刷新_如何在Microsoft Edge中自动翻译网页
  7. 达摩院发布2023十大科技趋势,多领域“日进一寸”式融合创新
  8. 爬虫网易财经上市公司财务数据
  9. 计算机闹钟3是什么音乐,【PC闹钟】教你电脑自动开机并播放音乐提醒你起床
  10. 我的世界(mc) 搭建 Forge 1.17.1 版 服务器教程,可装MOD,带面板