1.帶參數的二維碼介紹及使用場景介紹
- 為了滿足用戶渠道推廣分析和用戶帳號綁定等場景的需要,公眾平台提供了生成帶參數二維碼的接口。使用該接口可以獲得多個帶不同場景值的二維碼,用戶掃描后,公眾號可以接收到事件推送。不同的參數,可以相應不同的操作
- 使用場景:任何需要區分渠道的需求都適用
2.微信帶參數的二維碼分為兩種:
- 臨時二維碼,是有過期時間的,最長可以設置為在二維碼生成后的30天(即2592000秒)后過期,但能夠生成較多數量。臨時二維碼主要用於帳號綁定等不要求二維碼永久保存的業務場景
- 永久二維碼,是無過期時間的,但數量較少(目前為最多10萬個)。永久二維碼主要用於適用於帳號綁定、用戶來源統計等場景。
3.生成帶參數二維碼接口調用實例(這里生成的是永久性的二維碼,臨時性的差不多,只是改下參數,具體看微信開發文檔)
1 <?php 2 $appId = "sdasdfasd"; 3 $appSecret = "asdfasdfadfasdfas"; 4 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}"; 5 6 // $output = getToken($url); 7 // $token = (array)json_decode($output); 8 // $accessToken = $token['access_token']; 9 // echo $accessToken; 10 11 $accessToken = "adsfasdfasdfasdfasdfasdfasdfasdfadfasdfasdfasdfasdafdfasdfasdfasd"; 12 13 $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 11}}}'; 14 15 //獲取二維碼的ticket的url 16 $url_get_Qcode_ticket = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}"; 17 18 $code = (array)json_decode(getShort($data, $url_get_Qcode_ticket)) ; 19 // echo $code['ticket']; 20 21 22 $ticket = $code['ticket']; 23 24 //獲取二維碼的url 25 $url_get_Qcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={$ticket}"; 26 27 //運行程序會輸出一個二維碼圖片 28 echo getToken($url_get_Qcode); 29 30 function getShort($data, $url) { 31 $ch = curl_init(); 32 curl_setopt($ch, CURLOPT_URL, $url); 33 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 34 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 35 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 36 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)"); 37 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 38 curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 39 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 40 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 41 42 $tmpInfo = curl_exec($ch); 43 44 if (curl_errno($ch)){ 45 return curl_error($ch); 46 } 47 48 curl_close($ch); 49 return $tmpInfo; 50 } 51 52 function getToken($url) { 53 $ch = curl_init(); 54 curl_setopt($ch, CURLOPT_URL, $url); 55 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 56 curl_setopt($ch, CURLOPT_HEADER, 0); 57 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)"); 58 curl_setopt($ch, CURLOPT_ENCODING, "gzip");//加入gzip解析 59 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 60 $output = curl_exec($ch); 61 curl_close($ch); 62 63 return $output; 64 }
運行如上代碼后,瀏覽器會輸出個圖片格式的二維碼,某些情況下回出現亂碼,此時更換瀏覽器試試,比如IE。。。
4.掃描帶參數的二維碼微信公眾平台響應實例