Cet article est principalement destiné à tout le monde pour utiliser l'introduction détaillée des C#Instructions de développement WeChat. Il est d'une grande valeur de référence et pratique. Les amis intéressés peuvent s'y référer
Si vous ne le faites pas. Je ne veux pas dire des bêtises, vas-y directement Écrit ! Parce qu'il vous appartient d'écrire des essais, alors s'il vous plaît, ne me critiquez pas si vous le voyez...
1. Vous devez avoir un compte public WeChat
2. Vous pouvez également demander un compte WeChat de test , le lien vous est donnéhttp://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
Ensuite, pour créez mvc, vous n'avez besoin que de quelques clics pour télécharger VS et ce sera fait pour vous. Ce n'est pas un non-sens
Ensuite, vous devez créer un gestionnaire général, lui donner un nom avec désinvolture, réussir le test est la clé, dépêchez-vous...
/// <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; }
Ce code équivaut à une poignée de main de communication de jeton individuel avec le jeton que vous avez écrit dans [Développer]--"[Configuration de base] du compte public WeChat. Tant qu'ils communiquent entre eux , alors vous avez terminé !
Le terminer est quelque chose qui viendra plus tard. Il y a encore du travail à faire, alors continuez à écrire !
Comment le configurer ? C'est là le problème. Vous ne pouvez utiliser que des coquilles de cacahuètes pour le tester d'abord. Au moins, vous devez savoir si cela fonctionne après avoir joué longtemps !
Regardez l'image ci-dessous : Configuration de Peanut Shell à gauche -----ii est la reliure de publication du site Web à droite
En voyant cette image, vous comprenez également la prochaine étape Comment jouer. L'iis local est équipé d'un nom de domaine. C'est tellement génial...
Ci-dessous. Nous ajoutons du code. Configurez des tests d'envoi et de réponse automatique pour voir si vous pouvez jouer
#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
Ce ci-dessus, on envoie et on reçoit, ou est-ce toujours dans le gestionnaire WhApi.ashx à l'intérieur du fichier. Je veux juste que ce soit clair, haha !
Parce que votre poignée de main avec la plateforme publique a réussi, vous devez envoyer quelque chose pour essayer, n'est-ce pas~~
L'image ci-dessous est l'association entre une méthode de réception et un fichier de réponse de correspondance automatique, ne vous inquiétez pas, je le ferai expliquez ci-dessousTéléchargezce fichier !
Il reste encore une configuration manquante, à savoir configurer VS [Debug]----[Attacher au processus] , il vous suffit d'ajouter ce qui suit. Si vous cochez [Afficher tous les processus utilisateur], vous pouvez trouver w3wp.exe. S'il existe plusieurs processus de ce type, vous devez toujours confirmer la colonne [Nom d'utilisateur], sélectionnez celui avec le même. nommez votre pool de programmes, puis cliquez sur OK, confirmez la pièce jointe !
Suivant. C'est amusant………………………………………………………………………
Scannez le compte public de test sur WeChat et envoyez un message personnalisé pour voir quel type de réponse il y a c'est-à-dire que la configuration fastidieuse ci-dessus peut être déboguée en ajoutant des points d'arrêt, sinon cela ne sert à rien d'en faire autant, n'est-ce pas ? Assurez-vous simplement que l'envoi et la réception sont cohérents avec vos propres paramètres, alors tout ira bien.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!