diff --git a/core/popularize.lib.php b/core/popularize.lib.php index f9c3920..670f621 100644 --- a/core/popularize.lib.php +++ b/core/popularize.lib.php @@ -1,13 +1,5 @@ "gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==", * //二维码的有效时间,以秒为单位。最大不超过1800。 * "expire_seconds"=>60, * //二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 * "url"=>"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI" - * ) */ 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(); + // 请求方法为POST $queryAction = 'POST'; + // 初始化模板数组 $template = array(); + // 根据二维码类型设置模板参数 if($type == 1){ - $template['expire_seconds'] = $expireSeconds; - $template['action_name'] = 'QR_SCENE'; + $template['expire_seconds'] = $expireSeconds; // 设置临时二维码的有效时间 + $template['action_name'] = 'QR_SCENE'; // 设置动作名称为QR_SCENE }else{ - $template['action_name'] = 'QR_LIMIT_SCENE'; + $template['action_name'] = 'QR_LIMIT_SCENE'; // 设置动作名称为QR_LIMIT_SCENE } + // 设置场景ID $template['action_info']['scene']['scene_id'] = $sceneId; + // 将模板数组转换为JSON格式 $template = json_encode($template); + // 调用Curl::callWebServer()方法发送请求并返回结果 return Curl::callWebServer($queryUrl, $template, $queryAction); } /** * 生成带参数的二维码 - 第二步 通过ticket换取二维码 - * @param $ticket Popularize::createTicket()获得的 - * @param $filename String 文件路径,如果不为空,则会创建一个图片文件,二维码文件为jpg格式,保存到指定的路径 - * @return 直接echo本函数的返回值,并在调用页面添加header('Content-type: image/jpg');,将会展示出一个二维码的图片。 + * @param string $ticket Popularize::createTicket()获得的ticket + * @param string $filename 文件路径,如果不为空,则会创建一个图片文件,二维码文件为jpg格式,保存到指定的路径 + * @return string 直接echo本函数的返回值,并在调用页面添加header('Content-type: image/jpg');,将会展示出一个二维码的图片。 */ public static function getQrcode($ticket, $filename=''){ + // 拼接请求URL,使用urlencode()对ticket进行URL编码 $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)){ file_put_contents($filename, $result); } + // 返回二维码图片内容或保存结果 return $result; } /** * 将一条长链接转成短链接。 - * 主要使用场景:开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。 - * @param $longUrl String 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url - * @return array('errcode'=>0, 'errmsg'=>'错误信息', 'short_url'=>'http://t.cn/asdasd')错误码为0表示正常 + * 主要使用场景:开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降, + * 将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。 + * @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){ + // 拼接请求URL,使用AccessToken::getAccessToken()获取access_token $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); } } \ No newline at end of file