thinkphp5獲取微信小程序碼,以(yǐ)wxacode.get爲(wéi / wèi)例 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

thinkphp5獲取微信小程序碼,以(yǐ)wxacode.get爲(wéi / wèi)例

發表時(shí)間:2021-1-11

發布人(rén):融晨科技

浏覽次數:119

通過後台接口可以(yǐ)獲取小程序任意頁面的(de)小程序碼,掃描該小程序碼可以(yǐ)直接進入小程序對應的(de)頁面,所有生成的(de)小程序碼永久有效,可放心使用。 推薦生成并使用 小程序碼 ,它具有更好的(de) 辨識度 ,且擁有展示“公衆号關注組件”等高級能力。 

一、簡介

微信提供三個(gè) 服務端( https://developers.weixin.qq.com/miniprogram/dev/api-backend/ )接口 來(lái)獲取小程序(二維)碼,分别是(shì):

1、wxacode.createQRCode(不(bù)推薦使用)

獲取 小程序二維碼 ,适用于(yú)需要(yào / yāo)的(de)碼數量較少的(de)業務場景。 通過該接口生成的(de)小程序碼,永久有效,有數量限制。

生成二維碼,可接受 path 參數較長,生成個(gè)數受限。

2、wxacode.get*

獲取 小程序碼 ,适用于(yú)需要(yào / yāo)的(de)碼數量較少的(de)業務場景。 通過該接口生成的(de)小程序碼,永久有效,有數量限制。

适用于(yú)需要(yào / yāo)的(de)碼 數量較少 的(de)業務場景。

生成小程序碼,可接受 path 參數較長,生成個(gè)數受限,接口 1 加上(shàng)接口 2,總共生成的(de)碼數量限制爲(wéi / wèi) 100,000(十萬)個(gè),請謹慎調用。

3、wxacode.getUnlimited

獲取 小程序碼 ,适用于(yú)需要(yào / yāo)的(de)碼數量極多的(de)業務場景。 通過該接口生成的(de)小程序碼,永久有效,數量暫無限制。

适用于(yú)需要(yào / yāo)的(de)碼 數量極多 的(de)業務場景。

生成小程序碼,可接受頁面參數較短,生成個(gè)數不(bù)受限。

接口 3 調用分鍾頻率受限(5000次/分鍾),如需大(dà)量小程序碼,建議預生成。

注意:接口隻能生成已發布的(de)小程序(二維)碼。另外,“微信一物一碼”也(yě)支持生成小程序碼。

二、wxacode.get接口

本文以(yǐ) wxacode.get接口 調用來(lái)做詳細過程說(shuō)明,其他(tā)兩個(gè)接口流程也(yě)基本一樣。不(bù)多說(shuō),這(zhè)就(jiù)上(shàng)菜,代碼如下:

// 文檔地(dì / de)址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.get.html

function wxacode()
    {
        $access_token = cache('access_token_consumer');
        if(!$access_token){ // 檢查緩存
            $access_token_info = get_access_token();
            if($access_token_info['errcode']!=0){
                return json([
                    'errcode' => $access_token_info['errcode']
                ]);
            }
            $access_token = $access_token_info['access_token'];
        }
        $queryString  = [
            'path'  => '/pages/home/index?s=421224000001',
            'width' => 300
        ];
        $url          = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token;
        $ch           = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 3);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($queryString)); // POST 參數需要(yào / yāo)轉成 JSON 字符串,不(bù)支持 form 表單提交
        $output = curl_exec($ch);
        if(curl_errno($ch)){
            curl_close($ch);
            return json(['errcode'=>2]);
        }
        curl_close($ch);
        if(!is_null(json_decode($output))){
            return json(['errcode'=>3]);
        }
        $_path = ROOT_PATH . 'public' . DS . 'uploads/img/index.jpg';
        $file = fopen($_path, 'w');
        fwrite($file, $output); // 保存圖片
        fclose($file);
        $im = imagecreatefromjpeg($_path);

        // ob_start();
        // imagejpeg($im);
        // $content = ob_get_clean();
        // imagedestroy($im);
        // response($content, 200, ['Content-Length'=>strlen($content)])->contentType('image/jpeg');

        header('Content-Type: image/jpeg');
        imagejpeg($im); // 浏覽器直接輸出(chū)圖片
        exit(); // 一定不(bù)能少
    }
// 文檔地(dì / de)址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html

function get_access_token()
    {
        $queryString  = [
            'grant_type' => 'client_credential',
            'appid'      => 'wx......',
            'secret'     => '......'
        ];
        $url          = 'https://api.weixin.qq.com/cgi-bin/token?'.http_build_query($queryString);
        $ch           = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 3);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        $output = curl_exec($ch);
        if(curl_errno($ch)){
            curl_close($ch);
            return ['errcode'=>2];
        }
        curl_close($ch);
        // echo $output;
        // die('');
        $output = json_decode($output, true);
        if(isset($output['access_token'])){
            cache('access_token_consumer', $output['access_token'], 3600); // 緩存最多7200秒
            return [
                'errcode'      => 0,
                'access_token' => $output['access_token']
            ];
        }else{
            return ['errcode'=>2];
        }
    }

是(shì)不(bù)是(shì)很方便呢?

相關案例查看更多