/// <summary> /// 微信消息推送 /// </summary> /// <returns></returns> public ActionResult wxcheck(int id = 0) { try { WeixinServer _wx = new WeixinServer(); if (Request.HttpMethod.ToUpper() == "POST") { using (StreamReader stream = new StreamReader(Request.InputStream)) { string xml = stream.ReadToEnd(); //log4net.LogHelper.WriteInfo(this.GetType(), "微信事件推送:" + xml); if (!string.IsNullOrEmpty(xml)) { _wx.processRequest(xml, id); Response.End(); } } } else { _wx.Auth(string.Empty); Response.End(); } } catch (Exception ex) { log4net.LogHelper.WriteError(this.GetType(), ex); } return(View()); }
// // GET: /wx/ /// <summary> /// 新微信公众号处理请求 /// </summary> /// <returns></returns> public string Index() { #region 处理请求 if (Request.HttpMethod.ToUpper() == "GET")//GET { // 微信加密签名 string signature = Request.QueryString["signature"]; // 时间戳 string timestamp = Request.QueryString["timestamp"]; // 随机数 string nonce = Request.QueryString["nonce"]; // 随机字符串 string echostr = Request.QueryString["echostr"]; if (WeixinServer.CheckSignature(signature, timestamp, nonce)) { return(echostr); } } else if (Request.HttpMethod.ToUpper() == "POST") { Stream s = System.Web.HttpContext.Current.Request.InputStream; byte[] b = new byte[s.Length]; s.Read(b, 0, (int)s.Length); string postStr = Encoding.UTF8.GetString(b); //System.IO.File.AppendAllText(Context.Server.MapPath("img") + "log4.txt", postStr + "\r\n\r\n"); return(new WeiXinProcessing.WeiXinProcess().processRequest(postStr)); } #endregion return(""); }
protected void button1_Click(object sender, EventArgs e) { tbl_canshu canshu = new tbl_canshu(); canshu.GetModel(1); WeixinServer wx = new WeixinServer(); wx.GetUserInfo(canshu.sys_name, "oNxcK0j0c2vIH0pgwdeVuhHNzNRs"); Response.Write("<script language=javascript>alert('" + wx.nickname + "');history.go(-1);</script>"); //GetUserInfo(canshu.sys_name, "oNxcK0j0c2vIH0pgwdeVuhHNzNRs"); }
protected void button_get_Click(object sender, EventArgs e) { WeixinServer wx = new WeixinServer(); //string a = wx.JsCode2Session(); tbl_canshu canshu = new tbl_canshu(); canshu.GetModel(1); canshu.id = 1; canshu.sys_name = wx.access_token; canshu.Update(); }
public static String getPerpetualQR(String account) { WeixinServer wx = new WeixinServer(); string token = wx.access_token; //获取数据的地址(微信提供) String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}"; url = string.Format(url, token); //发送给微信服务器的数据 String jsonStr = "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\":{\"scene\": {\"scene_id\": " + account + "}}}"; tbl_canshu casnhu = new tbl_canshu(); casnhu.GetModel(1); casnhu.canshu_gonggao = jsonStr; //casnhu.sys_name = shangid; casnhu.Update(); //post请求得到返回数据(这里是封装过的,就是普通的java post请求) String response = wx.GetPage(url, jsonStr); return(response); }
///// <summary> ///// 处理具体的微信请求 ///// </summary> ///// <param name="poststr"></param> ///// <returns></returns> //public static string processRequest(string poststr) //{ // return ""; //} /// <summary> /// 处理微信发来的请求 /// </summary> /// <param name="xml"></param> public string processRequest(String xml) { try { #region 初始化接受到的xml 初始化消息父类 // xml请求解析 Hashtable requestHT = WeixinServer.ParseXml(xml); // 发送方帐号(open_id) string fromUserName = (string)requestHT["FromUserName"]; // 公众帐号 string toUserName = (string)requestHT["ToUserName"]; // 消息类型 string msgType = (string)requestHT["MsgType"]; BaseMessage info = new BaseMessage(); info.FromUserName = fromUserName; info.ToUserName = toUserName; info.MsgType = msgType; #endregion //文字消息 if (msgType == ReqMsgType.Text) { string s = ResponseByText(requestHT["Content"].ToString(), info); return(s); #region 描述 //用户在点击按钮后的输入以后 session[用户id]!=null //如果session["用户id"]=="自助服务菜单下" 那么用户所有的输入都是按照 自助服务菜单下做回复 用户切换菜单后session[用户id]="新的用户菜单" //主界面的用户输入最好不要和自定义菜单的输入重复; 这样就可以实现不同菜单下用户输入相同的数字 服务器做出不同的响应 #endregion } //事件推送 else if (msgType == ReqMsgType.Event) { // 事件类型 String eventType = (string)requestHT["Event"]; #region 订阅取消订阅部分 // 订阅 if (eventType.ToLower() == ReqEventType.Subscribe) { //qrscene_123123 if (requestHT["EventKey"].ToString().Contains("qrscene_")) //用户未关注情况下 { #region MyRegion #endregion if (requestHT["EventKey"].ToString() == "qrscene_2") { List <ArticleEntity> lis = new List <ArticleEntity> { new ArticleEntity { Description = "大砍价", Title = "活动详情", PicUrl = "http:/mobile.mj100.com/active/img/price.png", Url = "http://mobile.mj100.com/wechart/login7" } }; return(GetresponseNews(info, lis)); } else { return(GetresponseText(info, @"感谢您关注极客美家服务号!极客美家是集设计、装修、建材、家居领域为一体,提供优质家装配套服务的云装修平台。点击屏幕下方功能按钮,您可以预约量房、查看装修工程进度,还可以申请装修贷款。" + requestHT["EventKey"].ToString())); } } else { return(GetresponseText(info, @"感谢您关注极客美家服务号!极客美家是集设计、装修、建材、家居领域为一体,提供优质家装配套服务的云装修平台。点击屏幕下方功能按钮,您可以预约量房、查看装修工程进度,还可以申请装修贷款。 ")); } } // 取消订阅 else if (eventType.ToLower() == ReqEventType.Unsubscribe) { // TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息 } #endregion //自定义菜单点击事件 else if (eventType.ToLower() == ReqEventType.CLICK) { #region 描述 //这里可能要记录每次用户的点击 用用户的appid做key EventKey作为值 //根据 EventKey 判断是点的哪个按钮 , 然后返回什么样的数据 , 比如说用户点的是查询装修进度 , 返回请输入进度用户名 , 则可返回 //多少个key值全列出来 每个值下面做不同的处理 /* { * "button":[ * { * * "name":"美家计划", * "sub_button":[ * { * "type":"click", * "name":"积分商城", * "key":"jfsc" * }, * { * "type":"click", * "name":"建材折扣", * "key":"jczk" * }, * { * "type":"click", * "name":"最新活动", * "key":"wqhg" * } * ] * }, * { * "name":"自助服务", * "sub_button":[ * { * "type":"click", * "name":"小美装家", * "key":"jfcx" * }, * { * "type":"click", * "name":"云装修平台", * "key":"sgys" * }, * { * "type":"click", * "name":"我的订单", * "key":"wddd" * }, * { * "type":"click", * "name":"施工管理", * "key":"sgppp" * }, * { * "type":"click", * "name":"实时验收", * "key":"sgppp" * } * ] * }, * { * "name":"关于我们", * "sub_button":[ * { * "type":"click", * "name":"美家易贷", * "key":"gywm" * }, * { * "type":"click", * "name":"小美管家", * "key":"fqf" * }, * { * "type":"click", * "name":"极客美家", * "key":"zxb" * } * ] * }] * } */ #endregion return(ResponseByClick((string)requestHT["EventKey"], info)); } else if (eventType.ToLower() == "scan")//用户关注过后扫描二维码事件 { return(ResponseByClick((string)requestHT["EventKey"], info)); } else if (eventType.ToLower() == ReqEventType.view) { return(GetresponseText(info, "你要跳转的链接是:" + (string)requestHT["EventKey"])); } } //位置消息 else if (msgType.ToLower() == ReqMsgType.Location) { return(""); } } catch (Exception e) { throw e; } return(""); }