欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-26 19:53:04
微信公众帐号 服务号可以使用 自定义菜单功能。之前在创建菜单时一直失败,原因是$data 格式一直没有传正确,后来终于解决了。这里先记录下 顺便封装了一个类,便于自定义菜单...

微信公众帐号 服务号可以使用 自定义菜单功能。之前在创建菜单时一直失败,原因是$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;
 }
}

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