獲取access_token與生成永久二維碼

define('APPID', 'wx2fb728a57b78be86');
define('APPKEY', 'f6de3c320e0c75d0b83e43406d57982b');
define('WX','gh_743126a2ece1');

//獲取憑據access_token
function at(){
	//如果緩存文件存在並且是7200秒之內更新的就直接讀取緩存文件
	if(file_exists('./at') && time()-filemtime('./at')<7200){
		return file_get_contents('./at');
	}
	//以get方式請求
	$ret = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.APPID.'&secret='.APPKEY.'');
	//把json轉爲數組,第二個參數爲true返回數組,false返回對象
	$ret = json_decode($ret,true);
	//寫入文件
	file_put_contents('./at', $ret['access_token']);
	return $ret['access_token'];
}

//生成二維碼
function qrcode($id){
	$data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$id.'}}}';
	$ret = p_post('https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.at(),$data);
	$ret = json_decode($ret,true);
	//根據ticket獲取圖片
	$img = file_get_contents('https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.UrlEncode($ret['ticket']));
	file_put_contents("$id.png",$img);
}

//模擬post請求,既可以是http也可以是https
function p_post($url,$data,$https=true){
	$curl = curl_init(); //啓動一個CURL會話
	curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
	if($https){
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); //對認證證書來源的檢測
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); //從證書中檢查SSL加密算法是否存在
	}
	curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //模擬用戶使用的瀏覽器
	curl_setopt($curl, CURLOPT_POST, 1); //發送一個常規的post請求
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //post提交的數據包
	curl_setopt($curl, CURLOPT_TIMEOUT, 30); //設置超時限制防止死循環
	curl_setopt($curl, CURLOPT_HEADER, 0); //顯示返回的header區域內容
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //獲取的信息以文件流的形式返回
	$tmpInfo = curl_exec($curl); //執行操作
	curl_close($curl); //關閉curl會話
	return $tmpInfo; //返回數據
}

發佈了154 篇原創文章 · 獲贊 17 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章