Maison  >  Article  >  Applet WeChat  >  Développement WeChat asp.net

Développement WeChat asp.net

高洛峰
高洛峰original
2017-02-23 13:51:541555parcourir

J'ai récemment été exposé au développement de WeChat, et j'ai également regardé le code PHP, mais au final j'ai quand même utilisé le langage c#

J'ai créé un nouveau fichier index.ashx en arrière-plan, ce qui est plus rapide ;

Tout d'abord Les principales citations

en utilisant System.IO
en utilisant System.Xml

La première consiste à recevoir le flux de fichiers XML, et l'autre consiste à traiter le fichier XML plus tard ;

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();
    }

Définissez d'abord le jeton et recevez divers paramètres. La méthode de requête est envoyée par get

L'essentiel ici est le CheckSign. () fonction ;

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;
    }

En fait, la conscience ici doit recevoir A/B/C/D, E est personnalisé, B/C/E génère F, le compare avec A et renvoie le sortie D si égal ;

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;

Veuillez indiquer si l'écriture n'est pas bonne ! !

De cette façon, nous pouvons juger les données reçues et effectuer les opérations correspondantes. Le plus important est de se familiariser avec l'interface

Ce qui suit est un exemple ; . , peut-être pas très abstrait :

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;
    }

C'est une réponse simple

Développement WeChat asp.net


Pour plus d'articles liés au développement WeChat asp.net, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn