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

微信公众帐号 服务号可以使用 自定义菜单功能。之前在创建菜单时一直失败,原因是$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创建自定义菜单、java 创建自定义菜单、创建自定义菜单失败,以便于您获取更多的相关知识。

时间: 2024-08-10 07:47:22

微信自定义菜单的创建/查询/取消php示例代码_php技巧的相关文章

在PHP中利用wsdl创建标准webservice的实现代码_php技巧

1.创建wsdl 说明: A.非标准的webservice,可能只能PHP才能访问 B.标准的webservice,就必须要使用wsdl(webservice description language,就是用XML语法标准来描述你的服务内容,我是这么理解的) 在这里我只介绍标准的webservice. 那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend studio创建很方便,这是一种方法.但对于那些不喜欢用zend studio的人来说,会觉得创建一个webser

php版微信小店调用api示例代码_php技巧

本文实例讲述了php版微信小店调用api的方法.分享给大家供大家参考,具体如下: 刚开始调用微信小店api的时候,可能大家会遇到问题.系统总是提示system error,归根结底还是发送的参数不正确. 下面给出几个调用例子: 例子写得不全. <?php function cUrlRequest($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CU

php实现查询百度google收录情况(示例代码)_php技巧

写了一个小东西记录baidu和google对于站点的收录情况,现在可以查询了,其实也没什么难度,就是去file下远程文件,然后分析下. 对了貌似查google pr的东西只是file一个地址而已,如此说了就没有什么难度了.完整代码如下,file取得文件,分析,输出: 复制代码 代码如下: <?php$seodetail = array();$domain = !empty($_GET['q']) ? $_GET['q'] : 'www.mycodes.net';baidudetail($doma

用php或asp创建网页桌面快捷方式的代码_php技巧

新建一个PHP文档:名字好记就行如:shortcut.php PHP文档中的内容: 代码 复制代码 代码如下: <?php $Shortcut = "[InternetShortcut] URL=http://www.jb51.net/ IDList= [{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 "; Header("Content-type: application/octet-stream");

PHP创建桌面快捷方式的实例代码_php技巧

复制代码 代码如下: $shortCut = "[InternetShortcut]URL=http://www.jb51.netIDList=[{000214A0-0000-0000-C000-000000000046}]Prop3=19,2";Header("Content-type: application/octet-stream");header("Content-Disposition: attachment; filename=JustFly

js动态创建、删除表格示例代码_javascript技巧

生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充. 方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充. 方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串 方法四:拼接表格innerHTML属性的字符串

微信公众帐号开发教程(14) 自定义菜单的创建及菜单事件响应

微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主 要包括: 1)运营主体为组织,可选择成为服务号或者订阅号: 2)服务号可以申请自定义菜单 : 3)使用QQ登录的公众号,可以升级为邮箱登录: 4)使用邮箱登录的公众号,可以修改登录 邮箱: 5)编辑图文消息可选填作者: 6)群发消息可以同步到腾讯微博. 其中,大家 议论最多的当属前两条,就是关于帐号类型和自定义菜单的更新,我这里做几点补充说明: 1)目前公 众号类型分为两种:服务号和订阅号

Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各种第三方平台在这一块做得也比较渣,功能不全不说,界面还很不友好,于是决心重整一版,以满足需求. 下面先上图,新的UI界面如下所示:   如何实现这个功能呢?下面请等我一一道来吧. 左侧树形结构绑定 HTML模板如下所示: <div class="dd" id="nestab

Magcodes.WeiChat——自定义CustomCreationConverter之实现微信自定义菜单的序列化

微信自定义菜单接口是一个比较麻烦的接口,往往开发的小伙伴们看到下面的这段返回JSON,整个人就会不好了:   {"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":