PHP生成微信小程序带参数二维码

4 篇文章 0 订阅

```php
 public function ceshihtml(Request $request)
    {
        $APPID ="你的小程序APPID";
        $APPSECRET = "你的小程序密钥";
        //获取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;

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

            $json = $this->httpRequest($access_token);
            $json = json_decode($json,true);
            // var_dump($json);
            $_SESSION['access_token'] =$json['access_token'];
            $_SESSION['expires_in'] = time()+7200;
            $ACCESS_TOKEN =$json["access_token"];
        }
        else{

            $ACCESS_TOKEN = $_SESSION["access_token"];
        }

        //构建请求二维码参数
        //path是扫描二维码跳转的小程序路径,可以带参数?id=xxx
        //width是二维码宽度
        $qcode ="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN";
        $param = json_encode(array("path"=>"pages/home/home","width"=> 150));

        //POST参数
        $result = $this->httpRequest($qcode,$param,"POST");
        //生成二维码
        file_put_contents("qrcode.png",$result);
        $base64_image ="data:image/jpeg;base64,".base64_encode($result );
        echo $base64_image;

        return view($this->tmplDir . '.' . 'ceshihtml', $this->data);
    }
    //把请求发送到微信服务器换取二维码
    public function httpRequest($url,$data='',$method='GET'){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL,$url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
        if($method=='POST')
        {
            curl_setopt($curl, CURLOPT_POST, 1);
            if ($data !='')
            {
                curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
            }
        }

        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        curl_close($curl);
        return $result;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值