|  |  |  | @ -1,6 +1,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  | <?php | 
			
		
	
		
			
				
					|  |  |  |  | namespace LaneWeChat\Core; | 
			
		
	
		
			
				
					|  |  |  |  | class Popularize{ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class Popularize { | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 生成带参数的二维码 - 第一步 创建二维码ticket | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
	
		
			
				
					|  |  |  | @ -14,25 +15,19 @@ class Popularize{ | 
			
		
	
		
			
				
					|  |  |  |  |      * @param int $expireSeconds 过期时间,只在类型为临时二维码时有效。最大为1800,单位秒 | 
			
		
	
		
			
				
					|  |  |  |  |      * @param int $sceneId 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000) | 
			
		
	
		
			
				
					|  |  |  |  |      * @return array 返回创建二维码ticket的结果 | 
			
		
	
		
			
				
					|  |  |  |  |      *      //获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。 | 
			
		
	
		
			
				
					|  |  |  |  |      *      "ticket"=>"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==", | 
			
		
	
		
			
				
					|  |  |  |  |      *      //二维码的有效时间,以秒为单位。最大不超过1800。 | 
			
		
	
		
			
				
					|  |  |  |  |      *      "expire_seconds"=>60, | 
			
		
	
		
			
				
					|  |  |  |  |      *      //二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 | 
			
		
	
		
			
				
					|  |  |  |  |      *      "url"=>"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI" | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function createTicket($type, $expireSeconds, $sceneId){ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function createTicket($type, $expireSeconds, $sceneId) { | 
			
		
	
		
			
				
					|  |  |  |  |         // 拼接请求URL,使用AccessToken::getAccessToken()获取access_token | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.AccessToken::getAccessToken(); | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . AccessToken::getAccessToken(); | 
			
		
	
		
			
				
					|  |  |  |  |         // 请求方法为POST | 
			
		
	
		
			
				
					|  |  |  |  |         $queryAction = 'POST'; | 
			
		
	
		
			
				
					|  |  |  |  |         // 初始化模板数组 | 
			
		
	
		
			
				
					|  |  |  |  |         $template = array(); | 
			
		
	
		
			
				
					|  |  |  |  |         // 根据二维码类型设置模板参数 | 
			
		
	
		
			
				
					|  |  |  |  |         if($type == 1){ | 
			
		
	
		
			
				
					|  |  |  |  |         if ($type == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |             $template['expire_seconds'] = $expireSeconds; // 设置临时二维码的有效时间 | 
			
		
	
		
			
				
					|  |  |  |  |             $template['action_name'] = 'QR_SCENE'; // 设置动作名称为QR_SCENE | 
			
		
	
		
			
				
					|  |  |  |  |         }else{ | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             $template['action_name'] = 'QR_LIMIT_SCENE'; // 设置动作名称为QR_LIMIT_SCENE | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         // 设置场景ID | 
			
		
	
	
		
			
				
					|  |  |  | @ -49,15 +44,15 @@ class Popularize{ | 
			
		
	
		
			
				
					|  |  |  |  |      * @param string $filename 文件路径,如果不为空,则会创建一个图片文件,二维码文件为jpg格式,保存到指定的路径 | 
			
		
	
		
			
				
					|  |  |  |  |      * @return string 直接echo本函数的返回值,并在调用页面添加header('Content-type: image/jpg');,将会展示出一个二维码的图片。 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function getQrcode($ticket, $filename=''){ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function getQrcode($ticket, $filename='') { | 
			
		
	
		
			
				
					|  |  |  |  |         // 拼接请求URL,使用urlencode()对ticket进行URL编码 | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket); | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket); | 
			
		
	
		
			
				
					|  |  |  |  |         // 请求方法为GET | 
			
		
	
		
			
				
					|  |  |  |  |         $queryAction = 'GET'; | 
			
		
	
		
			
				
					|  |  |  |  |         // 调用Curl::callWebServer()方法发送请求并获取结果 | 
			
		
	
		
			
				
					|  |  |  |  |         $result = Curl::callWebServer($queryUrl, '', $queryAction, 0); | 
			
		
	
		
			
				
					|  |  |  |  |         // 如果指定了保存文件名,则将结果保存到文件 | 
			
		
	
		
			
				
					|  |  |  |  |         if(!empty($filename)){ | 
			
		
	
		
			
				
					|  |  |  |  |         if (!empty($filename)) { | 
			
		
	
		
			
				
					|  |  |  |  |             file_put_contents($filename, $result); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         // 返回二维码图片内容或保存结果 | 
			
		
	
	
		
			
				
					|  |  |  | @ -70,21 +65,27 @@ class Popularize{ | 
			
		
	
		
			
				
					|  |  |  |  |      * 将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。 | 
			
		
	
		
			
				
					|  |  |  |  |      * @param string $longUrl 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url | 
			
		
	
		
			
				
					|  |  |  |  |      * @return array 返回短链接结果 | 
			
		
	
		
			
				
					|  |  |  |  |      *      'errcode'=>0, 'errmsg'=>'错误信息', 'short_url'=>'http://t.cn/asdasd' | 
			
		
	
		
			
				
					|  |  |  |  |      *      错误码为0表示正常 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function long2short($longUrl){ | 
			
		
	
		
			
				
					|  |  |  |  |     public static function long2short($longUrl) { | 
			
		
	
		
			
				
					|  |  |  |  |         // 拼接请求URL,使用AccessToken::getAccessToken()获取access_token | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token='.AccessToken::getAccessToken(); | 
			
		
	
		
			
				
					|  |  |  |  |         $queryUrl = 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token=' . AccessToken::getAccessToken(); | 
			
		
	
		
			
				
					|  |  |  |  |         // 请求方法为POST | 
			
		
	
		
			
				
					|  |  |  |  |         $queryAction = 'POST'; | 
			
		
	
		
			
				
					|  |  |  |  |         // 初始化模板数组 | 
			
		
	
		
			
				
					|  |  |  |  |         $template = array(); | 
			
		
	
		
			
				
					|  |  |  |  |         // 设置长链接 | 
			
		
	
		
			
				
					|  |  |  |  |         $template['long_url'] = $longUrl; | 
			
		
	
		
			
				
					|  |  |  |  |         // 设置动作名称为long2short | 
			
		
	
		
			
				
					|  |  |  |  |         $template['action'] = 'long2short'; | 
			
		
	
		
			
				
					|  |  |  |  |         // 调用Curl::callWebServer()方法发送请求并返回结果 | 
			
		
	
		
			
				
					|  |  |  |  |         return Curl::callWebServer($queryUrl, '', $queryAction); | 
			
		
	
		
			
				
					|  |  |  |  |         return Curl::callWebServer($queryUrl, json_encode($template), $queryAction); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 | 
			
		
	
		
			
				
					|  |  |  |  | 类定义:class Popularize 定义了一个用于生成带参数的二维码和长链接转换的类。 | 
			
		
	
		
			
				
					|  |  |  |  | createTicket方法:创建二维码ticket。根据二维码类型(临时或永久)设置参数,并发送POST请求获取ticket。 | 
			
		
	
		
			
				
					|  |  |  |  | getQrcode方法:通过ticket换取二维码。发送GET请求获取二维码图片,并可选择保存到文件。 | 
			
		
	
		
			
				
					|  |  |  |  | long2short方法:将长链接转换为短链接。发送POST请求将长链接转换为短链接,以提高扫码速度和成功率。 | 
			
		
	
		
			
				
					|  |  |  |  | 命名空间声明:namespace LaneWeChat\Core; 定义了类的命名空间,表明这个类属于LaneWeChat模块的核心部分。 | 
			
		
	
		
			
				
					|  |  |  |  | 类定义:class Popularize 定义了一个用于生成带参数的二维码和长链接转换的类。 | 
			
		
	
		
			
				
					|  |  |  |  | createTicket方法:创建二维码ticket。根据二维码类型(临时或永久)设置参数,并发送POST请求获取ticket。 | 
			
		
	
		
			
				
					|  |  |  |  | getQrcode方法:通过ticket换取二维码。发送GET请求获取二维码图片,并可选择保存到文件。 | 
			
		
	
		
			
				
					|  |  |  |  | long2short方法:将长链接转换为短链接。发送POST请求将长链接转换为短链接,以提高扫码速度和成功率。 |