Heim  >  Artikel  >  WeChat-Applet  >  WeChat-Entwicklung asp.net

WeChat-Entwicklung asp.net

高洛峰
高洛峰Original
2017-02-23 13:51:541547Durchsuche

Ich war kürzlich mit der WeChat-Entwicklung vertraut und habe mir auch PHP-Code angesehen, aber am Ende habe ich immer noch die C#-Sprache verwendet

Ich habe im Hintergrund eine neue index.ashx-Datei erstellt. was schneller ist;

Zuerst die Top-Anführungszeichen

mit System.IO;
mit System.Xml; und die andere besteht darin, die XML-Datei später zu verarbeiten.

Setzen Sie zuerst das Token ein und empfangen Sie verschiedene Parameter. Die Anforderungsmethode wird per get gesendet () Funktion;
public class index : IHttpHandler {

    private readonly string Token = "xxxx";//与微信公众账号后台的Token设置保持一致,区分大小写。
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";

        string signature = context.Request["signature"];
        string timestamp = context.Request["timestamp"];
        string nonce = context.Request["nonce"];
        string echostr = context.Request["echostr"];

        if (context.Request.HttpMethod == "GET")
        {
            if (CheckSign(signature, timestamp, nonce))
            {
                context.Response.Output.Write(echostr);
            }
        }
        else
        {
            //post method - 当有用户想公众账号发送消息时触发,写事件
        }

        context.Response.End();
    }

Tatsächlich besteht das Bewusstsein hier darin, A/B/C/D zu empfangen, E anzupassen, B/C/E F zu generieren, es mit A zu vergleichen und die Ausgabe zurückzugeben D wenn gleich;

public bool CheckSign(string signature, string timestamp, string nonce)
    {
        string[] strs = new string[] { Token, timestamp, nonce };
        Array.Sort(strs);//排序
        string strNew = string.Join("", strs);//连接成字符串
        strNew = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strNew, "SHA1");//加密
        if (signature == strNew.ToLower())
            return true;
        return false;
    }

Bitte weisen Sie darauf hin, wenn die Schrift nicht gut ist! !
string xmlFromWeChat = new StreamReader(context.Request.InputStream).ReadToEnd();//读取XML流
            XmlDocument xmldocument = new XmlDocument();
            xmldocument.LoadXml(xmlFromWeChat);加载字符串
            string fromContent = xmldocument.GetElementsByTagName("Content").Item(0).InnerText;
            string fromMsgType = xmldocument.GetElementsByTagName("MsgType").Item(0).InnerText;

Auf diese Weise können wir die empfangenen Daten beurteilen und entsprechende Vorgänge durchführen. Das Wichtigste ist, mit der Schnittstelle vertraut zu sein.

Das Folgende ist ein Beispiel . , vielleicht nicht sehr abstrakt:

Dies ist eine einfache Antwort

public string receiveText(string xmlFromWeChat)
    {
        XmlDocument xmlText = new XmlDocument();
        xmlText.LoadXml(xmlFromWeChat);
        string content;
        string xmlStr;
        string keyword = xmlText.GetElementsByTagName("Content").Item(0).InnerText.Trim();
        
               content = "欢迎关注xxx!";
               string[] defArray = { xmlText.GetElementsByTagName("FromUserName").Item(0).InnerText, 
                              xmlText.GetElementsByTagName("ToUserName").Item(0).InnerText, 
                              ConvertDateTimeInt(DateTime.Now).ToString(),
                              content};
               xmlStr = transmitText(defArray);
               
        }
        
        
        return xmlStr;
    }
public string transmitText(string[] xmlArray)
    {
        string xmlstring = @"<xml>
                            <tousername></tousername>
                            <fromusername></fromusername>
                            <createtime>{2}</createtime>
                            <msgtype></msgtype>
                            <content></content>
                            </xml>";
        string xmlstr = string.Format(xmlstring, xmlArray);
        return xmlstr;
    }

Für Weitere Artikel zur WeChat-Entwicklung asp.net. Bitte beachten Sie die chinesische PHP-Website!

WeChat-Entwicklung asp.net

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