.net如何开发微信公众平台
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要为大家展示了".net如何开发微信公众平台",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下".net如何开发微信公众平台"这篇文章吧。公众平台信息
千家信息网最后更新 2025年11月13日.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安全错误
数据库的锁怎样保障安全
光学成像仿真软件开发公司
提高政治意识做好网络安全
上海微创网络技术有限公司估值
数据库带参数过程执行
重庆服务器机房厂家供应云服务器
服务器机柜 排行
adni数据库下载不了
厦门网络安全招聘岗位
dfs 文件服务器 博客园
虹口区先进网络技术售后保障
邢台通票软件开发有限公司
惠普服务器默认管理ip6
服务器时间服务
长沙学院网络技术
卫辉软件开发公司
山西统一软件开发值得推荐
mcmiao服务器
数据库技术与应用 苏仕华
数据库应用程序是依据编写的
tcp服务器怎么储存所有客户端
微信被扫支付 软件开发
网络安全法 2020
目前软件开发哪种语言比较好
绿盟科技总部网络安全
不同数据库的数据类型
北京柠檬互联网科技有限公司
ps3登陆psn服务器维护
侠盗飞车圣安地列斯服务器
深圳麦芽网络技术有限公司
刘文印网络安全吗