.net如何开发微信公众平台
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了".net如何开发微信公众平台",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下".net如何开发微信公众平台"这篇文章吧。公众平台信息
千家信息网最后更新 2026年11月04日.net如何开发微信公众平台
这篇文章主要为大家展示了".net如何开发微信公众平台",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下".net如何开发微信公众平台"这篇文章吧。
公众平台信息http://www.php.cn/code/11829.html" target="_blank">接口为开发者提供了一种新的消息处理方式,只有申请成为开发者后,你才能使用公众平台的开发功能,在这里你需要填写一个URL和一个Token,这两项信息也需要你拥有自己的服务器(外网服务器)资源,其中的Token可由开发者任意填写,URL即是接口配置信息的链接地址,在本文中我采用的是创建一个简易网站的方式,在其中的一个页面的后台程序中配置相关的接口信息,然后发布到外网服务器上,最后可以访问到这个页面的链接地址即是这里应该填写的URL。
接口配置过程:
1.网址接入-校验签名:
const string Token = "aka";//定义一个局部变量不可以被修改,这里定义的变量要与接口配置信息中填写的Token一致protected void Page_Load(object sender, EventArgs e){ string postStr = ""; Valid();//校验签名,当填入的信息提交之后页面有提示"你已成功成为公众平台开发者,可以使用公众平台的开发功能"这个的时候,接下来你就需要注释掉这个校验的方法,使得后面的消息回复得以正常运作 if (Request.HttpMethod.ToLower() == "post")//当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL上 { postStr = PostInput(); if (string.IsNullOrEmpty(postStr) == false) { //WriteLog(postStr,Server);//计入日记 ResponseMsg(postStr); } }}private void Valid(){ string echoStr = Request.QueryString["echoStr"].ToString(); if (CheckSignature()) { if (!string.IsNullOrEmpty(echoStr)) { Response.Write(echoStr); Response.End(); } }}////// 验证微信签名/// ///private bool CheckSignature(){ string signature = Request.QueryString["signature"].ToString(); string timestamp = Request.QueryString["timestamp"].ToString(); string nonce = Request.QueryString["nonce"].ToString(); string[] ArrTmp = { Token, timestamp, nonce }; Array.Sort(ArrTmp);//字典排序 string tmpStr = string.Join("", ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//对该字符串进行sha1加密 tmpStr = tmpStr.ToLower();//对字符串中的字母部分进行小写转换,非字母字符不作处理 //WriteLog(tmpStr, Server);//计入日志 if (tmpStr == signature)//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。开发者通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败 { return true; } else return false;}/// /// 获取post返回来的数据/// ///private string PostInput(){ Stream s = System.Web.HttpContext.Current.Request.InputStream; byte[] b = new byte[s.Length]; s.Read(b, 0, (int)s.Length); return Encoding.UTF8.GetString(b);}/// ///返回微信信息结果/// /// private void ResponseMsg(string weixinXML){ try { XmlDocument doc = new XmlDocument(); doc.LoadXml(weixinXML);//读取XML字符串 XmlElement rootElement = doc.DocumentElement; XmlNode MsgType = rootElement.SelectSingleNode("MsgType");//获取字符串中的消息类型 string resxml = ""; if (MsgType.InnerText == "text")//如果消息类型为文本消息 { var model = new { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = MsgType.InnerText, Content = rootElement.SelectSingleNode("Content").InnerText, MsgId = rootElement.SelectSingleNode("MsgId").InnerText }; resxml += ""; } } else//没有接收到消息 { resxml += " " + ConvertDateTimeInt(DateTime.Now) + " "; if (!string.IsNullOrEmpty(model.Content))//如果接收到消息 { if (model.Content.Contains(" 你好") || model.Content.Contains(" 好") || model.Content.Contains("hi") || model.Content.Contains("hello"))// 你好 { resxml += "0 0 "; } Response.Write(resxml); } if (MsgType.InnerText == "image")//如果消息类型为图片消息 { var model = new { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = MsgType.InnerText, PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText, MsgId = rootElement.SelectSingleNode("MsgId").InnerText }; resxml += ""; Response.Write(resxml); } else//如果是其余的消息类型 { var model = new { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, }; resxml += " " + ConvertDateTimeInt(DateTime.Now) + " 1 0 "; Response.Write(resxml); } } catch (Exception ex) { throw ex; } Response.End(); }/// " + ConvertDateTimeInt(DateTime.Now) + " 0 /// datetime转换成unixtime/// /// ///private int ConvertDateTimeInt(System.DateTime time){ System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)(time - startTime).TotalSeconds;}/// /// 写日志(用于跟踪),可以将想打印出的内容计入一个文本文件里面,便于测试/// public static void WriteLog(string strMemo, HttpServerUtility server){ string filename = server.MapPath("/logs/log.txt");//在网站项目中建立一个文件夹命名logs(然后在文件夹中随便建立一个web页面文件,避免网站在发布到服务器之后看不到预定文件) if (!Directory.Exists(server.MapPath("//logs//"))) Directory.CreateDirectory("//logs//"); StreamWriter sr = null; try { if (!File.Exists(filename)) { sr = File.CreateText(filename); } else { sr = File.AppendText(filename); } sr.WriteLine(strMemo); } catch { } finally { if (sr != null) sr.Close(); }}
以上是".net如何开发微信公众平台"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
消息
公众
开发
平台
信息
字符
开发者
服务器
服务
内容
字符串
接口
文件
类型
页面
配置
发微
篇文章
网站
接入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
腾讯阿里互联网科技
百单互联网科技有限公司
睿民互联网科技
天下捷融互联网科技
互联网科技公司有哪些
华中科技有哪些互联网大佬
卫星互联网科技股票
中盈科技互联网信息有限公司
互联网科技热点资讯
互联网科技中介
顶级互联网科技成果有哪些
互联网为啥属于高科技
苏州五指互联网络科技有限
青海科技产业互联网发展
如何创新互联网科技
互联网时代的科技公司
伍佰万互联网科技怎么赚钱
互联网相关科技技术
互联网时代高科技布局
互联网科技创业有什么好项目
新华互联网科技学校
融贸通互联网科技
火传媒上海互联网科技
左右互联网络科技
互联网科技创新服务
互联网为啥属于高科技
美国互联网科技实力
易企秀互联网科技是做什么的
互联网科技包装股
保山浩联互联网科技有限公司