小程序码分享及文件流转换

需求:用户点生成二维码,然后生成小程序二维码,然后下个用户扫一下成为被扫者的下级。
难点:图片文件流流的转换(新建文件,写入文件流,其实就是一堆乱码)

 // 获得小程序分享二维码
    public function shares(){
        $appId = 'wx0f1aa594555ac1b278f';
        $secret = 'ed495f43312b53eb69b844f391d2ff33a05';
        $code = input('code');

        $weChat = new WeChat($appId, $secret);
        // 获得openid
        $openId = $weChat->getOpenId($code);
        $openId = isset($openId['openid']) ? $openId['openid'] : '';
        // 如果code能换回openid
        if ($openId) {
        // 查询该用户有没有点过生成小程序码
            $qrcode = db('user')
                ->field('qrcode')
                ->where('openid',$openId)
                ->find();
            // 如果没有生成过小程序码
            if($qrcode['qrcode']){
                return jsonReturn(CommonModel::CODE_200,CommonModel::MSG_200,$qrcode);
            }else{
                // 获得access_key
                $accessTokenOpenid = $weChat->getAccessToken($code);
                $accessToken = $accessTokenOpenid['access_token'];
                // 获得小程序吗,这个返回的是数组
                $info = $weChat->getWxacode($accessToken,'pages/index?query='.$openId);
                $info = $info[1];
                //保存地址
                $imgDir = 'img/qrcode/';
                //要生成的新图片名字
                $filename = md5(time().mt_rand(10, 99)).".png";
                // 组成路径加名称
                $newFilePath = $imgDir.$filename;
                $res = file_put_contents($newFilePath,$info);
                $qiniuUrl = CommonModel::upload($newFilePath);
                if($res){
                    db('user')
                        ->where('openid',$openId)
                        ->update(['qrcode'=>$qiniuUrl]);
                }
                return jsonReturn(CommonModel::CODE_200,CommonModel::MSG_200,$qiniuUrl);
            }
        }else{
            return jsonReturn(CommonModel::CODE_404, CommonModel::MSG_404);
        }
    }
posted @ 2018-06-01 13:59  蜗牛使劲冲  阅读(6)  评论(0编辑  收藏  举报  来源