php生成小程序二维码

2 篇文章 0 订阅
2 篇文章 0 订阅

小程序二维码生成

/*
* TODO:生成二维码
*/
public function qrCode_post()
    {
        $username  = $this->post('username');#登陆人
        $grade  = $this->post('grade');#登陆人身份
        $page  = $this->post('page');#对应的path pages/home/home
        $parameter = $this->post('scene');#参数
        #配置
        $APPID = "wx5337e20023bd9c4e";## 标题
        $APPSECRET = "ce13b67bf90d01e33375f265b42b6e3d";
        #获取access_token
        $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";
        //缓存access_token
        session_start();
        	$_SESSION['access_token'] = "";
        	$_SESSION['expires_in'] = 0;

        if(!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() > $_SESSION['expires_in']))
        {

            $json = file_get_contents( $access_token );
            $json = json_decode($json,true);
            $_SESSION['access_token'] = $json['access_token'];
            $_SESSION['expires_in'] = time()+7200;
            $ACCESS_TOKEN = $json["access_token"];
        }
        else{
            $ACCESS_TOKEN =  $_SESSION["access_token"];
        }
        #判断是否缓存access_token
        if (!empty($ACCESS_TOKEN)){
            $url = 'https://testminiprogram.anniekids.com';
            $qr_path =IMAGE_UPLOAD_PATH;
            $filename =time().uniqid().".jpg";
            $savePath = $qr_path.'/'.$filename;
            $returnPath = $url.'/asset/NetclassApi/upload/images/'.$filename;
            $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$ACCESS_TOKEN;
            $data = array();
            $data['scene'] = $parameter;//自定义信息,可以填写诸如识别用户身份的字段,注意用中文时的情况
            $data['page'] = $page;//扫描后对应的path
            $data['width'] = 240;//自定义的尺寸
            $data['auto_color'] = false;//是否自定义颜色
            $color = array(
                "r"=>"221",
                "g"=>"0",
                "b"=>"0",
            );
            $data['line_color'] = $color;//自定义的颜色值
            $result = $this->get_http_array($url,json_encode($data));
            $errcode = json_decode($result,true)['errcode'];
            $errmsg = json_decode($result,true)['errmsg'];
            if($errcode) return array('status'=>0,'info'=>$errmsg);
            $res = $this->base64_to_img($result,$savePath);//将获取到的二维码图片流保存成图片文件
            #/var/www/html/public/asset/NetclassApi/upload/images/15597839155cf869eb4a05c.jpg"
            #存储生成的二维码
            #查询是否有存储记录
            $sql_code = "
                SELECT TOP 1 * FROM AnnieMiniProgram.dbo.OC_QRcode WHERE username = '{$username}'
            ";
            $sql_data = $this->db->query($sql_code)->row_array();
            if (empty($sql_data))
            {
                #没有,增加记录
                $data_ins['username'] = $username;
                $data_ins['grade'] = $grade;
                $data_ins['code'] = $returnPath;
                $data_ins['page'] = $page;
                $data_ins['scene'] = $parameter;
                $data_ins['createTime'] = date("Y-m-d H:i:s",time());
                $this->db->insert('AnnieMiniProgram.dbo.OC_QRcode', $data_ins);
            }
            else
            {
                #如有,更新时间
                $where_upd['username'] = $username;
                $data_ins['grade'] = $grade;
                $data_ins['code'] = $returnPath;
                $data_ins['page'] = $page;
                $data_ins['scene'] = $parameter;
                $data_ins['updateTime'] = date("Y-m-d H:i:s",time());
                $this->db->where($where_upd);
                $this->db->update('AnnieMiniProgram.dbo.OC_QRcode', $data_ins);
            }
            $this->response($this::RE_OK,'生成成功',$data_ins);
        }else{
            $this->response($this::RE_OK,'生成失败,请重试');
        }

}

注意:
拿到二维码的流, 是读到本地还是读到对象存储自己搞完事了, 需要注意的是几个post请求入参:

path: 跳转小程序的页面地址, 前面不要 “/”, 如果要带参数不可以在这里, 只能在第二个参数scene里添加

scene: 填放用户需要携带的参数

width: 尺寸

is_hyaline: 背景色要不要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值