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 相关文章推荐
解析左右值无限分类的实现算法
Jun 20 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php无限遍历目录示例
Feb 21 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
ThinkPHP3.1之D方法实例详解
Jun 20 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
php格式文件打开的四种方法
Feb 24 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 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
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
php字符集转换
2017/01/23 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
js转义字符介绍
2013/11/05 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
Python开发的HTTP库requests详解
2017/08/29 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
高中政治教学反思
2014/01/18 职场文书
数控个人求职信范文
2014/02/03 职场文书
个人现实表现材料
2014/02/04 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
导游词书写之黄山
2019/08/06 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python