首頁  >  文章  >  後端開發  >  php產生小程式二維碼亂碼怎麼辦

php產生小程式二維碼亂碼怎麼辦

藏色散人
藏色散人原創
2021-12-02 09:39:054171瀏覽

php產生小程式二維碼亂碼的解決方法:1、取得微信token;2、新增「base64_encode($res);」;3、取得二維碼參數;4、請求後台交互,並將參數傳過去即可。

php產生小程式二維碼亂碼怎麼辦

本文操作環境:windows7系統、PHP7.4版、DELL G3電腦

php產生小程式二維碼亂碼怎麼辦?

php微信小程式產生二維碼,出現亂碼,{"errcode":44002,"errmsg":"empty post data"},'{"errcode":41001,"errmsg" :"access_token missing hint: [OoC.2a0822e255]"}',以及其他的坑 

微信小程式的坑簡直比我的頭髮還多,今天下午獲取微信二維碼,遇到的44002 ,41001,還有圖片沒法正常顯示以及小程式參數獲取的問題,接下來一一解決 

 首先獲取微信token然後再獲取二維碼這個沒什麼好說的直接上代碼

public function getQRcode()
{
    $appid = '';
    $secret = '';
    $access_token = json_decode(file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret),true)['access_token'];
    $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$access_token";
    $ch = curl_init();
    $data = json_encode(['scene' => '&id='.$this->user_id]);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 'image/gif');
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data)
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //如果需要将结果直接返回到变量里,那加上这句。
    $res = curl_exec($ch);
   }

  虽然已经获取到了小程序二维码  但是此时打印$res就会出现乱码的问题 仔细看文档的同学可能就知道 这是因为微信会返回图片二进制内容

  

  媽的簡直不要太坑啊  

$data = 'data:image/jpeg;base64,'.base64_encode($res);//补全base64加密字符串头
$html = "<!DOCTYPE html>
        <html lang=&#39;en&#39;>
        <head>
            <meta charset=&#39;UTF-8&#39;>
            <title>二维码</title>
        </head>
        <body>
        <img src=&#39;$data&#39;>
        </body>
        </html>";
echo $html;
exit;

在代码上加上这一句 可以转换 直接输出图片


ok  二维码已经出来了 接下来就是获取二维码参数  比如参数为id=1

获取二维码参数还是比较简单的 微信二维码指向首页  
然后在index.js编写

然后请求后台交互 将参数传过去 ,本来后台接口已经写好了 我想今天的工作可以告一段段落了,尼玛没想到检查数据的时候发现id根本没有获取到

在本地测试的时候可以

  

    

## 

    接著去後台印製的時候你會發現你傳過去的參數根本不是1,而是{'id':'1'},我日就沒遇過他們這種的 

    所以如果本地測試的話還得需要進行一下操作兄弟我是直接被征服了  隨便截取了一下1前邊的7個字符後邊的2個字符這樣才得到完整'1',    尼瑪,這個小程式簡直不要太坑

### 推薦學習:《###PHP影片教學###》###

以上是php產生小程式二維碼亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn