PHP實現生成帶參小程序二維碼進入指定頁面并存儲本地(dì / de)文件
發表時(shí)間:2020-9-29
發布人(rén):融晨科技
浏覽次數:52
重點:使用小程序二維碼必須先發布小程序!!!
PHP代碼
1.獲取access_token
public function Atoken(){
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的(de)APPID&secret=你的(de)Appsecret';
$token = json_decode(getUrl($url),true); //使用CURL GET方法進行請求并将返回的(de)JSON轉成數組處理
//以(yǐ)下根據自己邏輯進行整理不(bù)做過多解釋,過期時(shí)間爲(wéi / wèi)2小時(shí) 建議存儲起來(lái)。
}
2.生成小程序二維碼
/*
* 生成小程序二維碼
* $code String 生成二維碼中的(de)參數
* */
private function createQR($code){
//Atoken() 公共方法 傳入access_token
$URL = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$this->Atoken();
//索引鍵必須一緻
$data = [
'scene' => $code, //二維碼傳入參數
'page' => 'pages/my/inviteFriends/inviteFriends', //掃碼後進入頁面
];
$json = json_encode($data); //數組加密
$result = postUrl($URL,$json); //用CURL 進行POST請求
if(isset($result['errcode'])){ //查看文檔錯誤代碼
return false;
}
//沒有出(chū)現錯誤代碼 會返回二進制文件流,可以(yǐ)轉成base64直接使用也(yě)可以(yǐ)轉成file
//以(yǐ)下是(shì)将二進制流轉成file并寫入本地(dì / de)
$data = date('Ymd');
$path = $path = ROOT_PATH.'public/Qrcode/'.$data; //ROOT_PATH 我使用的(de)是(shì)TP5框架
if(!file_exists($path)){ //判斷目錄是(shì)否存在(zài)
mkdir($path);
}
$filename = md5($code);
$path = $path.'/'.$filename.'.png'; //最後要(yào / yāo)寫入的(de)目錄及文件名
// 創建将數據流文件寫入我們創建的(de)文件内容中
$ifp = fopen( $path, "w" );
fwrite( $ifp, $result );
fclose( $ifp );
return $path; //路徑根據自身需要(yào / yāo)返回
}
最後生成二維碼
前端測試
打開生成的(de)小程序二維碼
scene 字段的(de)值會作爲(wéi / wèi) query 參數傳遞給小程序/小遊戲。
用戶掃描該碼進入小程序/小遊戲後,開發者可以(yǐ)獲取到(dào)二維碼中的(de) scene 值,再做處理邏輯。
調試階段可以(yǐ)使用開發工具的(de)條件編譯自定義參數 scene=xxxx 進行模拟。
開發工具模拟時(shí)的(de) scene 的(de)參數值需要(yào / yāo)進行 encodeURIComponent
Page({
>(query) {
// scene 需要(yào / yāo)使用 decodeURIComponent 才能獲取到(dào)生成二維碼時(shí)傳入的(de) scene
const scene = decodeURIComponent(query.scene)
}
})
更多功能查看 官方文檔。
歡迎大(dà)神指教