zoukankan      html  css  js  c++  java
  • php 人人商城 生成 临时微信二维码,并保存成海报图片 有效期一个月

        public function getPoster(){
            global $_W;
            global $_GPC;
    
            $mm = pdo_fetch('select nickname,codetime from ' . tablename('ewei_shop_member') . ' where openid =:openid limit 1', array(':openid' => $_W['openid']));
            
            $path = IA_ROOT . '/addons/ewei_shopv2/data/couponposter/' . $_W['uniacid'] . '/';
            if (!(is_dir($path))) 
            {
                load()->func('file');
                mkdirs($path);
            }
            
    
            $openid = $_W['openid'];
    
            if($mm['codetime'])$mm['codetime'] = date('Ymd');
            $md5 = md5(json_encode(array('openid' => $openid,'version' => 3,'timezone' => $mm['codetime'])));
            $file = $md5 . '.jpg';
    
            
            if(time() > strtotime($mm['codetime']) + 60*60*24*29){
                $aa = unlink($path . $file);
            }
            // var_dump($path . $file);exit;
            if (!(is_file($path . $file))) 
            {
                set_time_limit(0);
                @ini_set('memory_limit', '256M');
                $font = IA_ROOT . '/addons/ewei_shopv2/static/fonts/msyh.ttf';
                $target = imagecreatetruecolor(750, 1334);
                $bc = imagecolorallocate($target, 0, 3, 51);
                $cc = imagecolorallocate($target, 240, 102, 0);
                $wc = imagecolorallocate($target, 255, 255, 255);
                $yc = imagecolorallocate($target, 255, 255, 0);
                $bg = imagecreatefromjpeg(IA_ROOT . '/addons/ewei_shopv2/data/couponposter/poster.jpg');
                imagecopy($target, $bg, 0, 0, 0, 0, 750, 1334);
                imagedestroy($bg);
    
    //             $qrcode_file = tomedia($this->createMyShopQrcode($userinfo['id']));
                $qrcode_url = $this->getCode();
                $qrcode = $this->createImage($qrcode_url);
    
    //             var_dump($qrcode);
                $w = imagesx($qrcode);
                $h = imagesy($qrcode);
                imagecopyresized($target, $qrcode, 215, 600, 0, 0, 320, 320, $w, $h);
                imagedestroy($qrcode);
                
                $str1 = $this->getWords($mm['nickname'],3);
                imagettftext($target, 22, 0, 180, 302, $bc, $font, $str1);
                $str2 = date("Y-m-d",strtotime("+30 day"));
                imagettftext($target, 18, 0, 420, 398, $bc, $font, $str2);
    
                imagejpeg($target, $path . $file);
                imagedestroy($target);
            }
            $srcc = $_W['siteroot'] . 'addons/ewei_shopv2/data/couponposter/' . $_W['uniacid'] . '/' . $file;
            
            $arr = array('code' => 1, 'src' => $srcc);
            show_json(1, $arr);
            
    
        }
    生成海报
        public function getCode(){
            global $_W;
            global $_GPC;
            $sec = m('common')->getSec();
            $sec = iunserializer($sec['sec']);
    
            $appid = $_W['account']['key'];
            $secret = $_W['account']['secret'];
        
            $data['openid'] = $_W['openid'];
              
                require_once('weixin.class.php');
              
                $wx = new weixin($appid,$secret,'');
                
                $mm = pdo_fetch('select id from ' . tablename('ewei_shop_member') . ' where openid=:openid and uniacid=:uniacid limit 1', array(':openid' => $_W['openid'], ':uniacid' => $_W['uniacid']));
                $sceneid=intval($mm['id']);
                if ($sceneid<=0) {
                    echo "error!!";
                } else {
                    $result = $wx->_getQRCode($sceneid);
                    $time = date('Ymd');
                    pdo_update("ewei_shop_member", array("codetime"=>$time), array( "openid" => $_W['openid'] ));
                    
                    return $result;
                }
            
        }
    生成微信二维码
    <?php
    // if (!defined('IN_IA')) {
    //     exit('Access Denied');
    // }
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    class weixin{
        private $appid;
        private $key;
        private $access_token;
        private $jsapi_ticket;
        private $get_access_token_url='https://api.weixin.qq.com/cgi-bin/token?';
        private $menu_url='https://api.weixin.qq.com/cgi-bin/menu/create?access_token=';
        private $menu_delete_url='https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=';
        private $getcode_url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=';
        private $oauth2='https://api.weixin.qq.com/sns/oauth2/access_token?';
        private $jsapi_ticket_time;
        private $access_token_time;
        public $menu;
        public function __construct($appid,$key,$access_token) {
               //$this->extract=  sp_get_option('extract');
               $this->appid=$appid;
               $this->key=$key;
               $this->access_token=$this->get_access_token();//access_token_time
    
        }
        public function get_jsapi_ticket(){
            if($this->$jsapi_ticket_time<time()-7200){
                $url='https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$this->access_token.'&type=jsapi';
                $result=$this->https($url);
                $result=json_decode($result,true);
                if($result['ticket']){
                $this->jsapi_ticket=$result['ticket'];
                $this->$jsapi_ticket_time=time();
                //$res = sp_set_option('extract', $this->extract);
                }
                else{
                    print_r($result);
                    exit();
                }
            }
            return $this->jsapi_ticket;
        }
        public function get_access_token(){
            if($this->access_token_time<time()-7200){
                $url=$this->get_access_token_url."grant_type=client_credential&appid=".$this->appid."&secret=".$this->key;
                $result=$this->https($url);
                $result=json_decode($result,true);
                if($result['access_token']){
                    $this->access_token=$result['access_token'];
                    $this->access_token_time=time();
                    //$res = sp_set_option('extract', $this->extract);
                }
                else{
                    print_r($result);
                    exit();
                }
            }
            return $this->access_token;
        }
        public function get_oauth2($code){
                $url=$this->oauth2."appid=".$this->appid."&secret=".$this->key."&code=".$code."&grant_type=authorization_code";
                $result=$this->https($url);
                $result=json_decode($result,true);
                return $result;
                exit;
        }
    
        public function get_userinfo($openid){
                //需要关注的url
                $url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
                //无需关注
                //$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$this->access_token."&openid=".$openid."&lang=zh_CN";
                $result=$this->https($url);
                $result=json_decode($result,true);
                return $result;
                exit;
        }
        public function get_qrcode($id){
                $url=$this->getcode_url.$this->access_token;
                $data='{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$id.'}}}';
                $result=$this->https($url,$data,'json');
                $result=json_decode($result,true);
                return $result;
                exit;
        }
        public function updata_menu(){
            $url=$this->menu_url.$this->access_token;
            $this->menu=htmlspecialchars_decode($this->menu);
            $data=$this->menu;
            $result=$this->https($url,$data,'json');
            $result=json_decode($result,true);
            return $result;
            exit;
        }
        public function https($url,$data='',$method='get'){
            $ch = curl_init();
            curl_setopt ($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查  
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在  
            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');  
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转  
            curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
            if($method=='POST'){  
            curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求 
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
            if ($data != ''){  
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Post提交的数据包  
                }  
            }       
            curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环  
            if($method=='json'){
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Post提交的数据包  
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
                'Content-Type: application/json; charset=utf-8',  
                'Content-Length: ' . strlen($data))  
            );  
            } 
            else{
                curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容  
            }
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回  
            $file_contents = curl_exec($ch);
            curl_close($ch);
            return $file_contents;
        }
        /** 
         * 首先创建二维码ticket 
         * @param string $sceneid 场景值ID 
         * @param string $type 值为'temp'的时候生成临时二维码 
         * @param string $expire_seconds 二维码过期时间 
         * @return string 二维码ticket 
         */
        public function _getTicket($sceneid,$type='temp',$expire_seconds=604800){ 
            if($type=='temp'){ 
              $data['expire_seconds']=604800;
              $data['action_name']='QR_SCENE';
              $data['action_info']['scene']['scene_id']=$sceneid;
            }else{ 
              $data['action_name']='QR_LIMIT_SCENE';
              $data['action_info']['scene']['scene_id']=$sceneid;
            } 
         
            $args =json_encode($data);
            $curl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->access_token; 
            $content = $this->https($curl,$args,'POST'); 
            $cont = json_decode($content); 
            
            return $cont->ticket; 
        }
        //然后凭借ticket到指定URL换取二维码 
        public function _getQRCode($sceneid,$type='temp1',$expire_seconds=2592000){ 
             $ticket = $this->_getTicket($sceneid,$type,$expire_seconds); 
             $curl = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket); 
             $content = $this->https($curl); 
             return $curl; 
        }
    }
    微信类

  • 相关阅读:
    NVelocity模板引擎用法之模板中直接调用类的方法
    GridView的编辑,更新,取消,删除等功能演示
    页面加载后检查用户登录状态,通过ajax实现
    通过ajax方式实现用户名存在性检查
    各个大神大公司的UED
    ASP.NET中的DataView用法详解
    周期三角脉冲信号的生成_Matlab实现
    课后题:冲激函数习题讨论
    [KeilC51] 有关出栈时sp原子性的疑虑
    [KeilC51]软件简单PWM波生成
  • 原文地址:https://www.cnblogs.com/liiu/p/9922980.html
Copyright © 2011-2022 走看看