如何使用C#开发微信
这篇文章主要介绍如何使用C#开发微信,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
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对比,标识该请求来源于微信。 privateboolCheckSignature() { vartoken="token"; varsignature=HttpContext.Current.Request.QueryString["signature"]; vartimestamp=HttpContext.Current.Request.QueryString["timestamp"]; varnonce=HttpContext.Current.Request.QueryString["nonce"]; varechostr=HttpContext.Current.Request.QueryString["echostr"]; string[]ArrTmp={token,timestamp,nonce}; Array.Sort(ArrTmp);//字典排序 vartmpStr=string.Join("",ArrTmp); tmpStr=FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,"SHA1");//加密方式 if(tmpStr.ToLower()==signature) { returntrue; } returnfalse; }
这代码相当于是跟微信公众号中【开发】--》【基本配置】里面你所写的Token 一个一对一令牌通信握手,只要互相通了,那么你就算是搞定了!
搞定是后话,还有工作没做完,接着写!怎么配置,这是问题,哎只能用花生壳给测试先,至少要知道玩了半天是不是通的!看下图:左边花生壳配置-----右边iis网站发布绑定
看到这图,你也明白下一步怎么玩了吧。本地iis配上了域名。这简直屌爆了………… 下面。我们加上代码。设置发送和自动回复测试,看看能不能玩
#region接收消息 ///<summary> ///接收微信发送的XML消息并且解析 ///</summary> privatevoidReceiveXml() { varrequestStream=HttpContext.Current.Request.InputStream; varrequestByte=newbyte[requestStream.Length]; requestStream.Read(requestByte,0,(int)requestStream.Length); varrequestStr=Encoding.UTF8.GetString(requestByte); if(!string.IsNullOrEmpty(requestStr)) { //封装请求类 varrequestDocXml=newXmlDocument(); requestDocXml.LoadXml(requestStr); varrootElement=requestDocXml.DocumentElement; if(rootElement==null)return; varwxXmlModel=newWxXmlModel { 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回复消息 privatevoidResponseXML(WxXmlModelWxXmlModel) { varQrCodeApi=newQrCodeApi(); varXML=""; 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处理程序文件里面。我就想说清楚,呵呵! 因为你根公众平台握手成功了,你肯定要发点东西过去试试对吧~~下图是一个接收方法和一个自动匹配回复文件的关联,别急下面我会上传这个文件!
还缺一个配置,就是vs要设置【调试】----【附加到进程】,只需要把下面【显示所有用户进程】一项打勾,你就能找到w3wp.exe 如果有多个这样的进程,那你还是要确认【用户名】那一列,选中跟你程序池名称一样的就ok,点附加,确定附加!
以上是“如何使用C#开发微信”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
在Python中,将K添加到列元组列表中的最小元素
处理数据集涉及识别特定列中的最小值并通过添加常量值(K)来更新它。通过实施优化的解决方案,我们可以有效地执行此操作,这对于数据...
-
使用switch case语句编写的C程序,用于计算几何图形的面积
#includevoidmain(){intfig_code;floatside,base,length,...
-
如何使 C# 代码可重用?
要在C#中使代码可重用,请使用接口。接口定义属性、方法和事件,这些成员是接口的成员。接口只包含成员的声明。派生类负责定义成员。这通...
-
C# 中的覆盖和隐藏有什么区别?
方法隐藏在C#中也称为隐藏。父类的方法可供子类使用,无需在遮蔽中使用override关键字。子类有其自己版本的相同函数。在...
-
在Java中使用示例双倍longValue()函数
Java是一种强大的面向对象语言,可以对各种数据类型进行高度的控制和精确度。其中一种功能是doublelongValue(),...
-
如何在Java中定义JSON字段名称的命名约定?
TheFieldNamingPolicycanbeusedtodefineafewstandardnaming...
-
Servlet中的HttpSession接口
在JavaWeb开发领域,了解HttpSession接口是创建动态和响应式Web应用程序的关键。在本文中,我们将探讨...
-
使用while循环查找自然数之和的Java程序
自然数之和可以使用编程语言中的不同迭代语句来计算。迭代语句是执行一组特定代码行直到循环语句中的条件失败的语句。在本文中,我们将讨论...
-
我们可以将Java数组转换为列表吗?
我们可以使用Arrays.asList()方法轻松地将Java数组转换为List。语法publicstaticLi...
-
Java中如何在不使用任何外部库的情况下读取网页内容?
TheURLclassofthejava.netpackagerepresentsaUniformResour...