讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 8.1.1 創建二維碼ticket >

8.1.1 創建二維碼ticket

每次創建二維碼ticket都需要提供一個開發者自行設定的參數(scene_id),分別介紹臨時二維碼和永久二維碼的創建二維碼ticket過程。

創建二維碼的請求接口如下。


https:// api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
  

臨時二維碼的POST數據格式如下。


{
    "expire_seconds":1800,
    "action_name":"QR_SCENE",
    "action_info":{
        "scene":{
            "scene_id":100000
        }
    }
}
  

整型永久二維碼的POST數據格式如下。


{
    "action_name":"QR_LIMIT_SCENE",
    "action_info":{
        "scene":{
            "scene_id":123
        }
    }
}
  

字符串型永久二維碼的POST數據格式如下。


{
    "action_name":"QR_LIMIT_STR_SCENE",
    "action_info":{
        "scene":{
            "scene_str":"123"
        }
    }
}
  

上述POST數據的參數說明如表8-1所示。

表8-1 生成二維碼請求的參數說明

提交數據後,數據返回格式如下。


{
    "ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Br
     b3ZhYmJJAAIEZ23sUwMEmm3sUw==",
    "expire_seconds":60,
    "url":"http:// weixin.qq.com/q/NkPirMrlwhq7pBRqMm9M"
}
  

上述數據的參數說明如表8-2所示。

表8-2 生成二維碼結果的參數說明

創建二維碼的程序實現如下。


 1 $access_token = "xDx0pD_ZvXkHM3oeu5oGjDt1_9HxlA-9g0vtR6MZ-v4r7MpvZYC4ee4OxN97Lr
       4irkPKE94tzBUhpZG_OvqAC3D3XaWJIGIn0eeIZnfaofO1C3LNzGphd_rEv3pIimsW9lO-4FOw
       6D44T3sNsQ5yXQ";
 2 
 3 // 臨時
 4 $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": 
   {"scene_id": 10000}}}';
 5 // 永久
 6 $qrcode = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 
   1000}}}';
 7 
 8 $url = "https:// api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";
 9 $result = https_request($url,$qrcode);
10 $jsoninfo = json_decode($result, true);
11 $ticket = $jsoninfo["ticket"];
12 
13 function https_request($url, $data = null)
14 {
15     $curl = curl_init;
16     curl_setopt($curl, CURLOPT_URL, $url);
17     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
18     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
19     if (!empty($data)){
20         curl_setopt($curl, CURLOPT_POST, 1);
21         curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
22     }
23     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
24     $output = curl_exec($curl);
25     curl_close($curl);
26     return$output;
27 }