public void ProcessRequest(HttpContext context)
{
var Request = context.Request;
var Response = context.Response;
context.Response.ContentType = “text/plain”;
//context.Response.ContentType = “text/xml”;
//公众平台上开发者设置的token, corpID, EncodingAESKey
string sCorpID = System.Configuration.ConfigurationManager.AppSettings[“sCorpID”];
string sToken = “”;
string sEncodingAESKey = “”;
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);
string sVerifyMsgSig = Request.QueryString[“msg_signature”];
string sVerifyTimeStamp = Request.QueryString[“timestamp”];
string sVerifyNonce = Request.QueryString[“nonce”];
string sVerifyEchoStr = Request.QueryString[“echostr”] ?? “”;
int ret = 0;
string sEchoStr = “”;
//获取表单提交内容
string postStr = string.Empty;
using (System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream))
{
postStr = sr.ReadToEnd();
}
if (!string.IsNullOrEmpty(postStr))
{
var xmldoc = new XmlDocument();
xmldoc.LoadXml(postStr);
XmlNode root = xmldoc.FirstChild;
string sPostData = root[“Encrypt”].InnerText;
ret = wxcpt.DecryptMsg(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, postStr, ref sEchoStr);
if (ret != 0)
{
SH.Utilities.Base.Log.LogHelper.Info(“WeChat”, "ERR: VerifyURL fail, ret: " + ret);
return;
}
//封装请求类
XmlDocument requestDocXml = new XmlDocument();
requestDocXml.LoadXml(sEchoStr);
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;
WxXmlModel.AgentID = rootElement.SelectSingleNode(“AgentID”).InnerText;
WxXmlModel.CompanyId = companyid;
switch (WxXmlModel.MsgType)
{
case “text”😕/文本
WxXmlModel.Content = rootElement.SelectSingleNode(“Content”).InnerText;
break;
case “image”😕/图片
WxXmlModel.PicUrl = rootElement.SelectSingleNode(“PicUrl”).InnerText;
break;
case “event”😕/事件
WxXmlModel.Event = rootElement.SelectSingleNode(“Event”).InnerText;
if (WxXmlModel.Event == “click”)//菜单点击
{
WxXmlModel.EventKey = rootElement.SelectSingleNode(“EventKey”).InnerText;
SH.WebApp.WeChatHelper.Report.sendMsg(WxXmlModel);
}
break;
default:
break;
}
string sReplyMsg = ResponseXML(WxXmlModel);//回复消息
ret = wxcpt.EncryptMsg(sReplyMsg, sVerifyTimeStamp, sVerifyNonce, ref sEchoStr);
if (ret != 0)
{
return;
}
Response.Write(sEchoStr);
Response.End();
return;
}
else
{
string sEncryptMsg = “”;
ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEncryptMsg);
if (ret != 0)
{
SH.Utilities.Base.Log.LogHelper.Info(“”, "ERR: VerifyURL fail, ret: " + ret);
Response.Write(“”);
Response.End();
return;
}
Response.Write(sEncryptMsg);
Response.End();
return;
}
}
2、根据不同用户行为操作做不同的消息类型回复
private string ResponseXML(WxXmlModel WxXmlModel)
{
string XML = “”;
switch (WxXmlModel.MsgType)
{
case “text”😕/文本回复
//批号查询
if (SH.WebApp.Extension.Utilities.IsBatchNumber(WxXmlModel))
{
WxXmlModel.EventKey = “BatchNumber_Search”;
XML = SH.WebApp.WeChatHelper.Report.sendMsg(WxXmlModel);
}
//流转卡查询
else if (SH.WebApp.Extension.Utilities.IsTransferCard(WxXmlModel))
{
WxXmlModel.EventKey = “TransferCard_Search”;
XML = SH.WebApp.WeChatHelper.Report.sendMsg(WxXmlModel);
}
//默认自动回复
else
{
XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
}
break;
case “event”:
switch (WxXmlModel.Event)
{
//点击菜单
case “click”:
if (string.IsNullOrEmpty(WxXmlModel.EventKey))
{
XML = SH.WebApp.WeChatHelper.Report.sendMsg(WxXmlModel);
}
break;
case “SCAN”:
XML = ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//扫描带参数二维码已关注 直接推送事件
break;
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
前端校招精编面试解析大全点击这里即可获取完整版pdf查看
链图片转存中…(img-x7MiwwSz-1711674070390)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
前端校招精编面试解析大全点击这里即可获取完整版pdf查看