- 下载腾讯云COS的SDK文件放到extend目录下
public function createAppletCode()
{
$appletCode = input('code');
checkParam(['code' => $appletCode, 0, 0]);
$uid = $this->userInfo['userId'];
$check = Db::name('admin_user_config')->where(['uid' => $uid])->value('applet_code');
if (!empty($check)) {
exit;
}
$appid = urlencode('wx**********1a');
$secret = urlencode('43*******************5t');
$url_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $secret;
$json_access_token = $this->sendCmd($url_access_token, array());
$arr_access_token = json_decode($json_access_token, true);
$access_token = $arr_access_token['access_token'];
$start = '' . mt_rand(1000, 9999) . '';
$end = '' . mt_rand(1000, 9999) . '';
$newUid = $start . $uid . $end;
if (!empty($access_token)) {
$url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token=' . $access_token;
$data = '{"path": "pages1/landing/land?uid=' . $newUid . '", "width": 350}';
$result = $this->sendCmd($url, $data);
$name = $uid . '.png';
$path = ROOT_PATH . "/public/qrcode/userapi";
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
$imageSrc = $path . "/" . $name;
file_put_contents($imageSrc, $result);
$commonController = controller('Common');
$result = $commonController->myqcloudCosUpload($imageSrc);
if ($result['code'] == 0) {
$checkConfig = Db::name('admin_user_config')->where(['uid' => $uid])->find();
$configData['applet_code'] = $result['src'];
if (!$checkConfig) {
$configData['uid'] = $uid;
Db::name('admin_user_config')->insert($configData);
} else {
Db::name('admin_user_config')->where(['uid' => $uid])->update($configData);
}
}
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无数据'));
exit;
}
}
function sendCmd($url, $data)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($curl);
if (curl_errno($curl)) {
echo 'Errno' . curl_error($curl);
}
curl_close($curl);
return $tmpInfo;
}
function myqcloudCosUpload($filePath)
{
$directory = mime_content_type($filePath);
$directory = $directory;
$suffix = basename($filePath);
$directory = explode("/", $directory);
$suffix = explode(".", $suffix);
$infoData['pathname'] = $filePath;
$infoData['saveName'] = '/' . $directory[0] . '/' . date('Ymd', time()) . time() . '.' . $suffix[1];
\think\Loader::import('tencentCloud.vendor.autoload');
$cosClient = new \Qcloud\Cos\Client(
array(
'region' => 'ap-shenzhen-fsi',
'credentials' => array(
'appId' => Config('tencentCloud.appId'),
'secretId' => Config('tencentCloud.secretId'),
'secretKey' => Config('tencentCloud.secretKey'),
)
)
);
$file = $filePath;
try {
$data = array('Bucket' => Config('tencentCloud.bucket'), 'Key' => $infoData['saveName'], 'Body' => fopen($file, 'rb'));
$result = $cosClient->Upload($data['Bucket'], $data['Key'], $data['Body']);
if ($result) {
unlink($filePath);
$resData['code'] = 0;
$resData['src'] = "https://" . $result['Location'];;
return $resData;
}
} catch (\Exception $e) {
$resData['code'] = 1;
$resData['src'] = '';
return $resData;
}
}