溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP實現(xiàn)生成二維碼的代碼怎么寫

發(fā)布時間:2022-05-30 11:13:47 來源:億速云 閱讀:249 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“PHP實現(xiàn)生成二維碼的代碼怎么寫”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“PHP實現(xiàn)生成二維碼的代碼怎么寫”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

前言

為了滿足用戶渠道推廣分析和用戶賬號綁定等場景的需要,公眾平臺提供了生成帶參數(shù)二維碼的接口。使用該接口可以獲得多個帶不同場景值的二維碼,用戶掃描后,公眾號可以接收到事件推送。

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

  • 臨時二維碼,是有過期時間的,最長可以設置為在二維碼生成后的30天(即2592000秒)后過期,但能夠生成較多數(shù)量。臨時二維碼主要用于賬號綁定等不要求二維碼永久保存的業(yè)務場景 

  • 永久二維碼,是無過期時間的,但數(shù)量較少(目前為最多10萬個)。永久二維碼主要用于適用于賬號綁定、用戶來源統(tǒng)計等場景

2、用戶掃描帶場景值二維碼時,可能推送以下兩種事件

  • 如果用戶還未關注公眾號,則用戶可以關注公眾號,關注后微信會將帶場景值關注事件推送給開發(fā)者。

  • 如果用戶已經關注公眾號,在用戶掃描后會自動進入會話,微信也會將帶場景值掃描事件推送給開發(fā)者。

獲取帶參數(shù)的二維碼的過程包括兩步,首先創(chuàng)建二維碼ticket,然后憑借ticket到指定URL換取二維碼。

3、創(chuàng)建二維碼ticket

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

4、臨時二維碼請求說明

http請求方式: POST

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

POST數(shù)據格式:json

POST數(shù)據例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST數(shù)據創(chuàng)建字符串形式的二維碼參數(shù):

{"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數(shù)據格式:json

POST數(shù)據例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

 或者也可以使用以下POST數(shù)據創(chuàng)建字符串形式的二維碼參數(shù):

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

6、臨時二維碼和永久二維碼生成實現(xiàn)的代碼

       //臨時二維碼
    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實現(xiàn)生成二維碼的代碼怎么寫”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI