微信小程序官方開放了3個創建二維碼的接口,其中有一個是生成二維碼的,還有一個是葵花狀的小程序碼,我這里就用php生成二維碼。
首先要獲取Access_token這個請求起來也是很容易的,微信開發文檔有請求接口:
要把自己的小程序的APPID和APPSECRET獲取到
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential appid=APPID secret=APPSECRET
access_token只有2小時有效期,所以要緩存最好,避免重復請求
構建請求參數可以構建一個數組,然后轉成json數據賦給一個變量
$param = json_encode(array( path = pages/index/index?id=123 , width = 150));
然后POST數據發送到微信服務器換取二維碼
完整代碼?phpheader( content-type:text/html;charset=utf-8 //配置APPID、APPSECRET$APPID = APPID $APPSECRET = 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 = 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/index/index?id=123 , width = 150));//POST參數$result = httpRequest( $qcode, $param, POST //生成二維碼file_put_contents( qrcode.png , $result);$base64_image = data:image/jpeg;base64, .base64_encode( $result );//把請求發送到微信服務器換取二維碼 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、新建qrcode.php
2、拷貝上面代碼進去
3、修改APPID和APPSECRET
4、訪問qrcode.php
即可生成一個帶參數的小程序二維碼
但是這個接口生成的是有LOGO的小程序二維碼。
我們想要生成一個簡簡單單的,無LOGO的小程序二維碼可以嗎?
官方的是沒有辦法的,但是我們可以用第三方的接口生成普通的二維碼的方式。
1、先解碼,把剛才生成的小程序二維碼解碼,獲得URL
2、把獲得的URL用普通的二維碼生成接口生成普通的無LOGO的二維碼
解碼其實有很多的庫我這里直接用了第三方的JSSDK解碼,免費的,需要申請接口和appid和appkey
h2 生成無LOGO二維碼 /h2 !DOCTYPE html html head title PHP生成微信小程序二維碼 /title meta http-equiv= Content-Type content= text/html; charset=UTF-8 meta name= viewport content= width=device-width, initial-scale=1.0 script src= /uploads/allimg/190509/13542941J-2.jpg /script script src= hprose.min.js /script script src= md5.min.js /script /head body !--顯示二維碼-- p id= show_test /p p id= select_img >上面是通過js來實現的解碼,解碼還是調用了php生成的二維碼的一個圖片地址的
?php echo $base64_image;?上面是調用本地圖片,所以需要結合php生成小程序二維碼的代碼使用這個解碼程序。
解碼后需要生成無LOGO的二維碼,這個我只需要調用一個接口就行。
然后拼接解碼后的url就可以生成一個二維碼了。
接口:http://qr.liantu.com/api.php?...
那么生成小程序碼和生成無LOGO二維碼的代碼結合起來就是:
?phpheader( content-type:text/html;charset=utf-8 //配置APPID、APPSECRET$APPID = APPID $APPSECRET = 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 = 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/index/index?id=123 , width = 150));//POST參數$result = httpRequest( $qcode, $param, POST //生成二維碼file_put_contents( qrcode.png , $result);$base64_image = data:image/jpeg;base64, .base64_encode( $result );//把請求發送到微信服務器換取二維碼 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; h2 生成小程序官方二維碼 /h2 !-- 生成小程序官方二維碼 -- img src= ?php echo $base64_image;? / br/ h2 生成無LOGO二維碼 /h2 !-- 生成無LOGO二維碼 -- !DOCTYPE html html head title PHP生成微信小程序二維碼 /title meta http-equiv= Content-Type content= text/html; charset=UTF-8 meta name= viewport content= width=device-width, initial-scale=1.0 script src= /uploads/allimg/190509/13542941J-2.jpg /script script src= hprose.min.js /script script src= md5.min.js /script /head body p id= show_test !--顯示信息-- /p p id= select_img >但是解碼需要用到的兩個js庫
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
php大牛分享:php代碼編寫的規范,總結的很全
對于PHP面向對象設計五大原則(SOLID)的總結
以上就是PHP生成帶參數的微信小程序的二維碼的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答