微信小程序官方開放了3個(gè)創(chuàng)建二維碼的接口,其中有一個(gè)是生成二維碼的,還有一個(gè)是葵花狀的小程序碼,我這里就用php生成二維碼。
首先要獲取Access_token這個(gè)請(qǐng)求起來(lái)也是很容易的,微信開發(fā)文檔有請(qǐng)求接口:
要把自己的小程序的APPID和APPSECRET獲取到
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential appid=APPID secret=APPSECRET
access_token只有2小時(shí)有效期,所以要緩存最好,避免重復(fù)請(qǐng)求
構(gòu)建請(qǐng)求參數(shù)![1531534941155607.png 82595235-5b48a5179b503_articlex[1].png](http://img.VeVb.com//upload/image/557/557/555/1531534941155607.png)
可以構(gòu)建一個(gè)數(shù)組,然后轉(zhuǎn)成json數(shù)據(jù)賦給一個(gè)變量
$param = json_encode(array( path = pages/index/index?id=123 , width = 150));
然后POST數(shù)據(jù)發(fā)送到微信服務(wù)器換取二維碼
完整代碼 ?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 //構(gòu)建請(qǐng)求二維碼參數(shù)//path是掃描二維碼跳轉(zhuǎn)的小程序路徑,可以帶參數(shù)?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參數(shù)$result = httpRequest( $qcode, $param, POST //生成二維碼file_put_contents( qrcode.png , $result);$base64_image = data:image/jpeg;base64, .base64_encode( $result );//把請(qǐng)求發(fā)送到微信服務(wù)器換取二維碼 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、拷貝上面代碼進(jìn)去
3、修改APPID和APPSECRET
4、訪問(wèn)qrcode.php
即可生成一個(gè)帶參數(shù)的小程序二維碼
![1531535286271920.png 3971639280-5b48a66542e0f_articlex[1].png](http://img.VeVb.com//upload/image/363/976/118/1531535286271920.png)
但是這個(gè)接口生成的是有LOGO的小程序二維碼。
我們想要生成一個(gè)簡(jiǎn)簡(jiǎn)單單的,無(wú)LOGO的小程序二維碼可以嗎?
官方的是沒(méi)有辦法的,但是我們可以用第三方的接口生成普通的二維碼的方式。
1、先解碼,把剛才生成的小程序二維碼解碼,獲得URL
2、把獲得的URL用普通的二維碼生成接口生成普通的無(wú)LOGO的二維碼
解碼其實(shí)有很多的庫(kù)我這里直接用了第三方的JSSDK解碼,免費(fèi)的,需要申請(qǐng)接口和appid和appkey
h2 生成無(wú)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 >上面是通過(guò)js來(lái)實(shí)現(xiàn)的解碼,解碼還是調(diào)用了php生成的二維碼的一個(gè)圖片地址的
?php echo $base64_image;?上面是調(diào)用本地圖片,所以需要結(jié)合php生成小程序二維碼的代碼使用這個(gè)解碼程序。
解碼后需要生成無(wú)LOGO的二維碼,這個(gè)我只需要調(diào)用一個(gè)接口就行。
然后拼接解碼后的url就可以生成一個(gè)二維碼了。
接口:http://qr.liantu.com/api.php?...
那么生成小程序碼和生成無(wú)LOGO二維碼的代碼結(jié)合起來(lái)就是:
?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 //構(gòu)建請(qǐng)求二維碼參數(shù)//path是掃描二維碼跳轉(zhuǎn)的小程序路徑,可以帶參數(shù)?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參數(shù)$result = httpRequest( $qcode, $param, POST //生成二維碼file_put_contents( qrcode.png , $result);$base64_image = data:image/jpeg;base64, .base64_encode( $result );//把請(qǐng)求發(fā)送到微信服務(wù)器換取二維碼 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 生成無(wú)LOGO二維碼 /h2 !-- 生成無(wú)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 >但是解碼需要用到的兩個(gè)js庫(kù)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !
相關(guān)推薦:
php大牛分享:php代碼編寫的規(guī)范,總結(jié)的很全
對(duì)于PHP面向?qū)ο?/u>設(shè)計(jì)五大原則(SOLID)的總結(jié)
以上就是PHP生成帶參數(shù)的微信小程序的二維碼的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選