基于微信公众测试平台进行开发测试,并在网上找了不少资料再此声明(若有占用代码请联系以备修改),因为比较杂不一一说明谢谢他们的努力。供有须要的人参考。html
首先是实现微信的认证,登陆微信测试平台咱们能够看到系统自动给了一个微信号,测试号信息:appID和appsecret。数组
在接口配置信息中,有URL和Token 二个文本框,咱们分别在URL上写上咱们的服务器测试文件的地址,采用的是通常处理程序相似(http://yourdomain.com/valided.ashx).服务器
Token的值咱们能够自定义。微信
而后咱们新建一个项目,新建valided.ashx文件用于验证。网络
//在ProcessRequest方法里面写上以下代码: if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST") { //do something }else{ AuthWechat(); //采用GET方法判断进入验证方法 } ///认证微信 private void AuthWechat() { string token = "testweixin";//Token的值 string echoString = HttpContext.Current.Request.QueryString["echoStr"]; string signature = HttpContext.Current.Request.QueryString["signature"]; string timestamp = HttpContext.Current.Request.QueryString["timestamp"]; string nonce = HttpContext.Current.Request.QueryString["nonce"]; if (CheckSignature(token, signature, timestamp, nonce)) { if (!string.IsNullOrEmpty(echoString)) { HttpContext.Current.Response.Write(echoString); HttpContext.Current.Response.End(); } } } /// <summary> /// 对微信传入参数进行封装到数组,拼接字符串,进行加密操做 /// </summary> private bool CheckSignature(string token, string signature, string timestamp, string nonce) { string[] ArrTmp = { token, timestamp, nonce };//将参数放进数组 Array.Sort(ArrTmp);//对数组进行排序 string tmpStr = string.Join("", ArrTmp);//将数组进行拼接 ///对拼接后的字符串进行加密操做 // tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); tmpStr=Membership.CreateUser(tmpStr, "SHA1").ToString(); //转换成小写形式 tmpStr = tmpStr.ToLower(); //比对成功返回 if (tmpStr == signature) { return true; } else { return false; } }
上图中的相关参数说明:app
描述 | |
---|---|
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
参考官方文档地址解析:验证消息真实性dom
将上面的代码保存后咱们编译下而后发布到服务器,在刚刚的测试号里面写好发布对应的地址,点击保存的时候系统会提示你是否配置成功,有时多是网络缘由会提示配置失败,建议多试几回,若是没有问题通常都会提示配置成功!这就实现了验证和签名。完成了重要的一步为其余接口的开发和实现奠基了基础。ide