PHP微信开发之二维码生成类

来源:mr007 作者:Jyogetu
PHP

PHP

版本:v7.1.4
大小:21.33MB
分类: 编程工具
立即下载
查看详情
导读: 这篇文章主要介绍了PHP微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下。
PHP微信开发之二维码生成类   这篇文章主要介绍了PHP微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下。   ?   /**   * Created by PhpStorm.   * User: bin   * Date: 15-1-16   * Time: 上午9:48   */   namespace HomeCommon;   // 微信处理类   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."rn");   }   }