Heim  >  Artikel  >  WeChat-Applet  >  Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Y2J
Y2JOriginal
2017-05-09 09:20:042147Durchsuche

Das Funktionsprinzip der Nachrichtenschnittstelle der öffentlichen WeChat-Plattform kann grob wie folgt verstanden werden: Der Prozess vom Benutzerende zum Ende des öffentlichen Kontos ist wie folgt: Der Benutzer sendet eine Nachricht an Der WeChat-Server empfängt die Nachricht an die vom Benutzer beim Zugriff eingegebene URL. Im URL-Handler wird zunächst die Legitimität der Nachricht beurteilt basierend auf dem Inhalt des Nachrichtentextes erstellt. Das Prinzip ist leicht zu verstehen und für diejenigen, die schon einmal mit Steckdosen in Berührung gekommen sind, möglicherweise einfacher.

Allerdings ist die Dokumentation von WeChat manchmal etwas verwirrend und die Dokumentation zum WeChat-Zugriff ist wirklich nicht schmeichelhaft. Der erste Schritt im offiziellen Dokument besteht darin, „eine Nachrichtenschnittstelle zu beantragen“. Hier müssen Sie eine URL eingeben. Diese URL wird zur Verarbeitung von Nachrichten verwendet, die von WeChat gesendet werden. Im zweiten Schritt schreibt WeChat jedoch die entsprechende Konfiguration . Seien Sie vorsichtig und Sie werden Neulinge vermasseln. Im Folgenden werde ich es nach meinem Verständnis erklären.

Wenn der Entwickler zugreift, sendet der WeChat-Server zunächst eine Get-Anfrage an die von Ihnen eingegebene URL. Diese Anfrage enthält vier Parameter bzw. eine Signatur (verschlüsselte WeChat-Signatur, Signatur). Kombination Der vom Entwickler ausgefüllte Token-Parameter und der timestamp-Parameter und Nonce-Parameter in der Anfrage), timestamp (timestamp), nonce (zufällige Zahl), echostr (zufällige Zeichenfolge) .Verwenden Sie HttpContext.Current.Request.RawUrl, um die ursprüngliche URL der aktuellen Anfrage abzurufen, wie in der Abbildung unten gezeigt:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Der Entwickler überprüft die Anfrage, indem er die Signatur (unten) Verifizierungsmethode). Wenn bestätigt wird, dass diese GET-Anfrage vom WeChat-Server stammt, geben Sie bitte den Inhalt des Echostr-Parameters unverändert zurück. Dann wird der Zugriff wirksam und Sie werden erfolgreich zum Entwickler, andernfalls schlägt der Zugriff fehl.

加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
下面是代码实现。
首先,在你的处理程序中(我是新建了一个一般处理程序wx.ashx),判断当前请求的类型,因为接入时,是发送的GET请求,消息处理是发送的POST请求。如下图:
这里我对验证url的方法进行封装。
/// <summary>
        /// 验证url权限, 接入服务器        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public static bool ValidUrl(string token)
        {            string echoStr = VqiRequest.GetQueryString("echoStr");            if (CheckSignature(token))
            {                if (!string.IsNullOrEmpty(echoStr))
                {
                    Utils.ResponseWrite(echoStr);                    return true;
                }

            }            return false;
        }/// <summary>
        /// 验证微信签名        /// </summary>
        /// * 将token、timestamp、nonce三个参数进行字典序排序        /// * 将三个参数字符串拼接成一个字符串进行sha1加密        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。        /// <returns></returns>
        public static bool CheckSignature(string token)
        {            string signature = VqiRequest.GetQueryString("signature");            string timestamp = VqiRequest.GetQueryString("timestamp");            string nonce = VqiRequest.GetQueryString("nonce");            string[] ArrTmp = { token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = Utils.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();            if (tmpStr == signature)
            {                return true;
            }            else
            {                return false;
            }
        }

Hinweis: Der Code VqiRequest.GetQueryString ist eine gekapselte QueryString-Anfragemethode. Wenn er verwendet wird, kann er in QueryString[""] geändert werden

Der Verarbeitungsprozess ist wie in der Abbildung dargestellt:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Fügen Sie die drei Parameter Signatur, Zeitstempel und Nonce in das array ,

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Sortiert ArrTmp:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Drei Es werden drei Parameterzeichenfolgen zu einer Zeichenfolge zusammengefügt:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

tmpStr mit sha1 verschlüsseln und die verschlüsselte Zeichenfolge in Kleinbuchstaben umwandeln:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Vergleichen Sie es dann mit der Signatur. Wenn sie identisch sind, bedeutet dies, dass die Überprüfung erfolgreich war.

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Die Verifizierung ist erfolgreich und echoStr wird an WeChat zurückgegeben.

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

/// <summary>
        /// 根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码        /// </summary>
        /// <param name="str">要进行哈希运算的密码</param>
        /// <param name="type"> 要使用的哈希算法</param>
        /// <returns>经过哈希运算的密码</returns>
        public static string HashPasswordForStoringInConfigFile(string str, string type)
        {            return FormsAuthentication.HashPasswordForStoringInConfigFile(str, type);
        }        public static void ResponseWrite(string str)
        {
            HttpContext.Current.Response.Write(str);
            HttpContext.Current.Response.End();
        }

Nachdem das Verarbeitungsprogramm geschrieben wurde, stellen Sie es in iis bereit (die Methode finden Sie in Tutorial 1). Melden Sie sich beim WeChat-Verwaltungshintergrund an mp. weixin.qq.com/ Klicken Sie auf der Entwicklercenter-Seite auf die Schaltfläche „Konfiguration ändern“, um die URL, das Token und den EncodingAESKey einzugeben, wobei die URL die von Entwicklern zum Empfangen verwendete Schnittstellen-URL ist WeChat-Serverdaten. Das Token kann vom Entwickler ausgefüllt und zum Generieren einer Signatur verwendet werden (das Token wird mit dem in der Schnittstellen-URL enthaltenen Token verglichen, um die Sicherheit zu überprüfen). EncodingAESKey wird vom Entwickler manuell eingegeben oder zufällig generiert und als Verschlüsselungs- und Entschlüsselungsschlüssel für den Nachrichtentext verwendet. Gleichzeitig können Entwickler Methoden zur Nachrichtenverschlüsselung und -entschlüsselung wählen: Klartextmodus, Kompatibilitätsmodus und Sicherheitsmodus. Die Modusauswahl und Serverkonfiguration werden sofort nach der Übermittlung wirksam. Der Standard-Status der Verschlüsselungs- und Entschlüsselungsmethode ist der Klartextmodus. Die Verschlüsselungs- und Entschlüsselungsmodi werden Ihnen in einer späteren Serie vorgestellt, also bleiben Sie auf dem Laufenden.

Wie im Bild gezeigt:

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

Nachdem Sie auf „Senden“ geklickt haben, wird die Bitte rufen Sie den WeChat-Server über die oben angegebene URL auf. Wenn die Überprüfung erfolgreich ist, ist die Bindung erfolgreich.

Leitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung

ENDE

[Verwandte Empfehlungen]

1.Quellcode der WeChat-Plattform für öffentliche Konten herunterladen

2.Quellcode des WeChat-Abstimmungssystems

Das obige ist der detaillierte Inhalt vonLeitfaden für den Zugang für Neulinge zur WeChat-Entwicklungsabteilung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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