好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php版微信公众平台账号自定义菜单类 - php类库

php版微信公众平台账号自定义菜单类

微信公众平台服务号可申请自定义菜单了,其它的号暂时不支持自定义菜单了,这个不但可以使用api来操作,还可以直接在后台定义菜单与参数哦。

申请自定义菜单

服务号可以申请自定义菜单,使用QQ登录的公众号,可以升级为邮箱登录,使用邮箱登录的公众号,可以修改登录邮箱,群发消息可以同步到腾讯微博.

微信公众平台账号api程序

<?php  //define your token   define( "TOKEN" ,  "chenxiang" ); //改成自己的TOKEN   define( 'APP_ID' ,  '' ); //改成自己的APPID   define( 'APP_SECRET' ,  '' ); //改成自己的APPSECRET     $wechatObj  =  new  wechatCallbackapiTest(APP_ID,APP_SECRET);  $wechatObj ->Run();    class  wechatCallbackapiTest  {       private   $fromUsername ;       private   $toUsername ;       private   $times ;       private   $keyword ;       private   $app_id ;       private   $app_secret ;                   public   function  __construct( $appid , $appsecret )      {          # code...           $this ->app_id =  $appid ;           $this ->app_secret =  $appsecret ;      }       public   function  valid()      {           $echoStr  =  $_GET [ "echostr" ];           if ( $this ->checkSignature()){               echo   $echoStr ;               exit ;          }      }       /**        * 运行程序        * @param string $value [description]        */        public   function  Run()      {           $this ->responseMsg();           $arr []=  "您好,这是自动回复,我现在不在,有事请留言,我会尽快回复你的^_^" ;           echo   $this ->make_xml( "text" , $arr );      }       public   function  responseMsg()      {              $postStr  =  $GLOBALS [ "HTTP_RAW_POST_DATA" ]; //返回回复数据            if  (! empty empty ( $postStr )){                   $access_token  =  $this ->get_access_token(); //获取access_token                    $this ->createmenu( $access_token ); //创建菜单                    //$this->delmenu($access_token);//删除菜单                    $postObj  = simplexml_load_string( $postStr ,  'SimpleXMLElement' , LIBXML_NOCDATA);                   $this ->fromUsername =  $postObj ->FromUserName; //发送消息方ID                    $this ->toUsername =  $postObj ->ToUserName; //接收消息方ID                    $this ->keyword = trim( $postObj ->Content); //用户发送的消息                    $this ->times = time(); //发送时间                    $MsgType  =  $postObj ->MsgType; //消息类型                    if ( $MsgType == 'event' ){                       $MsgEvent  =  $postObj ->Event; //获取事件类型                        if  ( $MsgEvent == 'subscribe' ) { //订阅事件                            $arr [] =  "你好,我是xxx,现在我们是好友咯![愉快][玫瑰]" ;                           echo   $this ->make_xml( "text" , $arr );                           exit ;                      } elseif  ( $MsgEvent == 'CLICK' ) { //点击事件                            $EventKey  =  $postObj ->EventKey; //菜单的自定义的key值,可以根据此值判断用户点击了什么内容,从而推送不同信息                            $arr [] =  $EventKey ;                           echo   $this ->make_xml( "text" , $arr );                           exit ;                      }                  }          } else  {               echo   "this a file for weixin API!" ;               exit ;          }      }       /**        * 获取access_token        */        private   function  get_access_token()      {           $url  =  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this ->app_id. "&secret=" . $this ->app_secret;           $data  = json_decode( file_get_contents ( $url ),true);           if ( $data [ 'access_token' ]){               return   $data [ 'access_token' ];          } else {               return   "获取access_token错误" ;          }      }       /**        * 创建菜单        * @param $access_token 已获取的ACCESS_TOKEN        */        public   function  createmenu( $access_token )      {           $url  =  "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $access_token ;           $arr  =  array (                'button'  => array (                   array (                       'name' =>urlencode( "生活查询" ),                       'sub_button' => array (                           array (                               'name' =>urlencode( "天气查询" ),                               'type' => 'click' ,                               'key' => 'VCX_WEATHER'                           ),                           array (                               'name' =>urlencode( "身份证查询" ),                               'type' => 'click' ,                               'key' => 'VCX_IDENT'                           )                      )                  ),                   array (                       'name' =>urlencode( "轻松娱乐" ),                       'sub_button' => array (                           array (                               'name' =>urlencode( "刮刮乐" ),                               'type' => 'click' ,                               'key' => 'VCX_GUAHAPPY'                           ),                           array (                               'name' =>urlencode( "幸运大转盘" ),                               'type' => 'click' ,                               'key' => 'VCX_LUCKPAN'                           )                      )                  ),                   array (                       'name' =>urlencode( "我的信息" ),                       'sub_button' => array (                           array (                               'name' =>urlencode( "关于我" ),                               'type' => 'click' ,                               'key' => 'VCX_ABOUTME'                           ),                           array (                               'name' =>urlencode( "工作信息" ),                               'type' => 'click' ,                               'key' => 'VCX_JOBINFORMATION'                           )                      )                  )              )          );           $jsondata  = urldecode(json_encode( $arr ));           $ch  = curl_init();          curl_setopt( $ch ,CURLOPT_URL, $url );          curl_setopt( $ch ,CURLOPT_RETURNTRANSFER,1);          curl_setopt( $ch ,CURLOPT_POST,1);          curl_setopt( $ch ,CURLOPT_POSTFIELDS, $jsondata );          curl_exec( $ch );          curl_close( $ch );      }       /**        * 查询菜单        * @param $access_token 已获取的ACCESS_TOKEN        */              private   function  getmenu( $access_token )      {          # code...           $url  =  "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" . $access_token ;           $data  =  file_get_contents ( $url );           return   $data ;      }       /**        * 删除菜单        * @param $access_token 已获取的ACCESS_TOKEN        */              private   function  delmenu( $access_token )      {          # code...           $url  =  "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" . $access_token ;           $data  = json_decode( file_get_contents ( $url ),true);           if  ( $data [ 'errcode' ]==0) {              # code...               return  true;          } else {               return  false;          }      }                 /**        *@param type: text 文本类型, news 图文类型        *@param value_arr array(内容),array(ID)        *@param o_arr array(array(标题,介绍,图片,超链接),...小于10条),array(条数,ID)        */              private   function  make_xml( $type , $value_arr , $o_arr = array (0)){           //=================xml header============            $con ="<xml>                      <ToUserName><![CDATA[{ $this ->fromUsername}]]></ToUserName>                      <FromUserName><![CDATA[{ $this ->toUsername}]]></FromUserName>                      <CreateTime>{ $this ->times}</CreateTime>                      <MsgType><![CDATA[{ $type }]]></MsgType>";                                   //=================type content============            switch ( $type ){                           case   "text"  :                    $con .="<Content><![CDATA[{ $value_arr [0]}]]></Content>                      <FuncFlag>{ $o_arr }</FuncFlag>";                 break ;                             case   "news"  :                    $con .="<ArticleCount>{ $o_arr [0]}</ArticleCount>                       <Articles>";                   foreach ( $value_arr   as   $id => $v ){                       if ( $id >= $o_arr [0])  break ;  else  null;  //判断数组数不超过设置数                        $con .="<item>                           <Title><![CDATA[{ $v [0]}]]></Title>                            <Description><![CDATA[{ $v [1]}]]></Description>                           <PicUrl><![CDATA[{ $v [2]}]]></PicUrl>                           <Url><![CDATA[{ $v [3]}]]></Url>                           </item>";                  }                   $con .="</Articles>                       <FuncFlag>{ $o_arr [1]}</FuncFlag>";                 break ;                        }  //end switch                         //=================end return============            $con .= "</xml>" ;                      return   $con ;      }             private   function  checkSignature()      {           $signature  =  $_GET [ "signature" ];           $timestamp  =  $_GET [ "timestamp" ];           $nonce  =  $_GET [ "nonce" ];                                 $token  = TOKEN;           $tmpArr  =  array ( $token ,  $timestamp ,  $nonce );          sort( $tmpArr );           $tmpStr  = implode(  $tmpArr  );           $tmpStr  = sha1(  $tmpStr  );                     if (  $tmpStr  ==  $signature  ){               return  true;          } else {               return  false;          }      }  }  ?> 

查看更多关于php版微信公众平台账号自定义菜单类 - php类库的详细内容...

  阅读:47次