VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP微信开发之二维码生成类

这篇文章主要介绍了PHP微信开发之二维码生成类,本文使用微信接口实现二维码的生成,并直接给出示例代码,需要的朋友可以参考下。

  1. <?php 
  2. /** 
  3.  * Created by PhpStorm. 
  4.  * User: bin 
  5.  * Date: 15-1-16 
  6.  * Time: 上午9:48 
  7.  */ 
  8. namespace Home\Common; 
  9.  
  10. // 微信处理类 
  11. set_time_limit(30); 
  12. class Weixin{ 
  13.   //构造方法 
  14.   static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
  15.   static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&"
  16.   static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?"
  17.  
  18.   //生成二维码 
  19.   public function getEwm($wechatid,$fqid,$type = 1){ 
  20.     $wechat = M('Member_public')->where(array('id'=> $wechatid))->find(); 
  21.     $appid = $wechat['appid']; 
  22.     $secret = $wechat['secret']; 
  23.     $ACCESS_TOKEN = $this->getToken($appid,$secret); 
  24.     $url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,1); 
  25.     return DownLoadQr($url,time()); 
  26.   } 
  27.   protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){ 
  28.     $url = self::$qrcode_url.'access_token='.$ACCESS_TOKEN
  29.     if($type == 1){ 
  30.       //生成永久二维码 
  31.       $qrcode'{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$fqid.'}}}'
  32.     }else
  33.       //生成临时二维码 
  34.       $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$fqid.'}}}'
  35.     } 
  36.     $result = $this->http_post_data($url,$qrcode); 
  37.     $oo = json_decode($result[1]); 
  38.     if(!$oo->ticket){ 
  39.       $this->ErrorLogger('getQrcodeurl falied. Error Info: getQrcodeurl get failed'); 
  40.       exit(); 
  41.     } 
  42.     $url = self::$qrcode_get_url.'ticket='.$oo->ticket.''
  43.     return $url
  44.  
  45.   } 
  46.  
  47.   protected function getToken($appid,$secret){ 
  48.     $ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret"); 
  49.     $ACCESS_TOKEN = json_decode($ACCESS_TOKEN); 
  50.     $ACCESS_TOKEN = $ACCESS_TOKEN->access_token; 
  51.     return $ACCESS_TOKEN
  52.   } 
  53.   protected function http_post_data($url$data_string) { 
  54.  
  55.     $ch = curl_init(); 
  56.     curl_setopt($ch, CURLOPT_POST, 1); 
  57.     curl_setopt($ch, CURLOPT_URL, $url); 
  58.     curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); 
  59.     curl_setopt($ch, CURLOPT_HTTPHEADER, array
  60.         'Content-Type: application/json; charset=utf-8'
  61.         'Content-Length: ' . strlen($data_string)) 
  62.     ); 
  63.     ob_start(); 
  64.     curl_exec($ch); 
  65.     if (curl_errno($ch)) { 
  66.       $this->ErrorLogger('curl falied. Error Info: '.curl_error($ch)); 
  67.     } 
  68.     $return_content = ob_get_contents(); 
  69.     ob_end_clean(); 
  70.     $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
  71.     return array($return_code$return_content); 
  72.   } 
  73.   //下载二维码到服务器 
  74.   protected function DownLoadQr($url,$filestring){ 
  75.     if($url == ""){ 
  76.       return false; 
  77.     } 
  78.     $filename = $filestring.'.jpg'
  79.     ob_start(); 
  80.     readfile($url); 
  81.     $img=ob_get_contents(); 
  82.     ob_end_clean(); 
  83.     $size=strlen($img); 
  84.     $fp2=fopen('./Uploads/qrcode/'.$filename,"a"); 
  85.     if(fwrite($fp2,$img) === false){ 
  86.       $this->ErrorLogger('dolwload image falied. Error Info: 无法写入图片'); 
  87.       exit(); 
  88.     } 
  89.     fclose($fp2); 
  90.     return './Uploads/qrcode/'.$filename
  91.   } 
  92.  
  93.   private function ErrorLogger($errMsg){ 
  94.     $logger = fopen('./ErrorLog.txt''a+'); 
  95.     fwrite($loggerdate('Y-m-d H:i:s')." Error Info : ".$errMsg."\r\n"); 
  96.   } 
  97.  
  98. }
  99.  

出处:http://www.phpfensi.com/php/20210604/16090.html


相关教程