thinkphp5做后台生成带参数的微信小程序二维码,便于小程序的推广。
/**
* 生成二维码
* @return [type] [description]
* @param $fiel string 为二维码创建一个文件
* @param $appid string 小程序的appid
* @param $srcret string 小程序的srcret
* @param $url string 生成access_token的链接,具体参考https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html?
* @param $appid string 小程序appid
*/
public function qrcode()
{
// 为二维码创建一个文件
$fiel = $_SERVER['DOCUMENT_ROOT'].'/'.rand(100,999).'.png';
//获取access_token
$appid = '小程序的appid';
$srcret = '小程序的srcret';
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$srcret;
// get请求获取access_token
$data=getCurl($url);
$data = json_decode($data,true);
//获取二维码
//参数
$postdata['scene']=1;
// 宽度
$postdata['width']=430;
// 页面
$postdata['page']='pages/main/main';
// 线条颜色
$postdata['auto_color']=false;
//auto_color 为 false 时生效
$postdata['line_color']=['r'=>'0','g'=>'0','b'=>'0'];
// 是否有底色为true时是透明的
$postdata['is_hyaline']=false;
$post_data = json_encode($postdata);
// 获取二维码
$url="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$data['access_token'];
// post请求
$result.=postCurl($url,$post_data);
// 保存二维码
file_put_contents($fiel,$result);
}
/**
* curl的get请求
* @param string $url 请求的url
* @return 得到的数据
*/
function getCurl($url)
{
$info=curl_init();
curl_setopt($info,CURLOPT_RETURNTRANSFER,true);
curl_setopt($info,CURLOPT_HEADER,0);
curl_setopt($info,CURLOPT_NOBODY,0);
curl_setopt($info,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($info,CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($info,CURLOPT_URL,$url);
$output= curl_exec($info);
curl_close($info);
return $output;
}
/**
* curl的post请求
* @param [type] $url [description]
* @param [type] $postdata [description]
* @return [type] [description]
*/
function postCurl($url,$data)
{
$ch = curl_init();
$header = "Accept-Charset: utf-8";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
return false;
}else{
return $tmpInfo;
}
}