首頁 > 軟體

PHP實現生成二維條碼的範例程式碼

2022-05-27 18:03:55

前言

為了滿足使用者渠道推廣分析和使用者賬號繫結等場景的需要,公眾平臺提供了生成帶引數二維條碼的介面。使用該介面可以獲得多個帶不同場景值的二維條碼,使用者掃描後,公眾號可以接收到事件推播。

1、目前有2種型別的二維條碼

  • 臨時二維條碼,是有過期時間的,最長可以設定為在二維條碼生成後的30天(即2592000秒)後過期,但能夠生成較多數量。臨時二維條碼主要用於賬號繫結等不要求二維條碼永久儲存的業務場景 
  • 永久二維條碼,是無過期時間的,但數量較少(目前為最多10萬個)。永久二維條碼主要用於適用於賬號繫結、使用者來源統計等場景

2、使用者掃描帶場景值二維條碼時,可能推播以下兩種事件

  • 如果使用者還未關注公眾號,則使用者可以關注公眾號,關注後微信會將帶場景值關注事件推播給開發者。
  • 如果使用者已經關注公眾號,在使用者掃描後會自動進入對談,微信也會將帶場景值掃描事件推播給開發者。

獲取帶引數的二維條碼的過程包括兩步,首先建立二維條碼ticket,然後憑藉ticket到指定URL換取二維條碼。

3、建立二維條碼ticket

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

4、臨時二維條碼請求說明

http請求方式: POST

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

POST資料格式:json

POST資料例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST資料建立字串形式的二維條碼引數:

{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

5、永久二維條碼請求說明

http請求方式: POST

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

POST資料格式:json

POST資料例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

 或者也可以使用以下POST資料建立字串形式的二維條碼引數:

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

6、臨時二維條碼和永久二維條碼生成實現的程式碼

       //臨時二維條碼
    public function getQrls()
{
        $accessToken = $this->_getWxAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";
        $postArr =  [
            "action_name" => "QR_SCENE",
            "expire_seconds" => 604800,
            "action_info" => [
                'scene' => ['scene_id' => 2000],
              ],
           ];
 
        $postJson = json_encode($postArr);
        $res = $this->ch($url, 'post', 'json', $postJson);
 
        $ticket = $res['ticket'];
        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
 
        echo "<img src='".$url."'>";
 
    }
 
    //永久二維條碼
    public function getQryj()
{
        $accessToken = $this->_getWxAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";
        $postArr =  [
            "action_name" => "QR_LIMIT_SCENE",
            "action_info" => [
                'scene' => ['scene_id' => 3000],
              ],
           ];
 
        $postJson = json_encode($postArr);
        $res = $this->ch($url, 'post', 'json', $postJson);
 
        $ticket = $res['ticket'];
        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
 
        echo "<img src='".$url."'>";
    }
     
    //url請求
    private function ch($url, $type='get', $res='json', $arr='')
{
 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
 
        if ($type == 'post') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
        }
 
        $cnt = curl_exec($ch);
        if (curl_errno($ch)) {
            return;
        }
 
        curl_close($ch);
 
        if ($res == 'json') {
            return json_decode($cnt, true);
        }
 
        return $cnt;
    }

生成臨時、永久二維條碼的圖片這裡就不放了,感興趣的可以自己執行一下哈。

到此這篇關於PHP實現生成二維條碼的範例程式碼的文章就介紹到這了,更多相關PHP生成二維條碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com