首页 > 代码库 > 微信开发只 二维码生成类库

微信开发只 二维码生成类库

最近weiphp 二次开真的有点累,漏洞百出。代码维护代价有点高。

<?php/** * Created by PhpStorm. * User: bin * Date: 15-1-16 * Time: 上午9:48 */namespace Home\Common;// 微信处理类set_time_limit(30);class Weixin{    //构造方法    static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?";    static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";    static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?";    //生成二维码    public function getEwm($wechatid,$fqid,$type = 1){        $wechat = M(Member_public)->where(array(id=> $wechatid))->find();        $appid = $wechat[appid];        $secret = $wechat[secret];        $ACCESS_TOKEN = $this->getToken($appid,$secret);        $url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,1);        return DownLoadQr($url,time());    }    protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){        $url = self::$qrcode_url.access_token=.$ACCESS_TOKEN;        if($type == 1){            //生成永久二维码            $qrcode=  {"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": .$fqid.}}};        }else{            //生成临时二维码            $qrcode = {"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": .$fqid.}}};        }        $result = $this->http_post_data($url,$qrcode);        $oo = json_decode($result[1]);        if(!$oo->ticket){            $this->ErrorLogger(getQrcodeurl falied. Error Info: getQrcodeurl get failed);            exit();        }        $url = self::$qrcode_get_url.ticket=.$oo->ticket.‘‘;        return $url;    }    protected function getToken($appid,$secret){        $ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret");        $ACCESS_TOKEN = json_decode($ACCESS_TOKEN);        $ACCESS_TOKEN = $ACCESS_TOKEN->access_token;        return $ACCESS_TOKEN;    }    protected function http_post_data($url, $data_string) {        $ch = curl_init();        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                Content-Type: application/json; charset=utf-8,                Content-Length:  . strlen($data_string))        );        ob_start();        curl_exec($ch);        if (curl_errno($ch)) {            $this->ErrorLogger(curl falied. Error Info: .curl_error($ch));        }        $return_content = ob_get_contents();        ob_end_clean();        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);        return array($return_code, $return_content);    }    //下载二维码到服务器    protected function DownLoadQr($url,$filestring){        if($url == ""){            return false;        }        $filename = $filestring..jpg;        ob_start();        readfile($url);        $img=ob_get_contents();        ob_end_clean();        $size=strlen($img);        $fp2=fopen(./Uploads/qrcode/.$filename,"a");        if(fwrite($fp2,$img) === false){            $this->ErrorLogger(dolwload image falied. Error Info: 无法写入图片);            exit();        }        fclose($fp2);        return ./Uploads/qrcode/.$filename;    }    private function ErrorLogger($errMsg){        $logger = fopen(./ErrorLog.txt, a+);        fwrite($logger, date(Y-m-d H:i:s)." Error Info : ".$errMsg."\r\n");    }}

 

微信开发只 二维码生成类库