公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
////// 验证签名 /// /// public void processRequest(String xml) { try { // xml请求解析 Hashtable requestHT = WeixinServer.ParseXml(xml); // 发送方帐号(open_id) string fromUserName = (string)requestHT["FromUserName"]; // 公众帐号 string toUserName = (string)requestHT["ToUserName"]; // 消息类型 string msgType = (string)requestHT["MsgType"]; //文字消息 if (msgType == ReqMsgType.Text) { // Response.Write(str); string content = (string)requestHT["Content"]; if(content=="1") { // Response.Write(str); Response.Write(GetNewsMessage(toUserName, fromUserName)); return; } if (content == "2") { Response.Write(GetUserBlogMessage(toUserName, fromUserName)); return; } if (content == "3") { Response.Write(GetGroupMessage(toUserName, fromUserName)); return; } if (content == "4") { Response.Write(GetWinePartyMessage(toUserName, fromUserName)); return; } Response.Write(GetMainMenuMessage(toUserName, fromUserName, "你好,我是vinehoo,")); } else if (msgType == ReqMsgType.Event) { // 事件类型 String eventType = (string)requestHT["Event"]; // 订阅 if (eventType==ReqEventType.Subscribe) { Response.Write(GetMainMenuMessage(toUserName, fromUserName, "谢谢您的关注!,")); } // 取消订阅 else if (eventType==ReqEventType.Unsubscribe) { // TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息 } // 自定义菜单点击事件 else if (eventType==ReqEventType.CLICK) { // TODO 自定义菜单权没有开放,暂不处理该类消息 } } else if (msgType == ReqMsgType.Location) { } } catch (Exception e) { } }
以上就是关于ASP.NET微信开发接口指南的相关内容介绍,希望对大家的学习有所帮助。
以上就是ASP.NET微信开发接口指南详细介绍的详细内容,更多请关注php中文网其它相关文章!