Home > Article > Backend Development > PHP WeChat interface implements QR code generation class
This article mainly introduces the QR code generation class implemented by the PHP WeChat interface. Interested friends can refer to it. I hope it will be helpful to everyone.
This article uses the WeChat interface to generate QR codes and directly gives sample codes, as follows:
<?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"); } }
Summary: The above is the entire content of this article , I hope it can be helpful to everyone’s study.
Related recommendations:
Detailed explanation of php’s function for uploading image files
php techniques to implement caching through file storage
php method to dynamically create html code based on array
The above is the detailed content of PHP WeChat interface implements QR code generation class. For more information, please follow other related articles on the PHP Chinese website!