小程序码分享及文件流转换
需求:用户点生成二维码,然后生成小程序二维码,然后下个用户扫一下成为被扫者的下级。
难点:图片文件流流的转换(新建文件,写入文件流,其实就是一堆乱码)
// 获得小程序分享二维码
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);
}
}