Dieser Artikel richtet sich hauptsächlich an alle, die eine ausführliche Einführung in C#WeChat-Entwicklungsanweisungen wünschen. Er ist von großem Referenzwert und praktisch. Interessierte Freunde können sich darauf beziehen Ich will keinen Unsinn reden, geh einfach direkt Geschrieben! Da es Ihnen überlassen bleibt, Aufsätze zu schreiben, kritisieren Sie mich bitte nicht, wenn Sie es sehen...
1. Sie müssen über ein öffentliches WeChat-Konto verfügen 2. Sie können auch ein Test-WeChat-Konto beantragen , der Link wird Ihnen gegeben
http
://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/loginDann zu Erstellen Sie mvc
, Sie brauchen nur ein paar Klicks. Laden Sie VS herunter und es wird für Sie erledigt. Das ist kein Unsinn Als nächstes müssen Sie einen allgemeinen Handler erstellen, ihm beiläufig einen Namen geben, das Bestehen des Tests ist der Schlüssel, beeilen Sie sich ...
/// <summary> /// 验证微信签名 /// </summary> /// <returns></returns> /// * 将token、timestamp、nonce三个参数进行字典序排序 /// * 将三个参数字符串拼接成一个字符串进行sha1加密 /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。 private bool CheckSignature() { var token = "token"; var signature = HttpContext.Current.Request.QueryString["signature"]; var timestamp = HttpContext.Current.Request.QueryString["timestamp"]; var nonce = HttpContext.Current.Request.QueryString["nonce"]; var echostr = HttpContext.Current.Request.QueryString["echostr"]; string[] ArrTmp = { token, timestamp, nonce }; Array.Sort(ArrTmp); //字典排序 var tmpStr = string.Join("", ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//加密方式 if (tmpStr.ToLower() == signature) { return true; } return false; }
Dieser Code entspricht einem Eins-zu-eins-Token-Kommunikations-Handshake mit dem Token, den Sie in [Entwickeln] – „[Grundkonfiguration] des öffentlichen WeChat-Kontos geschrieben haben. Solange sie miteinander kommunizieren , dann bist du fertig!
Die Fertigstellung kommt später. Es gibt noch viel zu tun, also schreiben Sie weiter!
Wie konfiguriere ich es? Sie können es nur mit Erdnussschalen testen, nachdem Sie es längere Zeit gespielt haben.Sehen Sie sich das Bild unten an: Erdnussschalenkonfiguration auf der linken Seite -----iis Website Publishing-Bindung auf der rechten Seite
Sie sehen dieses Bild, Sie Verstehen Sie auch den nächsten Schritt, wie man spielt. Der lokale IIS ist mit einem Domänennamen ausgestattet. Das ist so verdammt großartig...
#region 接收消息 /// <summary> /// 接收微信发送的XML消息并且解析 /// </summary> private void ReceiveXml() { var requestStream = HttpContext.Current.Request.InputStream; var requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); var requestStr = Encoding.UTF8.GetString(requestByte); if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 var requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); var rootElement = requestDocXml.DocumentElement; if (rootElement == null) return; var wxXmlModel = new WxXmlModel { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = rootElement.SelectSingleNode("MsgType").InnerText }; switch (wxXmlModel.MsgType) { case "text"://文本 wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image"://图片 wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event"://事件 wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH")//关注类型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } ResponseXML(wxXmlModel);//回复消息 } } #endregion #region 回复消息 private void ResponseXML(WxXmlModel WxXmlModel) { var QrCodeApi = new QrCodeApi(); var XML = ""; switch (WxXmlModel.MsgType) { case "text"://文本回复 XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; case "event": switch (WxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(WxXmlModel.EventKey)) { XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, "关注成功"); } else { XML = ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//扫描带参数二维码先关注后推送事件 } break; case "SCAN": XML = ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//扫描带参数二维码已关注 直接推送事件 break; } break; default://默认回复 break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); } #endregion
Das obige sendet und empfängt, oder ist es immer noch so? im WhApi.ashx-Handler in der Datei. Ich möchte es nur klarstellen, haha!
Da Ihr Handshake mit der öffentlichen Plattform erfolgreich war, müssen Sie etwas zum Ausprobieren senden, richtig~~Das Bild unten zeigt die Zuordnung zwischen einer Empfangsmethode und einer automatisch passenden Antwortdatei. Keine Sorge, das werde ich tun unten erklären
Laden
diese Datei hoch!
Es fehlt noch eine Konfiguration, nämlich die Einrichtung von VS [
Debug]----[An Prozess anhängen] , müssen Sie nur Folgendes hinzufügen: Wenn Sie [Alle Benutzerprozesse anzeigen] aktivieren, finden Sie w3wp.exe. Wenn es mehrere solcher Prozesse gibt, müssen Sie noch die Spalte [Benutzername] bestätigen und den mit demselben auswählen Geben Sie den Namen Ihres Programmpools ein und klicken Sie auf „Anhängen“. Bestätigen Sie den Anhang. Weiter. Es macht Spaß………………………………………………………………… Scannen Sie das öffentliche Testkonto auf WeChat und senden Sie eine individuelle Nachricht, um zu sehen, welche Antworten es gibt. Die Konfiguration ist umständlich und Sie können Haltepunkte zum Debuggen hinzufügen. Andernfalls macht es keinen Sinn, so viel zu tun, oder? Stellen Sie einfach sicher, dass das Senden und Empfangen mit Ihren eigenen Einstellungen übereinstimmt.
Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von C# WeChat-Entwicklungsanweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!