.NET 微信Token验证和消息接收和回复
public class wxXmlModel
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public string CreateTime { get; set; }
public string MsgType { get; set; }
public string Content { get; set; }
public string MsgId { get; set; } }
public string Token = "Token";
protected void Page_Load(object sender, EventArgs e)
{
string echoStr = Request.QueryString["echoStr"];
if (CheckSignature() && !string.IsNullOrEmpty(echoStr))
{
Response.Write(echoStr);
Response.End();
}
else {
//如果没有接收到echostr说明不在是使用token验证
//接收微信发送过来的xml消息并且解析
Stream requestSream=HttpContext.Current.Request.InputStream;
byte[] requestByte=new byte[requestSream.Length];
requestSream.Read(requestByte,,(int)requestSream.Length);
string requestStr=Encoding.UTF8.GetString(requestByte);
if(!string.IsNullOrEmpty(requestStr))
{
//封装请求类
XmlDocument requestDocXml=new XmlDocument();
requestDocXml.LoadXml(requestStr);
XmlElement rootElement=requestDocXml.DocumentElement;
wxXmlModel wxXmlModel=new wxXmlModel();
wxXmlModel.ToUserName=rootElement.SelectSingleNode("ToUserName").InnerText;
wxXmlModel.FromUserName=rootElement.SelectSingleNode("FromUserName").InnerText;
wxXmlModel.CreateTime=rootElement.SelectSingleNode("CreateTime").InnerText;
wxXmlModel.MsgType=rootElement.SelectSingleNode("MsgType").InnerText;
switch(wxXmlModel.MsgType)
{
case "text":
wxXmlModel.Content=rootElement.SelectSingleNode("Content").InnerText;
break;
default:
break;
}
string xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + wxXmlModel.FromUserName+ "]]></ToUserName>"
+ "<FromUserName><![CDATA[" + wxXmlModel.ToUserName + "]]></FromUserName>"
+ "<CreateTime>" + DateTime.Now + "</CreateTime>"
+ "<MsgType><![CDATA[text]]></MsgType>"
+ "<Content><![CDATA["+wxXmlModel.Content+"]]></Content>"
+ "</xml>";
Response.Write(xmlMsg);
}
}
}
private bool CheckSignature()
{
string signature = Request.QueryString["signature"];
string timestamp = Request.QueryString["timestamp"];
string nonce = Request.QueryString["nonce"];
string[] arrTmp = { Token, timestamp, nonce };
Array.Sort(arrTmp);
string tmpStr = string.Join("", arrTmp);
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
if (tmpStr != null)
{
tmpStr = tmpStr.ToLower();
return tmpStr == signature;
}
return false;
}
.NET 微信Token验证和消息接收和回复的更多相关文章
- 微信开发——微信公众平台实现消息接收以及消息的处理(Java版)
本文主要讲述了如何在微信公众平台实现消息接收以及消息的处理,使用java语言开发,现在把实现思路和代码整理出来分先给兄弟们,希望给他们带来帮助. 温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微 ...
- 微信开发之消息接收与回复--weixin-java-tools
一.前言 在上一篇文章<微信开发之如何使用开发工具--weixin-java-tools>中我给各位介绍了weixin-java-tools,并且介绍了如何使用weixin-java-to ...
- 8-网页,网站,微信公众号基础入门(使用Python程序实现微信token验证)
https://www.cnblogs.com/yangfengwu/p/11062034.html 设置一下IP白名单: 填写自己的服务器的IP地址 是不是不可以哈,有多少人都会入这个坑.... ...
- 基于PHP的微信公众平台开发(TOKEN验证,消息回复)
微信公众平台开发 实现步骤: 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL).Token和EncodingAE ...
- 微信token验证失败的解决方法
一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...
- 微信token验证失败的几种情况
最近在研究用PHP做微信开发的时候,“修改配置时”,总是遇到token验证失败的提示.历经一番查找,种种输出日志和echo,发现,如果不echo调试信息,也不写日志,就不需要ob_clean(),如果 ...
- 微信token验证源码分享(c#版)
在开发时遇到一个问题: 上线后提交申请微信提示"您的服务器没有正确响应token验证...",我查看日志发现根本就没有接收到来自微信的参数. 后来我又记录了微信请求方式和请求的字符 ...
- 微信 token 验证
package org.sxl.weixin; import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- .net 微信Token验证
首次接受这个项目,看了微信的API,云里雾里,经过几经测试,理清思路 开发者自个申请,微信API给出四个参数: 下面我解释下 signature 是微信加密签名 即:微信服务器将 timetamp n ...
随机推荐
- java设计模式 策略模式Strategy
本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...
- 查看mysql数据库版本方法总结
当你接手某个mysql数据库管理时,首先你需要查看维护的mysql数据库版本:当开发人员问你mysql数据库版本时,而恰好你又遗忘了,那么此时也需要去查看mysql数据库的版本............ ...
- Attempt to fetch logical page (...) in database 2 failed. It belongs to allocation unit xxxx not to xxx
今天一个同事说在一个生产库执行某个存储过程,遇到了错误: Fatal error 605 occurred at jul 29 2014 我试着执行该存储过程,结果出现下面错误,每次执行该存储过程,得 ...
- PHP 源码学习之线程安全
从作用域上来说,C语言可以定义4种不同的变量:全局变量,静态全局变量,局部变量,静态局部变量. 下面仅从函数作用域的角度分析一下不同的变量,假设所有变量声明不重名. 全局变量,在函数外声明,例如,in ...
- 3-1 Linux文件管理类命令详解
根据马哥Linux初级 03-01整理 1. 目录管理 ls cd pwd mkdir rmdir tree 2. 文件管理 touch stat file rm cp mv nano 3. 日期时间 ...
- 常用ADC滤波处理
#define N 70 XDATA WORD Value_buf[N]; XDATA DWORD ADCValue; static BYTE v_gu8cnt=0; static BYTE i=0; ...
- Android欢迎界面
欢迎界面,最典型的表现: 1.是整个应用的启动界面: 2.没有标题栏: 3.几秒之后才进入主界面. 所以实现上面3点,一个最基本的欢迎界面就做出来了. 首先,新建一个Activity,命名为Splas ...
- awk-笔记
语法形式: awk [options] 'script' var=value file1 [file...] awk [options] -f scriptfile var=value file [f ...
- EF with (LocalDb)V11.0
EF虽说对LocalDb支持的不错,但LocalDb有自身的缺陷(不想sqlite那样数据库文件可以像普通文件一样使用). LocalDb在一个计算机上会对数据库有唯一性约束,要求本机的localdb ...
- mybatis 快速入门
1 . 定义 java实体类 User,建立user表 读者请自行完成准备工作. User 类 有 id, name,age 属性 user 表 中 id,name,age字段 id自增长 ...