<%@ WebHandler Language="C#" Class="wx_Handler_1" %> using System; using System.Web; using System.IO; using System.Xml; using eMIS.Data; using System.Data; using Tencent; /* * 本页面用于验证回调URL * 企业开启回调模式时,企业号会向验证URL发送一个get请求,此页面解密echostr原文, * 并将原文当作Get请求,返回给公众平台 * * cjx@2015/4/30 * * 本例,演示如何获取工作任务 * 此例中,在企业号应用中打开“回调模式”,并启用“上报用户进入应用事件”,当用户进入应用时,获取事件,解析其用户名 * 为方便起见,微信企业号中通讯录的用户名与eMIS系统中用户名相同 * */ public class wx_Handler_1 : IHttpHandler { public void ProcessRequest (HttpContext context) { Weixin wx = new Weixin(context); string logFile = Path.Combine(context.Request.PhysicalApplicationPath, @"log.txt"); if (wx.IsVerifyURL) { wx.VerifyURL(); } else { wx.Debug = false; Tencent.MessageObject msg = wx.DecryptMsg(); if (wx.Debug) { System.IO.File.AppendAllText(logFile, string.Format("{0} {1} \r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), msg.Msg)); } wx.Messager.GetAccesstoken(); eDbManager manager = new eDbManager(eMIS.Data.WebConfigManager.DefaultDb); eDbOperator dbo = manager.CreateDbOperator(); if (msg is EnterEventMessage) {//上报用户进入应用事件 Tencent.EnterEventMessage emsg = (EnterEventMessage)msg; //问候 object obj = dbo.ExecuteScalar("select xingming from com_yhb where login=?", msg.FromUserName); if (!Convert.IsDBNull(obj) && obj != null) { wx.Messager.SendTextToUser(string.Format("Hi, {0}!", obj, msg.FromUserName), msg.AgentID, msg.FromUserName); } else { wx.Messager.SendTextToUser(string.Format("Hi {0}, Why I can't find your name?", msg.FromUserName), msg.AgentID, msg.FromUserName); } } else if (msg is ClickEventMessage) { //按钮,回调菜单点击事件 Click ClickEventMessage cmsg = (ClickEventMessage)msg; if (cmsg.EventKey == "newtask") { string sql = "select top 20 * from XT_LCRW where exists(select * from COM_YHB where id=xt_lcrw.jsrid and login='" + msg.FromUserName + "') order by jssj"; DataTable dTable = dbo.ExecuteTable(sql); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.AppendLine(DateTime.Now.ToString("MM-dd HH:mm:ss")); int i = 1; if (dTable.Rows.Count > 0) { foreach (DataRow row in dTable.Rows) { sb.AppendFormat("{0}、{1}[{2}]", i, row["cxmc"], Convert.ToDateTime(row["jssj"]).ToString("MM-dd HH:mm")); sb.AppendLine(); i++; } } else { sb.Append("没有待办工作!"); } //任务 wx.Messager.SendTextToUser(sb.ToString(), msg.AgentID, msg.FromUserName); } else if (cmsg.EventKey == "OA") { string s =context.Request.Url.AbsoluteUri; s = s.Substring(0, s.LastIndexOf('/')); eMIS.Security.eDESCryptography desc = new eMIS.Security.eDESCryptography(); string surl = "{0}/m.aspx?uid={2}&u={1}"; //surl = string.Format(surl, s,desc.Encrypt(msg.FromUserName),msg.FromUserName); surl = string.Format("{0}/m.aspx?{1}", s, WeiXinWebCommon.UEncode(msg.FromUserName)); wx.Messager.SendTextToUser(string.Format("欢迎使用,请点击这里登录Here",surl), msg.AgentID, msg.FromUserName); } else if (cmsg.EventKey == "AUTOLOGIN") { } } } } public bool IsReusable { get { return false; } } }