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 相关文章推荐
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
php jsonp单引号转义
Nov 23 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP INT类型在内存中占字节详解
Jul 20 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乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
jquery 页面全选框实践代码
2010/04/02 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
node内置调试方法总结
2018/02/22 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python 自动去除空行的实例
2018/07/24 Python
Python基本socket通信控制操作示例
2019/01/30 Python
用Python写一个自动木马程序
2019/09/17 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
使用C#编写创建一个线程的代码
2013/01/22 面试题
预备党员党课思想汇报
2014/01/13 职场文书
环保建议书作文
2014/03/12 职场文书
访谈节目策划方案
2014/05/15 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
三好学生个人总结
2015/02/15 职场文书
技术入股协议书
2016/03/22 职场文书