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输出控制功能在简繁体转换中的应用
Oct 09 PHP
模仿OSO的论坛(一)
Oct 09 PHP
php mssql 时间格式问题
Jan 13 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php设置页面超时时间解决方法
Sep 22 PHP
php PDO异常处理详解
Nov 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python正则中最短匹配实现代码
2018/01/16 Python
python爬取m3u8连接的视频
2018/02/28 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
Python2与Python3的区别实例总结
2019/04/17 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
护士个人简历自荐信
2013/10/18 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书