>  기사  >  위챗 애플릿  >  C# WeChat 개발 지침 사용 소개

C# WeChat 개발 지침 사용 소개

高洛峰
高洛峰원래의
2017-03-15 17:05:361445검색

이 글은 주로 모든 사람들이 C#WeChat 개발 지침에 대한 자세한 소개를 사용하도록 작성되었습니다. 관심 있는 친구들이 참고할 수 있습니다.

헛소리 하기 싫으니 그냥 직접 가세요 글! 에세이는 여러분의 몫이니까 보시고 욕하진 말아주세요...
1. 위챗 공개계정이 있어야 합니다
2. 위챗 테스트 계정도 신청 가능합니다 , 링크가 제공됩니다http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
그런 다음 mvc를 생성하세요. 몇 번의 클릭만으로 VS를 다운로드하면 완료됩니다. 말도 안되는 소리는 아니네요
다음은 일반 핸들러를 만들어서 아무렇게나 이름을 지어주고, 테스트 통과가 관건이니 서둘러주세요...

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

이 코드는 WeChat 공식 계정의 [개발] - [기본 구성]에서 작성한 토큰과 일대일 토큰 통신 핸드셰이크에 해당합니다. 끝났어!

마무리는 일은 나중에 할 일이니 계속해서 글을 써주세요!
어떻게 구성해야 할까요? 먼저 땅콩 껍질만 사용해 테스트하면 됩니다. 적어도 오랫동안 플레이한 후에는 작동하는지 알아야 합니다!
아래 사진을 보세요: 왼쪽 땅콩 껍질 구성 ----- 오른쪽 iis 웹사이트 퍼블리싱 바인딩

C# WeChat 개발 지침 사용 소개

이 사진을 보세요. 또한 다음 단계의 플레이 방법도 이해합니다. 로컬 iis에는 도메인 이름이 장착되어 있습니다. 존나 짱이네...
아래. 코드를 추가합니다. 보내기 및 자동 응답 테스트를 설정하여

 #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

를 재생할 수 있는지 확인하세요. 위의 항목은 전송 중이고 다른 하나는 수신 중이거나 WhApi에서 .ashx 처리기 파일 . 나는 단지 분명히 하고 싶다, 하하!
퍼블릭 플랫폼과의 악수가 성공했으니, 뭔가를 보내야겠죠~~
아래 그림은 수신 방법과 자동 매칭 응답 파일의 연관성을 보여줍니다. 아래 설명을업로드해 주세요!

C# WeChat 개발 지침 사용 소개

아직 하나의 구성이 누락되었습니다. 즉, VS를 설정하는 것입니다. [디버그]----[프로세스에 연결] , 다음 항목만 추가하면 됩니다. [모든 사용자 프로세스 표시]를 선택하면 w3wp.exe를 찾을 수 있습니다. 이러한 프로세스가 여러 개인 경우에도 [사용자 이름] 열을 확인하고 동일한 항목을 선택해야 합니다. 프로그램 풀로 이름을 지정하고 확인을 클릭한 후 첨부를 확인하세요!
다음. 재밌네요…………………………………………………
WeChat의 테스트 공개 계정을 스캔하고 맞춤 메시지를 보내서 어떤 답글이 있는지 확인하세요. 지루한 구성은 중단점을 추가하여 디버깅할 수 있습니다. 그렇지 않으면 그렇게 많은 작업을 수행할 필요가 없습니다. 그렇죠? 전송 및 수신이 자신의 설정과 일치하는지 확인하면 괜찮습니다.

위 내용은 C# WeChat 개발 지침 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.