132 行
3.9 KiB
PHP
可执行文件
132 行
3.9 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Common\Business;
|
|
|
|
//[1.6.9]
|
|
|
|
/**
|
|
* 创建文件类
|
|
* Class CreateFile
|
|
* [
|
|
* 创建二维码 createQRCode
|
|
* 创建微信券码 createWxCode
|
|
* 创建微信券码发出请求 wxCodeHttp
|
|
* 生成文件目录 createDir
|
|
* ]
|
|
* @package Common\Business
|
|
*/
|
|
class CreateFile
|
|
{
|
|
/**
|
|
* 创建二维码
|
|
* @param $url 链接
|
|
* @param int $size 最大10最小1
|
|
* @param $file_path 存放码的文件路径
|
|
* @param string $level 控制二维码容错率,不同的参数表示二维码可被覆盖的区域百分比
|
|
* @return bool
|
|
*/
|
|
public function createQRCode($url, $size = 10, $file_path, $level = 'L')
|
|
{
|
|
if (empty($url) || empty($size) || empty($file_path) || empty($level)) {
|
|
return false;
|
|
}
|
|
try {
|
|
vendor("phpqrcode.phpqrcode");
|
|
$size = min(max((int)$size, 1), 10);
|
|
\QRcode::png($url, $file_path, $level, $size, 2); //第五各参数表示空白区域
|
|
if (file_exists($file_path)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
} catch (\Exception $e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 创建微信券码
|
|
* @param $param
|
|
* [
|
|
* path 跳转的小程序路径
|
|
* width 图片宽度
|
|
* merchant_id
|
|
* file_name
|
|
* ]
|
|
* @return mixed
|
|
*/
|
|
public function createWxCode($param)
|
|
{
|
|
if (empty($param['merchant_id']) || empty($param['path']) || empty($param['file_name'])) {
|
|
return callBack(statusCode()['error'], "缺少必要参数");
|
|
}
|
|
$param['width'] = $param['width'] ? $param['width'] : 430;
|
|
$post_data = '{"path":"' . $param['path'] . '","width":' . $param['width'] . '}';
|
|
$access_token = get_authorizer_access_tokens($param['merchant_id']);
|
|
$url = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" . $access_token;
|
|
$result = $this->wxCodeHttp($url, $post_data);
|
|
try {
|
|
$res = json_decode($result, true);
|
|
if (is_array($res)) {
|
|
return callBack(statusCode()['error'], $res['errmsg']);
|
|
}
|
|
} catch (\Exception $e) {
|
|
|
|
}
|
|
$arr = explode('/', $param['file_name']);
|
|
unset($arr[count($arr) - 1]);
|
|
$file_path = implode('/', $arr);
|
|
$this->createDir($file_path);
|
|
file_put_contents($param['file_name'], $result);
|
|
return callBack(statusCode()['success'], '图片生成成功');
|
|
}
|
|
|
|
/**
|
|
* 创建微信券码发出请求
|
|
* @param $url
|
|
* @param $data
|
|
* @return bool|string
|
|
*/
|
|
public function wxCodeHttp($url, $data)
|
|
{
|
|
$ch = curl_init();
|
|
$header = "Accept-Charset: utf-8";
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
|
|
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
|
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
|
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$tmpInfo = curl_exec($ch);
|
|
if (curl_errno($ch)) {
|
|
return false;
|
|
} else {
|
|
return $tmpInfo;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 生成文件目录
|
|
* @param $directory_name 目录地址
|
|
*/
|
|
public function createDir($directory_name)
|
|
{
|
|
if (!is_dir($directory_name)) {
|
|
$temp = ltrim($directory_name, './');
|
|
$arr = explode('/', $temp);
|
|
$str = '.';
|
|
foreach ($arr as $key => $sv) {
|
|
if (!is_dir("{$str}/{$sv}")) {
|
|
mkdir("{$str}/{$sv}", 0777);
|
|
}
|
|
$str = "{$str}/{$sv}";
|
|
}
|
|
}
|
|
}
|
|
} |