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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
PHP 反射机制实现动态代理的代码
Oct 22 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
Windows7下的php环境配置教程
Feb 28 PHP
yii2控制器Controller Ajax操作示例
Jul 23 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 allow_url_include的应用和解释
2010/04/22 PHP
php获取url参数方法总结
2014/11/13 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
js 通用订单代码
2013/12/23 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
对python的文件内注释 help注释方法
2018/05/23 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
python标准库os库的函数介绍
2020/02/12 Python
如何一键升级Python所有包
2020/11/05 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
Delphi CS笔试题
2014/01/04 面试题
行政主管岗位职责
2013/11/18 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
python基础之匿名函数详解
2021/04/21 Python
详解CSS故障艺术
2021/05/25 HTML / CSS
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏