微信自定义菜单的创建/查询/取消php示例代码


Posted in PHP onAugust 05, 2016

微信公众帐号 服务号可以使用 自定义菜单功能。之前在创建菜单时一直失败,原因是$data 格式一直没有传正确,后来终于解决了。这里先记录下 顺便封装了一个类,便于自定义菜单的管理。此类仅仅是自定义菜单的管理类,并未涉及微信自定义回复和菜单事件的代码。

代码如下

/**
 * @author LSH 2013-09-06 
 * 
 * 微信自定义菜单的创建|查询|取消
 */
class weixinMenu {

 public static $appid = null;  // 申请得到的appid

 public static $secret = null; // 申请得到的secret 

 public static $getToken = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";

 public static $createMenu = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";

 public static $selMenu ="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=";

 public static $delMenu = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=";

 public static $opt = array(
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => false,
  CURLOPT_USERAGENT => 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)',
  CURLOPT_FOLLOWLOCATION => 1,
  CURLOPT_AUTOREFERER =>1,
  CURLOPT_RETURNTRANSFER => true
  );

 public $ACCESS_TOKEN = null;

 /**
 * 创建菜单
 */
 public function create()
 {

 $this->token();

 $strMeau = '{
   "button":[
   {
      "type":"click",
      "name":"菜单左",
      "key":"V_MENU_LEFT"
    },
    {
      "type":"click",
      "name":"菜单中",
      "key":"V_MENU_CENTER"
    },
    {
   "type":"click",
   "name":"菜单右",
   "key":"V_MENU_RIGHT"
  }]
 }';

 $ret = $this->HttpPost(self::$createMenu.$this->ACCESS_TOKEN,self::$opt, $strMeau);

 echo $ret;
 }

 /**
 * 查询菜单
 */
 public function sel()
 {
 $this->token();

 $ret = $this->HttpGet(self::$selMenu.$this->ACCESS_TOKEN,self::$opt);

 echo $ret;
 }

 /**
 * 取消菜单
 */
 public function del()
 {
 $this->token();

 $ret = $this->HttpGet(self::$delMenu.$this->ACCESS_TOKEN,self::$opt);

 echo $ret;
 }

 /**
 * 获取token
 */
 private function token()
 {
 $tokenUrl = self::$getToken."&appid=".self::$appid."&secret=".self::$secret;
 $ret = $this->HttpGet($tokenUrl,self::$opt);

 $arrRet = json_decode($ret,true);

 $this->ACCESS_TOKEN = $arrRet['access_token'];
 }

 /**
 * POST 模式
 * @param string $url    post 的地址
 * @param array $opt    post 选项
 * @param array $post_data post 数据
 * @return mixed
 */
 private function HttpPost($url, $opt = array(),$post_data) 
 {
 $setopt = array(
  CURLOPT_HEADER => 0,            
  CURLOPT_RETURNTRANSFER => 1,   
  CURLOPT_URL => $url,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POST => 1,             
  CURLOPT_POSTFIELDS => $post_data, 
 );

 if ( !empty($opt) ) {
  foreach ($opt as $key => $value) {
  $setopt[$key] = $value;
  }
 }

 $curl = curl_init($url);

 foreach ($setopt as $key => $value) {
  curl_setopt($curl, $key, $value );
 }

 $responseText = curl_exec($curl);

 curl_close($curl);

 return $responseText;
 }

 /**
 * GET 方式
 * @param stinrg $url GET 的url
 * @param array $opt GET 的选项
 * @return mixed 
 */
 private function HttpGet($url, $opt = array()) 
 {
 $setopt = array(
  CURLOPT_HEADER => 0,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL => $url
 );

 if ( !empty($opt) ) {
  foreach ($opt as $key => $value) {
  $setopt[$key] = $value;
  }
 }

 $curl = curl_init($url);

 foreach ($setopt as $key => $value) {
  curl_setopt($curl, $key, $value );
 }

 $responseText = curl_exec($curl);

 curl_close($curl);

 return $responseText;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php中支持多种编码的中文字符串截取函数!
Mar 20 PHP
PHP中$_SERVER的详细参数与说明
Jul 29 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
php获取随机数组列表的方法
Nov 13 PHP
PHP使用递归生成文章树
Apr 21 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
PHPMailer发送邮件
Dec 28 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
Thinkphp微信公众号支付接口
Aug 04 #PHP
浅析Laravel5中队列的配置及使用
Aug 04 #PHP
PHP中如何判断exec函数执行成功?
Aug 04 #PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 #PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 #PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 #PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 #PHP
You might like
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
javascript 小型动画组件与实现代码
2010/06/02 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
WordPress网站性能优化指南
2015/11/18 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
pycharm实现猜数游戏
2020/12/07 Python
Python 实现一个简单的web服务器
2021/01/03 Python
shell程序中如何注释
2012/02/17 面试题
乡下人家教学反思
2014/02/01 职场文书
节电标语大全
2014/06/23 职场文书
同事打架检讨书
2015/05/06 职场文书
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
PyTorch中的torch.cat简单介绍
2022/03/17 Python