微信公众平台开发者模式 C# 实现简单接口,验证URL的有效性。
加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 加密后的字符串可与signature对比,标识该请求来源于微信
4.最后要返回echoStr
private bool checkSignature() /*** 检验signature ***/ { string signature = Request["signature"]; string timestamp = Request["timestamp"]; string nonce = Request["nonce"]; string[] tmpArr = { token, timestamp, nonce }; Array.Sort(tmpArr); //字典排序 string tmpStr = string.Join("", tmpArr); //串联成字符串 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); //进行sha1加密 tmpStr = tmpStr.ToLower(); //换为小写 if (tmpStr == signature) return true; else return false; } private void valid() /*** 原样返回echostr参数内容 ***/ { string echoStr = Request["echostr"]; //腾讯发来的随机字串。 Response.Write(echoStr); //把这个原样返回给腾讯服务器 Response.End(); }
未解决问题:
1.sha1加密后为什么字符串还要用Tolwer()变成小写才能通过验证?不变就验证不了 (已解:确实需要。)
2.原来可以验证,弄成发布版就验证不了了。(已解决:需要把编译成的*.dll文件放到服务器根目录的bin文件夹里面。2014-07-24)
asp.net微信公众平台信息的收发模式
分为微信客户端、微信服务器以及网站服务器
1.微信客户端发送信息给微信服务器
2.微信服务器把接收的信息以XML的形式发送给网站服务器
3.网站实现对信息的处理
4.网站以XML的形式把处理结果返还给微信服务器
5.微信服务器把信息反馈给微信客户端
接下来要准备去看一点PHP方面的知识,因为网上的教程大部分是PHP,要先了解一下PHP代码的一些格式才能看懂,之后再自己编写C#