php微信开发之自定义菜单实现


Posted in PHP onNovember 18, 2016

编辑模式和开发模式是有冲突的。所以我们启用微信公众号的开发模式之后,那些菜单是看不到的哦。不过现在个人订阅号是不可以使用高级开发者模式的,如自定义菜单,不过我们还是可以通过测试号来测试一下,然后移代码到服务号。 

自定义类型包括如下:

1、click:点击推事件
• 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

2、view:跳转URL
• 用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

3、scancode_push:扫码推事件
• 用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。

4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框
• 用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。

自定义类型包括如下:

5、pic_sysphoto:弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片
发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。

6、pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。

7、pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发
送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。

提供代码,只要上传代码到服务器,重新关注公众号就可以看到开发模式下的自定义菜单

$appid = '微信公众号的appid'; 
$appsecret = '微信公众号的appsecret'; 
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret=$appsecret"; 
$output = https_request($url); 
$jsoninfo = json_decode($output,true); 
$access_token = $jsoninfo["access_token"]; 
$jsonmenu = '{ 
  "button":[ 
  { 
   "name":"学校系统", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"课程表", 
     "key":"课程表" 
    }, 
    { 
     "type":"click", 
     "name":"个人信息", 
     "key":"个人信息" 
    }, 
    { 
     "type":"click", 
     "name":"平时成绩", 
     "key":"平时成绩" 
    }, 
    { 
     "type":"click", 
     "name":"奖惩记录", 
     "key":"奖惩记录" 
    } 
   ] 
  }, 
  { 
   "name":"技术分享", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"移动WEB开发", 
     "key":"移动WEB开发" 
    }, 
    { 
     "type":"click", 
     "name":"J2EE框架", 
     "key":"J2EE框架" 
    }, 
    { 
     "type":"click", 
     "name":"Android开发", 
     "key":"Android开发" 
    }, 
    { 
     "type":"click", 
     "name":"PHP框架", 
     "key":"PHP框架" 
    } 
   ] 
  },{ 
   "name":"技术支持", 
   "sub_button":[ 
    { 
     "type":"click", 
     "name":"在线客服", 
     "key":"在线客服" 
    }, 
    { 
     "type":"click", 
     "name":"技术分享", 
     "key":"技术分享" 
    }, 
    { 
     "type":"view", 
     "name":"天气预报", 
     "url":"http://m.hao123.com/a/tianqi" 
    } 
   ] 
  } 
 
 ] 
 }'; 
 
 
 //创建菜单实现 
 $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token; 
 $result = https_request($url,$jsonmenu); 
 var_dump($result); 
 function https_request($url,$data = null){ 
  $curl = curl_init(); 
  curl_setopt($curl,CURLOPT_URL,$url); 
  curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); 
  curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0); 
  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; 
 }

php微信开发之自定义菜单实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
PHP魔术引号所带来的安全问题分析
Jul 15 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
PHP.vs.JAVA
Apr 29 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
php微信公众号开发模式详解
Nov 28 PHP
php实现简单加入购物车功能
Mar 07 PHP
php-fpm中max_children的配置
Mar 15 PHP
php微信开发之百度天气预报
Nov 18 #PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 #PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 #PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 #PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 #PHP
PHP二维数组去重实例分析
Nov 18 #PHP
浅谈php fopen下载远程文件的函数
Nov 18 #PHP
You might like
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
python numpy数组复制使用实例解析
2020/01/10 Python
Python 实现简单的客户端认证
2020/07/29 Python
vscode调试django项目的方法
2020/08/06 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
优秀学生评语大全
2014/04/25 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
2022漫威和DC电影上映作品
2022/04/05 欧美动漫