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 相关文章推荐
mysql5写入和读出乱码解决
Nov 25 PHP
PHP 截取字符串专题集合
Aug 19 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
joomla组件开发入门教程
May 04 PHP
php数据访问之查询关键字
May 09 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
Laravel 前端资源配置教程
Oct 18 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
PHP面向对象法则
2012/02/23 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
js返回顶部实例分享
2016/12/21 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
python画双y轴图像的示例代码
2019/07/07 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
彻底解决Python包下载慢问题
2020/11/15 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
幼儿园标语大全
2014/06/19 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书