TP5请求小程序二维码的坑

小程序上传正式版之后发现图片不能输出,都是一些乱码
在这里插入图片描述

中途总是以为header写不进去

//获取二维码
    public function getunlimit()
    {
        header('content-type:image/jpeg');
        $user_id = input('get.user_id');
        $s = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . config('wxconfig.APPID') . "&secret=" . config('wxconfig.SECRET'));
        $s = json_decode($s, true);
        $access_token = $s['access_token'];
        $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $access_token;
        $data['scene'] = '1'; //参数,,正式版后修改
        $data['page'] = 'pages/index/index'; //页面路径
        $data = json_encode($data, true);
        $res = $this->curl_post($url, $data);
        // message($s['result']); 
        echo $res;
        exit;//关键
    }
    public function curl_post($url, $data = array())
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        // POST数据
        curl_setopt($ch, CURLOPT_POST, 1);
        // 把post的变量加上
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }

==关键点就在这个exit;==需要结束一下
在这里插入图片描述
大功告成,header也变成了image/jpeg,正常输出图片

TP5框架中,你可以使用第三方库生成小程序二维码,并设置二维码的过期时间。以下是一个简单的示例代码: 1.首先,你需要在composer.json中添加第三方库: ```json { "require": { "endroid/qr-code": "~3.0" } } ``` 2.在控制器中添加以下代码: ```php use Endroid\QrCode\QrCode; use Endroid\QrCode\Writer\PngWriter; class QrcodeController extends Controller { public function index() { $expireSeconds = 60 * 60 * 24; // 过期时间为1天 $scene = 'test'; // 小程序页面参数 $accessToken = 'your_access_token'; // 小程序access_token $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={$accessToken}"; $data = [ 'scene' => $scene, 'page' => 'pages/index/index', // 小程序页面路径 'width' => 430, // 二维码宽度 'auto_color' => false, 'line_color' => [ 'r' => '0', 'g' => '0', 'b' => '0' ], 'is_hyaline' => false, 'expire_seconds' => $expireSeconds, // 过期时间 ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $result = curl_exec($ch); curl_close($ch); // 生成二维码并输出到浏览器 $qrCode = new QrCode($result); $qrCode->setSize(300); $qrCode->setMargin(10); $qrCode->setWriterByName('png'); $qrCode->setEncoding('UTF-8'); header('Content-Type: ' . $qrCode->getContentType()); header('Content-Disposition: inline; filename="qrcode.png"'); echo $qrCode->writeString(); } } ``` 以上代码中,`$expireSeconds` 变量是二维码的过期时间,单位是秒。`$scene` 变量是小程序页面的参数,可以根据实际情况修改。`$accessToken` 变量是小程序的 access_token,需要替换为你自己的。 最后,你可以在浏览器中访问该控制器的路由,即可生成小程序二维码并输出到浏览器。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值