TP5生成小程序码并保存到腾讯云COS

  • 下载腾讯云COS的SDK文件放到extend目录下
	/**
     * Describe: 生成小程序码
     * Time: 2021/6/30 10:03 上午
     */
public function createAppletCode()
    {
        $appletCode = input('code');//小程序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');//小程序appid
        $secret = urlencode('43*******************5t');//小程序密钥

        //拿到openid  查找用户表内是否有该用户  没有则拒绝生成二维码   有则查看是否已生成二维码   有生成则发送数据   没有则生成
        $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;
        }
    }
	/**
     * Describe: 发起请求
     * Time: 2021/6/30 10:07 上午
     */
    function sendCmd($url, $data)
    {
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检测
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //解决数据包大不能提交
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'Errno' . curl_error($curl);
        }
        curl_close($curl); // 关键CURL会话
        return $tmpInfo; // 返回数据
    }
/**
     * Describe: 腾讯云Cos -- 上传对象
     * Time: 2021/6/30 10:08 上午
     */
    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];

        //引用COS sdk
        \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'));
            //判断文件大小 大于5M就分块上传
            $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;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oct zz拾月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值