• 微信公众平台自定义菜单及高级接口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"));
    
  • 相关阅读:
    vi编辑器命令大全
    Ubuntu环境搭建svn服务器
    Visual Studio中“后期生成事件命令行” 中使用XCopy命令
    解决 Visual Studio For Mac 还原包失败问题
    [Win10应用开发] 如何使用Windows通知
    [Win10应用开发] 使用 Windows 推送服务
    如何使用 PsExec 执行远程命令
    如何在调试Window App时,触发 Suspending ,Resuming 等事件
    如何 “解决” WPF中空域问题(Airspace issuse)
    浅谈可扩展性框架:MEF
  • 原文地址:https://www.cnblogs.com/yyjie/p/7341063.html
Copyright © 2020-2023  润新知