Maison  >  Article  >  Applet WeChat  >  La première étape pour démarrer avec le développement C# WeChat

La première étape pour démarrer avec le développement C# WeChat

Y2J
Y2Joriginal
2017-04-24 15:08:441424parcourir

Je ne veux pas dire de bêtises, écrivez-le simplement ! Parce qu'il vous appartient d'écrire des essais, alors maîtres, ne vous plaignez pas quand vous le voyez...

1. Vous devez avoir un compte public WeChat
2. Vous pouvez postulez également pour un compte WeChat test, le lien vous est donné http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
Ensuite, pour créer mvc, il vous suffit de cliquer en quelques clics et VS le fera pour vous. Ce n'est pas un non-sens
Ensuite, vous devez créer un programme de traitement 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 est équivalent à le [Développement] dans le compte officiel WeChat 】--》[Configuration de base] Le jeton que vous y avez écrit est une poignée de main de communication de jeton individuel. Tant qu'ils communiquent entre eux, alors vous avez terminé !

Le terminer est quelque chose qui vient plus tard. Il y a encore du travail à faire, alors continuez à écrire !
Comment le configurer ? C'est là le problème. Vous ne pouvez d'abord utiliser que des coquilles de cacahuètes. 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

avec un envoi et une réception, toujours dans le fichier de gestionnaire WhApi.ashx. 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 automatique. Ne vous inquiétez pas, je le ferai. téléchargez ce document ci-dessous!

Il manque encore une configuration, c'est-à-dire définir [Debug] ---- [Attach to process] pour VS, il vous suffit de changer ce qui suit [Afficher tous les processus utilisateur] Cochez un élément et vous pourrez trouver w3wp.exe S'il existe plusieurs processus de ce type, vous devez toujours confirmer la colonne [Nom d'utilisateur], sélectionnez celui qui porte le même nom que votre. pool de programmes, cliquez sur OK, cliquez sur Attacher et 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.
Ça y est.........c'est fini.

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!

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