php 微信公众号自定义菜单栏,php实现微信公众号创建自定义菜单
目的
创建自定义菜单,实现菜单事件。
首先获取Access_Token
接口:
【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token
然后配置菜单的事件,caidan.php
header("Content-type: text/html; charset=utf-8");
define("ACCESS_TOKEN", "生成的Access_Token");
//创建菜单
function createMenu($data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".ACCESS_TOKEN);
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);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $tmpInfo;
}
//获取菜单
function getMenu(){
return file_get_contents("https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".ACCESS_TOKEN);
}
//删除菜单
function deleteMenu(){
return file_get_contents("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".ACCESS_TOKEN);
}
$data = '{
"button":[
{
"type":"click",
"name":"首页",
"key":"home"
},
{
"type":"click",
"name":"简介",
"key":"introduct"
},
{
"name":"菜单",
"sub_button":[
{
"type":"click",
"name":"hello word",
"key":"V1001_HELLO_WORLD"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}';
echo createMenu($data);
浏览器访问caidan.php
正确时的返回JSON数据包如下:
{"errcode":0,"errmsg":"ok"}
错误时的返回JSON数据包如下(示例为无效菜单名长度):
{"errcode":40018,"errmsg":"invalid button name size"}
作者:TANKING
微信:face6009
网站:https://www.likeyunba.com
php 微信公众号自定义菜单栏,php实现微信公众号创建自定义菜单相关推荐
- 绝地求生刺激战场自定义服务器,绝地求生刺激战场怎么创建自定义房间 方法介绍...
在玩端游的时候肯定有很多小伙伴参与自定义模式,很多时候主播都会创建好玩的模式,那么手游怎么创建呢?来随小编看看绝地求生刺激战场怎么创建自定义房间吧. 创房所需条件 权限也就是资格!只有一部分的玩家可以 ...
- android datepicker 自定义,android – 如何使用两个datepicker创建自定义对话框?
最好先阅读 Dialogs和 Pickers. 至于实现,您可以有两个按钮:一个用于显示开始日期的日期选择器,另一个用于显示结束日期. 编辑:如果你真的想在1个对话框中显示2个日期选择器,这里有一个如 ...
- 微信菜单 html页面添加的,微信公众号添加菜单栏外部链接(微信添加外部链接方法)...
很多微信公号新手用户想通过自己的公众号来推广其他的连接地址,对于认证用户来说可以直接添加,但对于未认证的新手用户来说不知道该怎么做,那么现在就来告诉大家添加外部链接的方法吧. 方法如下: 1.首先打开 ...
- Vue创建自定义组件,并详解整个创建自定义组件的过程
在vue开发项目中想自定义一个自己的组件,于是在网上找一下教程,教程基本的都一样,但是都不是很详细,我就按照网上的教程从头到尾学习了一遍,文章中如果有不正确的,还请各位大佬指出,共同进步. vue自定 ...
- Android实现自定义相册,在Android Gallery App中创建自定义相册
您可以使用这种方式在Gallery应用中创建相册.该名称显示为"app images". String path = Environment.getExternalStorageD ...
- (转)C#开发微信门户及应用(1)--开始使用微信接口
http://www.cnblogs.com/wuhuacong/p/3613826.html 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习 ...
- C#开发微信门户及应用(1)--开始使用微信接口
C#开发微信门户及应用(1)--开始使用微信接口 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为日常计划的重要事情之 ...
- 为Qt Designer创建自定义Widgets小部件
为Qt Designer创建自定义Widgets小部件 为Qt Designer创建自定义Widgets小部件 入门 在注释domXml()功能 插件要求 创建行为良好的小部件 编译和安装插件 一个简 ...
- WPF 创建自定义面板
前面两个章节分别介绍了两个自定义控件:自定义的ColorPicker和FlipPanel控件.接下来介绍派生自定义面板以及构建自定义绘图控件. 创建自定义面板是一种特殊但较常见的自定义控件开发子集.前 ...
- JavaScript学习笔记:创建自定义对象
文章目录 一.利用构造函数模式创建自定义对象 二.采用原型模式创建自定义对象 三.采用混合模式创建自定义对象 四.采用动态原型模式创建自定义对象 一.利用构造函数模式创建自定义对象 使用构造函数可以创 ...
最新文章
- 了解ViewConfiguration
- 小伙一本正经用石头打造CPU,号称99秒“解决”芯片危机
- 我失败的阿里程序员生涯
- visio篇章--1
- 程序员羽化之路--假如需要一百万个对象
- js原生后代选择器_CSS 后代选择器
- java程序员面试怎么难为面试官_Java程序员面试这些多线程问题你知道吗?
- js上拉加载ajax数据,原生ajax写的上拉加载实例
- LINUX中使用fdisk对SD卡磁盘进行格式化并重新分区
- java音频文件怎么打开_java 怎么读取音乐文件
- python 报错traceback-python-traceback捕获并打印异常
- 用c语言合并两个有序单链表,c++ 如何合并两个有序链表
- 刨根究底字符编码之二——关键术语解释(下)
- 3个阶段 项目征名_《传奇3G》新版本 征名活动邀您参与
- 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
- libnet、libnids、libpcap轻松搭建Linux网络入侵检测系统
- IIS HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- NiFi 的使用心得
- CDA数据分析师携手万宝盛华开启人才培训新篇章
- 升级云服务器的python3,导致宝塔面板打不开