小程序开发文档 -
【 获取不限制的小程序码 】
实现步骤
①. 分析步骤
1. 获取 Access Token
注意:access_token 在获取时,要根据自己的业务需求,可以考虑存储到 redis、mysql (7200秒内)
2. 根据小程序 APPID、APPSECRET - 获取不限制的小程序码
主要请求参数: page、scene、width
3. 将获得的小程序码,进行位置存储,方便后期查看使用
②. 代码实例
/**
* @Notes:获取 access_token
* @return bool|string
* @User: zhanghj
* @DateTime: 2023-10-16 16:21
*/
public function getAccessToken(){
$appid = 'XXXXXXXXXX'; //APPID
$secret = 'XXXXXXXXXXXXXXXXXXXXXXX'; //APPSECRET
$urlss = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlss);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output??'';
}
/**
* @Notes:生成 小程序码
* @param $mini_page_link
* @param int $img_tag
* @return string
* @User: zhanghj
* @DateTime: 2023-10-16 16:48
*/
public function generateToMiniCode($mini_page_link,$img_tag = 0){
$mini_code_img = dirname(\Yii::$app->basePath) . '/backend/web/upload/mini_code/' . $img_tag . '.png';
$access_token = $this->getAccessToken();
$tk = json_decode($access_token)->access_token;
$urlss = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$tk;
$ch = curl_init();
$_pageData = [
"page"=> $mini_page_link, //例如:pages/home/index
"scene"=>"device_id={$img_tag}", //参数绑定
"width" => 120 //宽度
];
$datass = json_encode($_pageData);
curl_setopt($ch, CURLOPT_URL, $urlss);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datass);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
$output1 = curl_exec($ch);
curl_close($ch);
file_put_contents($mini_code_img, $output1, true);
return $this->imgHost . '/mini_code/' . $img_tag . '.png';
}
③. 实现结果
"scene"
,以方便后期的业务处理 …
对于Linux 系统,使用 file_put_content()
有时会有操作权限的影响,可以使用 chmod 777 -R
进行权限赋值
参考文章
使用技巧
$imgUrl = 'data:image/jpg;base64,'.base64_encode($output1);
header("Content-type: image/jpg;charset=gb2312");
echo $output1;
$url = "test.jpg";
file_put_contents($url, $output1, true);