知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
thinkphp5獲取微信小程序碼,以wxacode.get為例
發(fā)表時間:2021-1-11
發(fā)布人:葵宇科技
瀏覽次數(shù):119
通過后臺接口可以獲取小程序任意頁面的小程序碼,掃描該小程序碼可以直接進入小程序對應的頁面,所有生成的小程序碼永久有效,可放心使用。 推薦生成并使用 小程序碼 ,它具有更好的 辨識度 ,且擁有展示“公眾號關注組件”等高級能力。
一、簡介
微信提供三個 服務端( https://developers.weixin.qq.com/miniprogram/dev/api-backend/ )接口 來獲取小程序(二維)碼,分別是:
1、wxacode.createQRCode(不推薦使用)
獲取 小程序二維碼 ,適用于需要的碼數(shù)量較少的業(yè)務場景。 通過該接口生成的小程序碼,永久有效,有數(shù)量限制。
生成二維碼,可接受 path 參數(shù)較長,生成個數(shù)受限。
2、wxacode.get*
獲取 小程序碼 ,適用于需要的碼數(shù)量較少的業(yè)務場景。 通過該接口生成的小程序碼,永久有效,有數(shù)量限制。
適用于需要的碼 數(shù)量較少 的業(yè)務場景。
生成小程序碼,可接受 path 參數(shù)較長,生成個數(shù)受限,接口 1 加上接口 2,總共生成的碼數(shù)量限制為 100,000(十萬)個,請謹慎調用。
3、wxacode.getUnlimited
獲取 小程序碼 ,適用于需要的碼數(shù)量極多的業(yè)務場景。 通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。
適用于需要的碼 數(shù)量極多 的業(yè)務場景。
生成小程序碼,可接受頁面參數(shù)較短,生成個數(shù)不受限。
接口 3 調用分鐘頻率受限(5000次/分鐘),如需大量小程序碼,建議預生成。
注意:接口只能生成已發(fā)布的小程序(二維)碼。另外,“微信一物一碼”也支持生成小程序碼。
二、wxacode.get接口
本文以 wxacode.get接口 調用來做詳細過程說明,其他兩個接口流程也基本一樣。不多說,這就上菜,代碼如下:
// 文檔地址: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 參數(shù)需要轉成 JSON 字符串,不支持 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); // 瀏覽器直接輸出圖片
exit(); // 一定不能少
}
// 文檔地址: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];
}
}
是不是很方便呢?