微信公眾號之獲取帶參數的二維碼


項目需求:微信公眾號需要生成帶參數的二維碼,以此記錄開發流程,方便下次使用:

微信公眾號生成帶參數的二維碼,又分為臨時二維碼與永久二維碼,臨時二維碼的時效性為30天,永久二維碼只能創建100000次

開發過程主要分為兩步:每次創建二維碼ticket需要提供一個開發者自行設定的參數(scene_id),此參數用戶識別用戶設定的應用於不同場景

第一步:創建二維碼需要的ticket(生成ticket之前需要通過獲取官方的獲取access_token接口先獲取到access_token的值)

如果時臨時二維碼:給微信發送一個POST請求,一般通過curl的方式,請求url為:https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

發送的data數據包為json格式 :{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}} 或者可以為字符串形式的二維碼參數,json數據包為{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

 

如果時永久二維碼:給微信發送一個POST請求,一般通過curl的方式,請求url為https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

發送的data數據包為json格式 :{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}} 或者可以為字符串形式的二維碼參數,json數據包為{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

 

 通過封裝curl函數方法如,httprequest方法,然后將url,data傳入httprequest($url,$data),如果請求正確時,會返回:

正確的Json返回結果:

{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm 3sUw==","expire_seconds":60,"url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"}

httprequest方式封裝如下:

function httprequest($url,$data,$header=[]){

  $ch = curl_init();

  curl_setopt($ch,CURLOPT_URL,$url);

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

  if(!empty($data)){ 

  curl_setopt($ch, CURLOPT_POST, true); 

  curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

  }

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  if (!empty($headers)) {

  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  }

  $res = curl_exec($ch);

  curl_close($ch);

  return $res; 

  }

第二步:通過ticket去換取二維碼

獲取二維碼ticket后,開發者可用ticket換取二維碼圖片。請注意,本接口無須登錄態即可調用。

請求說明

HTTP GET請求(請使用https協議)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET 提醒:TICKET記得進行UrlEncode

返回說明

ticket正確情況下,http 返回碼是200,是一張圖片,可以直接展示或者下載。(如果是直接展示,需要設置頭部圖片輸出信息Content-Type:image/jpg,image后面可以為jpg也可以為png,然后就可以直接在瀏覽器中直接輸出)

HTTP頭(示例)如下: Accept-Ranges:bytes Cache-control:max-age=604800 Connection:keep-alive Content-Length:28026 Content-Type:image/jpg Date:Wed, 16 Oct 2013 06:37:10 GMT Expires:Wed, 23 Oct 2013 14:37:10 +0800 Server:nginx/1.4.1

錯誤情況下(如ticket非法)返回HTTP錯誤碼404。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM