Heim  >  Artikel  >  WeChat-Applet  >  Entwicklung der öffentlichen WeChat-Plattform, um personalisierten QR-Code zu erhalten

Entwicklung der öffentlichen WeChat-Plattform, um personalisierten QR-Code zu erhalten

高洛峰
高洛峰Original
2017-03-03 10:06:491644Durchsuche

1. Funktionseinführung

Bei der Werbung können wir der anderen Partei mitteilen, was unser öffentliches WeChat-Konto ist, und Kunden können danach suchen und ihm dann folgen. Der QR-Code bietet uns großen Komfort. Scannen Sie ihn einfach und Sie können ihm folgen.

Wenn Sie es bereits verfolgt haben, springen Sie sofort in den Konversationsbildschirm. Wenn wir Werbung machen, handelt es sich nicht mehr nur um einen einfachen Text, sondern um einen personalisierten QR-Code, der auf jeden Fall sehr lebendig sein wird.

WeChat bietet gute Unterstützung für QR-Codes und kann bei Bedarf auch QR-Codes für verschiedene Szenarien generieren. Im Folgenden erklären wir Ihnen, wie Sie QR-Codes erhalten und verwenden.

Hinweis: Beschränkt auf Dienstkonto und WeChat-Authentifizierung, Gebühr 300

微信公众平台开发获取个性二维码

2. Zugehörige Schnittstellen

Um den Anforderungen der Benutzerkanal-Werbeanalyse 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 offizielle Konto einen Ereignis-Push erhalten.

Derzeit gibt es zwei Arten von QR-Codes, nämlich temporäre QR-Codes und permanente QR-Codes. Erstere haben eine Ablaufzeit von bis zu 1800 Sekunden, können aber eine größere Anzahl generieren, während letztere keine Ablaufzeit haben . , die Zahl ist klein (derzeit unterstützen die Parameter nur 1--1000). Die beiden QR-Codes eignen sich jeweils für die Kontobindung, Benutzerquellenstatistiken und andere Szenarien.

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

  1. Wenn der Benutzer dem offiziellen Konto nicht gefolgt ist, kann er dies tun Folgen Sie dem offiziellen Konto. Nach der Aufmerksamkeit wird WeChat dem Entwickler ein Aufmerksamkeitsereignis mit Szenenwert zukommen lassen.

  2. 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.

Anleitung zur temporären QR-Code-Anfrage

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

Anleitung zur permanenten QR-Code-Anfrage

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

Parameterbeschreibung

参数 说明
expire_seconds 该二维码有效时间,以秒为单位。 最大不超过1800。
action_name 二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久
action_info 二维码详细信息
scene_id 场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000

Rückgabebeschreibung

Korrektes Json-Rückgabeergebnis:

{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}

参数 说明
ticket 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
expire_seconds 二维码的有效时间,以秒为单位。最大不超过1800。

Beispiel für eine falsche Json-Rückgabe:

{"errcode":40013,"errmsg":"invalid appid"}

Globale Rückgabecode-Beschreibung

Verwenden Sie Web-Debugging-Tools, um die Schnittstelle zu debuggen

Ticket gegen QR-Code eintauschen

QR-Code-Ticket erhalten Anschließend können Entwickler umtauschen Tickets für QR-Code-Bilder. Bitte beachten Sie, dass diese Schnittstelle ohne Anmeldung aufgerufen werden kann.

Anleitung anfordern

HTTP GET请求(请使用https协议)
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

Anleitung zur Rückgabe

Wenn das Ticket korrekt ist, lautet der http-Rückgabecode 200, ein Bild, das direkt angezeigt oder heruntergeladen werden kann.

HTTP-Header (Beispiel) lautet wie folgt:

Accept-Ranges:bytes
Cache-control:max-age=604800Connection:keep-alive
Content-Length:28026Content-Type:image/jpg
Date:Wed, 16 Oct 2013 06:37:10 GMT
Expires:Wed, 23 Oct 2013 14:37:10 +0800Server:nginx/1.4.1

Im Fehlerfall ( (z. B. illegales Ticket) gibt den HTTP-Fehlercode 404 zurück.

3. Spezifische Implementierung

Fügen Sie weiterhin Funktionen basierend auf dem vorherigen Roboterfall hinzu, schauen Sie sich einfach den Code an.

/// <summary>
    /// 二维码管理者
    /// </summary>
    public class DimensionalCodeManager
    {
        /// <summary>
        /// 临时二维码地址
        /// </summary>
        /// 使用string.format时,报:字符串格式错误,因为其中有{
        //private const string TEMP_URL = "{\"expire_seconds\": 1800, \"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": {0}}}}";
        /// <summary>
        /// 解决办法,将原有字符串中的一个{用两个{代替
        /// </summary>
        private const string TEMP_JSON_DATA = "{{\"expire_seconds\": 1800, \"action_name\": \"QR_SCENE\", \"action_info\": {{\"scene\": {{\"scene_id\": {0}}}}}}}";
        /// <summary>
        /// 永久二维码地址
        /// </summary>
        private const string PERMANENT_URL = "{{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {{\"scene\": {{\"scene_id\": {0}}}}}}}";
        /// <summary>
        /// 获取ticket的URL
        /// </summary>
        private const string GET_TICKET_URL = " https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";
        /// <summary>
        /// 获取二维码URL
        /// </summary>
        private const string GET_CODE_URL = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}";
        /// <summary>
        /// 根据场景ID获取ticket
        /// </summary>
        /// <param name="sceneID">场景ID</param>
        /// <param name="isTemp">是否是临时二维码</param>
        /// <returns></returns>
        private static string GetTicket(int sceneID, bool isTemp)
        {
            string result = null;
            string data = string.Empty;
            if (isTemp)
            {
                data = string.Format(TEMP_JSON_DATA, sceneID.ToString());
            }
            else
            {
                if (sceneID > 0 && sceneID <= 1000)
                {
                    data = string.Format(PERMANENT_URL, sceneID);
                }
                else
                {
                    //scene_id不合法
                    return null;
                }
            }

            string ticketJson = HttpUtility.GetData(string.Format(GET_TICKET_URL,Context.AccessToken));

            XDocument doc = XmlUtility.ParseJson(ticketJson, "root");
            XElement root = doc.Root;
            if (root != null)
            {
                XElement ticket = root.Element("ticket");
                if (ticket != null)
                {
                    result = ticket.Value;
                }
            }

            return result;
        }
        /// <summary>
        /// 创建临时二维码
        /// </summary>
        /// <param name="sceneID">场景id,int类型</param>
        /// <returns></returns>
        public static string GenerateTemp(int sceneID)
        {
            string ticket = GetTicket(sceneID,true);
            if (ticket == null)
            {
                return null;
            }

            return HttpUtility.GetData(string.Format(GET_CODE_URL, ticket));
        }
        /// <summary>
        /// 创建临时二维码
        /// </summary>
        /// <param name="sceneID">场景id,int类型</param>
        /// <returns></returns>
        public static string GeneratePermanent(int sceneID)
        {
            string ticket = GetTicket(sceneID, false);
            if (ticket == null)
            {
                return null;
            }

            return HttpUtility.GetData(string.Format(GET_CODE_URL, ticket));
        }
    }

Weitere Informationen zur Entwicklung der öffentlichen WeChat-Plattform zum Erhalten personalisierter QR-Codes finden Sie auf der chinesischen PHP-Website für verwandte Artikel !

Stellungnahme:
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