zoukankan      html  css  js  c++  java
  • 微信公众平台自定义菜单及高级接口PHP SDK

    <?php
    /*
        方倍工作室 http://www.cnblogs.com/txw1958/
        CopyRight 2014 www.doucube.com All Rights Reserved
    */
    
    class class_weixin_adv
    {
        var $appid = "wx197df8cc9c288a59";
        var $appsecret = "26b93788d66d8b49251aa4b897a1b94a";
    
        //构造函数,获取Access Token
        public function __construct($appid = NULL, $appsecret = NULL)
        {
            if($appid){
                $this->appid = $appid;
            }
            if($appsecret){
                $this->appsecret = $appsecret;
            }
    
            //hardcode
            $this->lasttime = 1395049256;
            $this->access_token = "nRZvVpDU7LxcSi7GnG2LrUcmKbAECzRf0NyDBwKlng4nMPf88d34pkzdNcvhqm4clidLGAS18cN1RTSK60p49zIZY4aO13sF-eqsCs0xjlbad-lKVskk8T7gALQ5dIrgXbQQ_TAesSasjJ210vIqTQ";
    
            if (time() > ($this->lasttime + 7200)){
                $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;
                $res = $this->https_request($url);
                $result = json_decode($res, true);
                //save to Database or Memcache
                $this->access_token = $result["access_token"];
                $this->lasttime = time();
            }
        }
    
        //获取关注者列表
        public function get_user_list($next_openid = NULL)
        {
            $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token."&next_openid=".$next_openid;
            $res = $this->https_request($url);
            return json_decode($res, true);
        }
    
        //获取用户基本信息
        public function get_user_info($openid)
        {
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
            $res = $this->https_request($url);
            return json_decode($res, true);
        }
    
        //创建菜单
        public function create_menu($data)
        {
            $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this->access_token;
            $res = $this->https_request($url, $data);
            return json_decode($res, true);
        }
    
        //发送客服消息,已实现发送文本,其他类型可扩展
        public function send_custom_message($touser, $type, $data)
        {
            $msg = array('touser' =>$touser);
            switch($type)
            {
                case 'text':
                    $msg['msgtype'] = 'text';
                    $msg['text']    = array('content'=> urlencode($data));
                    break;
            }
            $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->access_token;
            return $this->https_request($url, urldecode(json_encode($msg)));
        }
    
        //生成参数二维码
        public function create_qrcode($scene_type, $scene_id)
        {
            switch($scene_type)
            {
                case 'QR_LIMIT_SCENE': //永久
                    $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
                    break;
                case 'QR_SCENE':       //临时
                    $data = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$scene_id.'}}}';
                    break;
            }
            $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->access_token;
            $res = $this->https_request($url, $data);
            $result = json_decode($res, true);
            return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($result["ticket"]);
        }
        
        //创建分组
        public function create_group($name)
        {
            $data = '{"group": {"name": "'.$name.'"}}';
            $url = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=".$this->access_token;
            $res = $this->https_request($url, $data);
            return json_decode($res, true);
        }
        
        //移动用户分组
        public function update_group($openid, $to_groupid)
        {
            $data = '{"openid":"'.$openid.'","to_groupid":'.$to_groupid.'}';
            $url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=".$this->access_token;
            $res = $this->https_request($url, $data);
            return json_decode($res, true);
        }
        
        //上传多媒体文件
        public function upload_media($type, $file)
        {
            $data = array("media"  => "@".dirname(__FILE__).'\'.$file);
            $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=".$this->access_token."&type=".$type;
            $res = $this->https_request($url, $data);
            return json_decode($res, true);
        }
    
        //https请求(支持GET和POST)
        protected function https_request($url, $data = null)
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            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;
        }
    }
    
    //初始化对象
    $weixin = new class_weixin_adv("wx197df8cc9c288a59", "26b93788d66d8b49251aa4b897a1b94a");
    //查看Access Token
    var_dump($weixin->access_token);
    //创建二维码
    var_dump($weixin->create_qrcode("QR_SCENE", "134324234"));
    //获取关注者列表
    var_dump($weixin->get_user_list());
    //获取用户信息
    $openid = "oLVPpjkttuZTbwDwN7vjHNlqsmPs";
    var_dump($weixin->get_user_info($openid));
    //创建菜单
    $data ='{"button":[{"name":"方倍工作室","sub_button":[{"type":"click","name":"公司简介","key":"公司简介"},{"type":"click","name":"社会责任","key":"社会责任"},{"type":"click","name":"联系我们","key":"联系我们"}]},{"name":"产品服务","sub_button":[{"type":"click","name":"微信平台","key":"微信平台"},{"type":"click","name":"微博应用","key":"微博应用"},{"type":"click","name":"手机网站","key":"手机网站"}]},{"name":"技术支持","sub_button":[{"type":"click","name":"文档下载","key":"文档下载"},{"type":"click","name":"技术社区","key":"技术社区"},{"type":"click","name":"服务热线","key":"服务热线"}]}]}';
    var_dump($weixin->create_menu($data));
    //用户分组 
    var_dump($weixin->create_group("老师"));
    var_dump($weixin->update_group($openid, "100"));
    //上传下载多媒体
    var_dump($weixin->upload_media("image","pondbay.jpg"));
    //发送客服消息
    var_dump($weixin->send_custom_message($openid, "text", "asdf"));
    
  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/yyjie/p/7341063.html
Copyright © 2011-2022 走看看