映月读书网 > 微信公众平台开发:从零基础到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 }