• php获取accesstoken和二维码的实现方法


    class WeChat{
        private $_appid;
        private $_appsecret;
        private $_token;
        
        public function __construct($_appid,$_appsecret,$_token){
            $this->_appid = $_appid;
            $this->_appsecret = $_appsecret;
            $this->_token = $_token;
        }
        /**
         * 获取页面内容
         * @params $curl   URL
         * @params $https  传输协议 
         * @params $method 请求方法
         * @params $data   传输的数据
         */
        public function _request($curl,$https=true,$method='GET',$data=null){
            $ch = curl_init();//初始化
            curl_setopt($ch,CURLOPT_URL,$curl);//URL
            curl_setopt($ch,CURLOPT_HEADER,false);//
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
            if($https){
                curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
                curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,true);    
            }
            if($method == 'POST'){
                curl_setopt($ch,CURLOPT_POST,true);
                curl_setopt($ch,CURLOPT_POSTFIELDS,$data);    
            }
            $content = curl_exec($ch);
            curl_close($ch);
            return $content;
        }
        /**
         * 获取accesstoken
         */
        public function _getAccessToken(){
            $file = './accesstoken';
            if(file_exists($file)){
                $content = file_get_contents($file);
                $content = json_decode($content);
                if(time() - filemtime($file)<$content->expires_in){
                    return $content->access_token;
                }
            }
            $curl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret;
            $content = $this->_request($curl);
            file_put_contents($file,$content);
            $content = json_decode($content);
            return $content->access_token;    
        }
        /**
         * 获取二维码 1、获取ticket
         * @params $sceneid 场景id
         * @params $type    类型:临时/永久
         * @params $expire_seconds 过期时间604800 7天
         */
        public function _getTicket($sceneid,$type='temp',$expire_seconds=604800){
            if($type == 'temp'){
                $data = '{"expire_seconds": %s, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
                $data = sprintf($data,$expire_seconds,$sceneid);//格式化输出
            }else{
                $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
                $data = sprintf($data,$sceneid);
            }
            $curl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->_getAccessToken();
            $content = $this->_request($curl,true,'POST',$data);
            $content = json_decode($content);
            return $content->ticket;
        }
        /**
         * 获取二维码 1、获取二维码QRCode
         * @params $sceneid 场景id
         * @params $type    类型:临时/永久
         * @params $expire_seconds 过期时间604800 7天
         */
        public function _getQRCode($sceneid,$type = 'temp',$expire_seconds=604800){
            $ticket = $this->_getTicket($sceneid,$type,$expire_seconds);
            $content = $this->_request('https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket));
            return $content;
        }
    }
    $wechat = new WeChat('wxb7e7af838ec6bed2','d4624c36b6795d1d99dcf0547af5443d','');
    //echo $wechat->_request("https://www.baidu.com");//获取页面内容
    //echo $wechat->_getAccessToken();//获取accesstoken
    header('Content-type:image/jpeg');
    echo $wechat->_getQRCode(30);
    If the copyright belongs to the longfei, please indicate the source!!!
  • 相关阅读:
    centos8网络连接(1)虚拟机网卡和网络编辑器设置
    centos7离线安装ruby
    centos7安装ruby-2.6.5,简单快捷的下载与安装方式
    redis 4.0.13 -- 集群模式
    活了
    世界无我
    markdown_test
    关于mimikatz在webshell运行
    可用性自动化V3
    关于sqlmap常用
  • 原文地址:https://www.cnblogs.com/longfeiPHP/p/5119101.html
Copyright © 2020-2023  润新知