/// <summary> /// 构造方法 /// </summary> /// <param name="logHelper"></param> /// <param name="repo"></param> /// <param name="eventHandler"></param> /// <param name="textHandler"></param> /// <param name="wxAutoComResponse"></param> /// <param name="wxDbLogHelper"></param> /// <param name="wxKfTransferHelper"></param> public WxNotifyController(ILogHelper <WxNotifyController> logHelper, IRepository repo, WxEventHandler eventHandler, WxTextHandler textHandler, WxAutoComResponse wxAutoComResponse, WxDbLogHelper wxDbLogHelper, WxKfTransferHelper wxKfTransferHelper) { this.logHelper = logHelper; this.repo = repo; this.eventHandler = eventHandler; this.textHandler = textHandler; this.wxAutoComResponse = wxAutoComResponse; this.wxDbLogHelper = wxDbLogHelper; this.wxKfTransferHelper = wxKfTransferHelper; }
//订阅事件消息响应 private void SubscribeResponse(string content, ref WxEventHandler evt) { CxxUtc utc = new CxxUtc(DateTime.Now); WxMsgHandler msg = new WxMsgHandler(); msg.ToUser = evt.FromUser; msg.FromUser = evt.ToUser; msg.CreateTime = ( long )utc.ToUtcTime(); msg.Content = content; msg.MsgType = WxMsgType.Text; Response.Write(msg.TextMsg()); }
protected void Page_Load(object sender, EventArgs e) { if (!Config.Instance.IsInitialized) { Config.Instance.Load(); } if (WxNormalHandler.IsVerifyingSignature()) { //首次接入校验Signature WxNormalHandler.VerifySignature(); } else { byte[] bReq = Request.BinaryRead(Request.TotalBytes); if (bReq.Length > 0) { string sReq = Encoding.UTF8.GetString(bReq); if (sReq.Length > 0) { if (WxNormalHandler.IsRcvTecentMsg(ref sReq)) { //收到消息 WxMsgHandler hMsg = new WxMsgHandler(); if (hMsg.Parse(sReq)) { if (hMsg.MsgType == WxMsgType.Text) { hMsg.TextMsg2Db(hMsg.FromUser, hMsg.MsgId, hMsg.MsgType, hMsg.Content); //响应消息处理 TextMsgResponse(Config.Instance.Wx.Response, ref hMsg); } else { Response.Write("success"); } } else { Response.Write("success"); } } else if (WxNormalHandler.IsRcvTecentEvent(ref sReq)) { //收到事件 WxEventHandler hEvt = new WxEventHandler(); if (hEvt.Parse(sReq)) { if (hEvt.Event == WxEventType.Subscribe) { //关注,执行数据库注册操作 if (hEvt.Subscribe(hEvt.FromUser)) { string _Welcome = Config.Instance.Wx.Welcome; _Welcome = _Welcome.Replace("{{$date}}", zDate.Format(DateTime.Now, DateFormatStyle.Style(true, false, false, true))); _Welcome = _Welcome.Replace("{{$name}}", Config.Instance.Wx.Name); SubscribeResponse(_Welcome, ref hEvt); } } else if (hEvt.Event == WxEventType.Unsubscribe) { //取消关注 hEvt.Unsubscribe(hEvt.FromUser); } } } } } //其他情况直接返回 Response.Write(""); } }