PHP生成小程序带参数分享码Tp框架

第一步,获取参数:前端请求接口带给你的参数。

//拼接参数
$uid = 'uid='.$post['id']; //前端传递的用户id参数
                  
$page = 'pages/pintuan/pintuan'; //小程序页面,必须是已经发布审核通过上线的小程序页面
                  
$return['ewm'] =  $this->get_unlimited($uid ,$page); //开始调用生成二维码的方法

第二步,开始调用获取小程序二维码方法

 public function get_unlimited($scene_a,$page_b)
    {
		
      
      
        $scene = $scene_a; //参数
        $page = $page_b;   //小程序页面(必须真实,已发布的小程序页面地址)
        $access_token1 = Cache::get('access_token'); //获取cache里面的access_token
        if ($access_token1) {  //判断是否过期
            $accessToken= $access_token1; //没过期直接用
        }else{
            $accessToken = $this->get_access_token(); //获取了就重新获取
        }
		
        //拼接请求的url地址
        $url="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$accessToken";
        //拼接请求参数
        $data=[
            'scene'=>$scene,
            'page'=>$page,
            'width'=>600,
            'auto_color'=>false,
        ];
        //参数转为json类型
        $data=json_encode($data);

        //开始请求拿到二维码
        $result = $this->curl_post_https($url,$data);
		
        //调用方法,将二维码转为base64返回给前端
        $result=$this->data_uri($result,'image/png');
		
        return $result;
    }

获取accesstoken的方法

    public function get_access_token()
    {
        if(Cache::get('access_token')){ //先判断缓存里面的是否过期
            $a = Cache::get('access_token'); //没过期直接返回,不用重复再请求
            return $a;
        }else{
            //过期了就重新请求accesstoken
            $appid = '******';//	小程序appidd
            $secret = '******';   //  小程序appsecret
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
            $user_obj = $this->curlHttp($url);
            //请求到了之后存在缓存里面,最长时间7200秒,自动过期
            Cache::set('access_token',$user_obj['access_token'],7100);
            //返回access_token
            return Cache::get('access_token');
        }
    }

二进制转base64图片的方法

    //二进制转图片image/png
    public function data_uri($contents, $mime)
    {
        $base64   = base64_encode($contents);
        return ('data:' . $mime . ';base64,' . $base64);
    }

curl get请求方法


    /**
     * 发送get请求
     */
    public function curlHttp($url){


        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $output = curl_exec($ch);
        //释放curl句柄
        curl_close($ch);
        return json_decode($output,true);
    }

curl post 请求方法


    public function curl_post_https($url,$data,$header=[]){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HEADER, $header);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $output = curl_exec($ch);
        curl_close($ch);


        return $output;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值