public string Analysis(HttpContext context, string jsonDate, string appid) { string resxml = ""; try { JobLogs.Writer(log_Folder, "------------------- 分割线 -------------------"); XmlDocument doc = new XmlDocument(); doc.XmlResolver = null; doc.LoadXml(jsonDate);//读取xml字符串 XmlElement root = doc.DocumentElement; ExmlMsg xmlMsg = GetExmlMsg(root); string messageType = xmlMsg.MsgType;//获取收到的消息类型。文本(text),图片(image),语音等。 string openid = xmlMsg.FromUserName; switch (messageType) { //当消息为文本时 case "text": string con = xmlMsg.Content.Trim(); //自动化测试的专用测试公众号 if (con == "TESTCOMPONENT_MSG_TYPE_TEXT") { resxml = ReplyWX.text_xml("TESTCOMPONENT_MSG_TYPE_TEXT_callback", openid, xmlMsg.ToUserName, xmlMsg.CreateTime); } else { #region ** string[] Contents = con.Split(':'); if (Contents.Length == 2 && Contents[0] == "QUERY_AUTH_CODE") { string auth = Contents[0]; string code = Contents[1]; string Appsecret = ""; string Ticket = ""; string Token = ""; string Code = ""; GetToken(appid, ref Appsecret, ref Ticket, ref Token, ref Code); //获取Token JobLogs.Writer(log_Folder, "Token111111111111" + Token); if (Token == "") { appid = "wx1939f9ee65384f14"; GetToken(appid, ref Appsecret, ref Ticket, ref Token, ref Code); } if (Token != "") { JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <string, object> csInfo = new Dictionary <string, object>(); csInfo.Add("component_appid", appid); // csInfo.Add("authorization_code", code); // string menuInfo = serializer.Serialize(csInfo); string postUrl = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=" + Token; string val = TemplateMessage.PostWebRequest(postUrl, menuInfo); JobLogs.Writer(log_Folder, "返回结果:" + val); Dictionary <string, object> dToken = (Dictionary <string, object>)serializer.DeserializeObject(val); if (dToken != null && dToken.Count == 1) { Dictionary <string, object> dInfo = dToken["authorization_info"] as Dictionary <string, object>; string access_token = ""; object value; if (dInfo.TryGetValue("authorizer_access_token", out value)) { access_token = value.ToString(); JobLogs.Writer(log_Folder, "access_token:" + access_token); SendText(access_token, openid, code + "_from_api"); } } } } #endregion } break; case "event": if (!string.IsNullOrEmpty(xmlMsg.EventName) && (xmlMsg.EventName == "subscribe" || xmlMsg.EventName == "SCAN")) { break; JobLogs.Writer("event", jsonDate); //写入日志 Hashtable ht = new Hashtable(); ht["ToUserName"] = xmlMsg.ToUserName; ht["FromUserName"] = xmlMsg.FromUserName; ht["CreateTime"] = xmlMsg.CreateTime; ht["MsgType"] = xmlMsg.MsgType; ht["Event"] = xmlMsg.EventName; ht["EventKey"] = xmlMsg.EventKey; bool zizhu = (string.IsNullOrEmpty(xmlMsg.EventKey) || xmlMsg.EventKey.IndexOf("last_trade_no") >= 0); //是否为自主关注 ht["Independent"] = zizhu; ht["Url"] = context.Request.Url.ToString(); DataFactory.SqlDataBase().InsertByHashtable("Wx_CallbackLog", ht); string AdminHotelId = ApplicationHelper.GetHotelTweetsInfo(xmlMsg.ToUserName).Rows[0]["AdminHotelid"].ToString(); set_user_tag(AdminHotelId, openid); //设置为星标用户 if (zizhu) { //if (xmlMsg.ToUserName.ToString() == "gh_4305dc154099") //{ // //关注智订云推送信息 // resxml = ReplyWX.ZDY_Reply(xmlMsg.ToUserName, xmlMsg.FromUserName, xmlMsg.CreateTime); //} //else //{ // resxml = ReplyWX.AutonomyFollow(xmlMsg.ToUserName, xmlMsg.FromUserName, xmlMsg.CreateTime);//自主关注 //} break; } string[] keys = xmlMsg.EventKey.Split('@'); if (keys.Length < 2) { break; } string key_val = keys[1]; switch (xmlMsg.EventName) { case "subscribe": //用户未关注时,进行关注后的事件推送 switch (key_val) { case "3": //扫描二维码回复事件 3 string userid = keys[2]; ReplyWX.ScanUserCode(xmlMsg.FromUserName, userid, "扫推广码[第三方]"); break; case "4": //扫描酒店/门店二维码回复事件 ReplyWX.ScanHotelCode(xmlMsg.ToUserName, keys[2], xmlMsg.FromUserName, xmlMsg.CreateTime); break; default: break; } break; case "SCAN": //用户已关注时的事件推送 switch (key_val) { case "3": //扫描二维码回复事件 3 string userid = keys[2]; ReplyWX.ScanUserCode(xmlMsg.FromUserName, userid, "扫推广码[第三方]"); break; case "4": //扫描酒店/门店二维码回复事件 ReplyWX.ScanHotelCode(xmlMsg.ToUserName, keys[2], xmlMsg.FromUserName, xmlMsg.CreateTime); break; default: break; } break; case "scancode_push": //用户已关注时的事件推送 switch (key_val) { case "3": //扫描二维码回复事件 3 string userid = keys[2]; ReplyWX.ScanUserCode(xmlMsg.FromUserName, userid, "扫推广码[第三方]"); break; case "4": //扫描酒店/门店二维码回复事件 ReplyWX.ScanHotelCode(xmlMsg.ToUserName, keys[2], xmlMsg.FromUserName, xmlMsg.CreateTime); break; default: break; } break; default: break; } } else if (xmlMsg.EventName == "unsubscribe") //取消订阅 { Hashtable ht = new Hashtable(); ht["ToUserName"] = xmlMsg.ToUserName; ht["FromUserName"] = xmlMsg.FromUserName; ht["CreateTime"] = xmlMsg.CreateTime; ht["MsgType"] = xmlMsg.MsgType; ht["Event"] = xmlMsg.EventName; ht["EventKey"] = xmlMsg.EventKey; ht["Independent"] = "0"; ht["Url"] = context.Request.Url.ToString(); DataFactory.SqlDataBase().InsertByHashtable("Wx_CallbackLog", ht); } else if (xmlMsg.EventName == "CLICK") //点击菜单拉取消息时的事件推送 { string click_key = xmlMsg.EventKey; if (click_key == "wgz") //默认菜单 点击是重新获取一下 菜单权限 { JobLogs.Writer(log_Folder, "------------------默认菜单 点击是重新获取一下 菜单权限-------------------:"); string AdminHotelId = ApplicationHelper.GetHotelTweetsInfo(xmlMsg.ToUserName).Rows[0]["AdminHotelid"].ToString(); set_user_tag(AdminHotelId, openid); //string yd_yrl = string.Format("http://www.zidinn.com/Reservation/HotelList.aspx?AdminHotelid={0}", AdminHotelId); //resxml = ReplyWX.text_xml("<a href='" + yd_yrl + "'>酒店预订</a>", openid, xmlMsg.ToUserName, xmlMsg.CreateTime); } } break; case "image": //2 回复图片消息 break; case "voice": //回复语音消息 break; case "vedio": //回复视频消息 break; case "music": //回复音乐消息 break; case "news": //回复图文消息 break; case "location": //上报地理位置事件 break; case "link": break; default: break; } } catch (Exception ex) { resxml = ex.Message; } return(resxml); }
private void get_union(HttpContext context) { string AdminHotelId = context.Request["AdminHotelId"].ToString(); string HotelId = context.Request["HotelId"].ToString(); string openid = context.Request["openid"].ToString(); #region ** 获取 unionid ** string data = get_data(AdminHotelId, openid); JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <string, object> userInfo = (Dictionary <string, object>)serializer.DeserializeObject(data); object value = null; string errcode = ""; if (userInfo.TryGetValue("errcode", out value)) { errcode = value.ToString(); } if (errcode == "40001") { Hashtable htToken = new Hashtable(); htToken["Access_Token"] = ""; DataFactory.SqlDataBase().UpdateByHashtable("WX_Access_Token", "AdminHotelId", AdminHotelId, htToken); Dictionary <string, object> csInfo = new Dictionary <string, object>(); csInfo.Add("AdminHotelId", AdminHotelId); // csInfo.Add("HotelId", HotelId); // string menuInfo = serializer.Serialize(csInfo); string postUrl = "http://zidinn.com/API/wxtoken.ashx?action=set_token"; TemplateMessage.PostWebRequest(postUrl, menuInfo); data = get_data(AdminHotelId, openid); userInfo = (Dictionary <string, object>)serializer.DeserializeObject(data); } string subscribe = ""; if (userInfo.TryGetValue("subscribe", out value)) { subscribe = value.ToString(); } if (subscribe == "" || subscribe == "0")//未关注 { return; } string subscribe_time = ""; //用户关注时间 string qr_scene_str = "0"; //二维码参数 if (userInfo.TryGetValue("subscribe_time", out value)) { subscribe_time = value.ToString(); } if (userInfo.TryGetValue("qr_scene_str", out value)) { qr_scene_str = value.ToString(); } Hashtable ht = new Hashtable(); ht["ToUserName"] = ApplicationHelper.GetWxPayConfig(AdminHotelId, "Original_ID", Convert.ToInt32(HotelId)); ht["FromUserName"] = openid; ht["CreateTime"] = subscribe_time; ht["MsgType"] = "event"; ht["Event"] = "SCAN"; ht["EventKey"] = qr_scene_str; bool zizhu = (string.IsNullOrEmpty(qr_scene_str) || qr_scene_str.IndexOf("last_trade_no") >= 0);//是否为自主关注 ht["Independent"] = zizhu; ht["Url"] = context.Request.Url.ToString(); DataFactory.SqlDataBase().InsertByHashtable("Wx_CallbackLog", ht); string[] keys = qr_scene_str.Split('@'); if (keys.Length < 2) { return; } string key_val = keys[1]; switch (key_val) { case "3": //扫描二维码回复事件 3 string userid = keys[2]; ReplyWX.ScanUserCode(openid, userid, "扫推广码[回调]"); break; default: break; } #endregion }