Heim > Backend-Entwicklung > PHP-Tutorial > PHP WeChat generiert einen QR-Code für das öffentliche WeChat-Konto und scannt ihn, um das öffentliche Konto mit Parametern einzugeben

PHP WeChat generiert einen QR-Code für das öffentliche WeChat-Konto und scannt ihn, um das öffentliche Konto mit Parametern einzugeben

不言
Freigeben: 2023-03-25 17:56:02
Original
5856 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich beschrieben, wie man ein öffentliches WeChat-Konto mit PHP-WeChat erstellt und den QR-Code scannt, um das öffentliche Konto mit Parametern aufzurufen. Jetzt kann ich es mit Ihnen teilen

Um den Anforderungen von Szenarien wie der Analyse der Benutzerkanalförderung und der Bindung von Benutzerkonten gerecht zu werden, bietet die öffentliche Plattform eine Schnittstelle zum Generieren von QR-Codes mit Parametern. Über diese Schnittstelle können mehrere QR-Codes mit unterschiedlichen Szenenwerten abgerufen werden. Nachdem der Benutzer sie gescannt hat, kann das öffentliche Konto einen Ereignis-Push empfangen.

Derzeit gibt es zwei Arten von QR-Codes:

1. Temporäre QR-Codes haben eine Ablaufzeit und können auf maximal 30 Tage nach der Generierung des QR-Codes eingestellt werden , es läuft nach 2.592.000 Sekunden ab), es können aber auch größere Mengen erzeugt werden. Temporäre QR-Codes werden hauptsächlich in Geschäftsszenarien wie der Kontobindung verwendet, die keine dauerhafte Speicherung von QR-Codes erfordern
2. Permanente QR-Codes haben keine Ablaufzeit, aber die Anzahl ist gering (derzeit bis zu 100.000). Permanente QR-Codes werden hauptsächlich in Szenarien wie Kontobindung und Benutzerquellenstatistiken verwendet.

Wenn ein Benutzer einen QR-Code mit einem Szenenwert scannt, können die folgenden zwei Ereignisse ausgelöst werden:

Wenn der Benutzer dem offiziellen Konto nicht gefolgt ist, kann der Benutzer dem offiziellen Konto folgen. Anschließend werden WeChat-Szenariowert-Aufmerksamkeitsereignisse an Entwickler weitergegeben.

Wenn der Benutzer dem offiziellen Konto gefolgt ist, tritt der Benutzer nach dem Scannen automatisch in die Sitzung ein und WeChat sendet außerdem das Scan-Ereignis mit Szenenwert an den Entwickler.

Der Prozess zum Erhalten eines QR-Codes mit Parametern umfasst zwei Schritte: Erstellen Sie zunächst ein QR-Code-Ticket und verwenden Sie dann das Ticket für den Austausch gegen den QR-Code.

Erstellen Sie ein QR-Code-Ticket

Jedes Mal, wenn Sie ein QR-Code-Ticket erstellen, müssen Sie einen vom Entwickler festgelegten Parameter (scene_id) angeben. Wir führen den temporären QR-Code und den permanenten QR ein Code bzw. der Prozess der Erstellung eines QR-Code-Tickets.

Achtung
expire_seconds Die Gültigkeitszeit des QR-Codes in Sekunden. Der Höchstwert darf 2592000 (d. h. 30 Tage) nicht überschreiten. Wenn dieses Feld nicht ausgefüllt ist, beträgt die Standardgültigkeitsdauer 30 Sekunden.
action_name QR-Codetyp, QR_SCENE ist ein temporärer ganzzahliger Parameterwert, QR_STR_SCENE ist ein temporärer String-Parameterwert, QR_LIMIT_SCENE ist ein permanenter ganzzahliger Parameterwert, QR_LIMIT_STR_SCENE ist ein permanenter String-Parameterwert
action_info QR-Code-Details
scene_id Szenenwert-ID, die bei Verwendung eines temporären QR-Codes eine 32-Bit-Ganzzahl ungleich Null ist. Der Maximalwert bei Verwendung eines permanenten QR-Codes beträgt 100000 (derzeit unterstützt der Parameter nur 1–100000)
scene_str Szenenwert-ID (ID in Zeichenfolgenform), Zeichenfolgentyp, Längenbeschränkung beträgt 1 bis 64

<?php
namespace app\api\model;
set_time_limit(30);
class WxQrcode{
    //构造方法
    static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?";    
    static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";    
    static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?";    //生成二维码
    public function getEwm($fqid,$type = 1){
        $appid = &#39;你的appid&#39;;        $secret = &#39;你的secret&#39;;        
        $ACCESS_TOKEN = $this->getToken($appid,$secret);        
        $url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,$type);
        save_log(&#39;测试保存的路径&#39;.$url.&#39;fid&#39;.$fqid);        
        return $this->DownLoadQr($url,time());
    }    
    protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){
        $url = self::$qrcode_url.&#39;access_token=&#39;.$ACCESS_TOKEN;        
        if($type == 1){            
        //生成永久二维码
            $qrcode= &#39;{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_str": &#39;.$fqid.&#39;}}}&#39;;
        }else{            
        //生成临时二维码
            $qrcode = &#39;{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": &#39;.$fqid.&#39;}}}&#39;;
        }        $result = $this->http_post_data($url,$qrcode);        
        $oo = json_decode($result[1]);        
        if (empty($oo->ticket)){            
        return false;
        }        
        if(!$oo->ticket){            
        $this->ErrorLogger(&#39;getQrcodeurl falied. Error Info: getQrcodeurl get failed&#39;);            
        exit();
        }        $url = self::$qrcode_get_url.&#39;ticket=&#39;.$oo->ticket.&#39;&#39;;        
        return $url;
    }    
    protected function getToken($appid,$secret){
        $ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret");        
        $ACCESS_TOKEN = json_decode($ACCESS_TOKEN);        
        $ACCESS_TOKEN = $ACCESS_TOKEN->access_token;        
        return $ACCESS_TOKEN;
    }    
    protected function http_post_data($url, $data_string) {

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                
        &#39;Content-Type: application/json; charset=utf-8&#39;,                
        &#39;Content-Length: &#39; . strlen($data_string))
        );
        ob_start();
        curl_exec($ch);        i
        f (curl_errno($ch)) {            
        $this->ErrorLogger(&#39;curl falied. Error Info: &#39;.curl_error($ch));
        }        
        $return_content = ob_get_contents();
        ob_end_clean();        
        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);        
        return array($return_code, $return_content);
    }    //下载二维码到服务器
    protected function DownLoadQr($url,$filestring){
        if($url == ""){            
        return false;
        }        
        $filename = $filestring.rand(0,99999999999).&#39;.jpg&#39;;
        ob_start();
        readfile($url);        
        $img=ob_get_contents();
        ob_end_clean();        
        $size=strlen($img);        
        $fp2=fopen(&#39;static/qrcode/&#39;.$filename,"a");        
        if(fwrite($fp2,$img) === false){            
        $this->ErrorLogger(&#39;dolwload image falied. Error Info: 无法写入图片&#39;);            
        exit();
        }
        fclose($fp2);        
        return &#39;static/qrcode/&#39;.$filename;
    }    //错误日志
    private function ErrorLogger($errMsg){
        $logger = fopen(&#39;log.txt&#39;, &#39;a+&#39;);
        fwrite($logger, date(&#39;Y-m-d H:i:s&#39;)." Error Info : ".$errMsg."\r\n");
        fclose($logger);
    }

}
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinesisches Netz.

Verwandte Empfehlungen:

PHP WeChat-Entwicklung zur Synchronisierung von Fans

PHP WeChat-Entwicklung eines öffentlichen Kontos, um persönliche WeChat-Benutzerinformationen zu erhalten

Das obige ist der detaillierte Inhalt vonPHP WeChat generiert einen QR-Code für das öffentliche WeChat-Konto und scannt ihn, um das öffentliche Konto mit Parametern einzugeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage