/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); //下载文档 if (!string.IsNullOrEmpty(requestMessage.EventKey)) { var sceneId = long.Parse(requestMessage.EventKey.Replace("qrscene_", "")); //var configHelper = new ConfigHelper(new HttpContextWrapper(HttpContext.Current)); var codeRecord = ConfigHelper.CodeCollection.Values.FirstOrDefault(z => z.QrCodeTicket != null && z.QrCodeId == sceneId); if (codeRecord != null) { //确认可以下载 codeRecord.AllowDownload = true; responseMessage.Content = GetDownloadInfo(codeRecord); } } responseMessage.Content = responseMessage.Content ?? string.Format("通过扫描二维码进入,场景值:{0}", requestMessage.EventKey); return(responseMessage); }
/// <summary> /// 扫描带参数二维码事件 /// 实际上用户无法收到非订阅账号的消息,所以这里可以随便写。 /// scan事件的意义在于获取扫描二维码中包含的参数,便于识别和统计用户扫描了哪个二维码。 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "感谢扫码"; return(responseMessage); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageNews>(); return(responseMessage); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //已关注扫描带参数的二维码 MCComm.FileHelper.WriteLog("OnEvent_ScanRequest", requestMessage.EventKey); if (requestMessage.EventKey.IsNotEmpty()) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); switch (requestMessage.EventKey.ToInt()) { case (int)CustomerAgent.YILICHANG: responseMessage.Content = "亿利昶专供一次性餐饮用品,服务至上。详情请点击<a href='dc.cargocargo.cn/ad/ad/1001'>dc.cargocargo.cn/ad/ad/1001</a>"; return(responseMessage); case (int)CustomerAgent.LIN: responseMessage.Content = "艺利广告,专注新媒体。详情请点击<a href='dc.cargocargo.cn/ad/ad/1002'>dc.cargocargo.cn/ad/ad/1002</a>"; return(responseMessage); case 0: return(base.OnEvent_ScanRequest(requestMessage)); default: return(base.OnEvent_ScanRequest(requestMessage)); } } return(base.OnEvent_ScanRequest(requestMessage)); }
/// <summary> /// 扫描带参数二维码事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "Key未处理:" + requestMessage.EventKey; if (!string.IsNullOrEmpty(requestMessage.EventKey)) { var qrCode = db.WeiChat_QRCodes.FirstOrDefault(p => p.ParamsValue == requestMessage.EventKey); if (qrCode != null) { switch (qrCode.UserFor) { case QRCodeUseForTypes.BindManager: { var user = db.Users.Find(requestMessage.EventKey); user.OpenId = requestMessage.FromUserName; db.SaveChanges(); responseMessage.Content = "已成功绑定微信管理员!"; } break; } } } return(responseMessage); }
/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); if (!string.IsNullOrEmpty(requestMessage.EventKey)) { var sceneId = requestMessage.EventKey.Replace("qrscene_", ""); var openId = requestMessage.FromUserName;//获取OpenId var vals = sceneId.Split('_').ToList(); if (vals != null && vals.Count > 0) { var scanService = new ScanService(); switch (vals[0]) { case "notice": //设置商家接收模板消息的微信号 responseMessage = scanService.SetNotice(openId, vals[1]); break; } } return(responseMessage); } responseMessage.Content = GetWelcomeInfo();// string.Format("通过扫描二维码进入,场景值:{0}", requestMessage.EventKey); return(null); }
/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = string.Format("您好{0},欢迎回来!", responseMessage.FromUserName); return(responseMessage); }
/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override async Task <IResponseMessageBase> OnEvent_ScanRequestAsync(RequestMessageEvent_Scan requestMessage) { var array = requestMessage.EventKey.Split(','); if (array[0] == "RX") { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageNews>(); responseMessage.Articles.Add(new Article { Description = "约处方", Title = "快速约处方", Url = $"http://my.jk213.com/customer/rx/{array[1]}-{array[2]}-{array[3]}", PicUrl = "http://r.jk213.com/reslib/img/doctor/_d256_1.png" }); return(responseMessage); } else { var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage); responseMessage.Content = GetWelcomeInfo(); return(responseMessage); } }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = LogInvite(requestMessage.EventKey, requestMessage.FromUserName, "Scan"); return(responseMessage); }
/// <summary> /// 菜单扫描二维码 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override List <IResponseMessageBase> OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 //var responseMessage = CreateResponseMessage<ResponseMessageText>(); //responseMessage.Content = "通过扫描关注。"; //return new List<IResponseMessageBase>(){responseMessage}; return(CreateResponseMessage(requestMessage.EventKey, (int)AutoReplyMPKeywordEnum.SCAN)); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { if (requestMessage.EventKey != null) { DoCustomAction(requestMessage.FromUserName, requestMessage.EventKey); } return(base.OnEvent_ScanRequest(requestMessage)); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "通过扫描关注。"; return(responseMessage); }
/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override async Task <IResponseMessageBase> OnEvent_ScanRequestAsync(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = responseMessage.Content ?? string.Format("通过扫描二维码进入,场景值:{0}", requestMessage.EventKey); return(responseMessage); }
/// <summary> /// 处理扫描请求 /// 用户扫描带场景值二维码时,如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。 /// </summary> /// <returns></returns> protected override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { int sceneId = 0; int.TryParse(requestMessage.EventKey, out sceneId); if (sceneId > 0) { new ChannelScanBll().SaveScan(requestMessage.FromUserName, sceneId, ScanType.Scan); } var responseMessage = CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = "扫描已记录"; return responseMessage; }
/// <summary> /// 通过二维码扫描关注扫描事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); //下载文档 if (!string.IsNullOrEmpty(requestMessage.EventKey)) { //这里可以写扫码逻辑 } responseMessage.Content = responseMessage.Content ?? string.Format("通过扫描二维码进入,场景值:{0}", requestMessage.EventKey); return(responseMessage); }
/// <summary> /// 通过扫描关注 /// </summary> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { var strongResponseMessage = CreateResponseMessage <ResponseMessageNews>(); strongResponseMessage.Articles.Add(GetWelcomeInfo()); try { CrmMemberModel cdb = new CrmMemberModel(); cdb.SaveMember(requestMessage.FromUserName, Constants.CompanyId.ToString()); } catch (Exception ex) { LogException(ex); } return(strongResponseMessage); }
/// <summary> /// 订阅(关注)事件 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { Log4NetImpl.Write("Scan关注事件触发:"); MpUser fromUser = MpUserService.GetByOpenID(requestMessage.FromUserName); if (fromUser != null) { if (!string.IsNullOrEmpty(requestMessage.EventKey)) { fromUser.SceneId = Convert.ToInt32(requestMessage.EventKey); Log4NetImpl.Write("OnEvent_ScanRequest:" + fromUser.SceneId.ToString()); } fromUser.LastVisitDate = DateTime.Now; MpUserService.Update(fromUser); } return(null); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //string eventKey = requestMessage.EventKey; //if (!string.IsNullOrEmpty(eventKey)) //{ // string[] userInfo = eventKey.Split(SplitChar, StringSplitOptions.None); // UserRecommendInputDto input = new UserRecommendInputDto(); // input.Recommended = requestMessage.FromUserName; // input.Recommender = userInfo[1]; // input.RecommenderId = int.Parse(userInfo[0]); // this.AppService.AddUserRecommend(input); //} //通过扫描关注 var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "通过扫描关注。"; return(responseMessage); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { try { if (int.TryParse(requestMessage.EventKey, out int sceneId)) { var serviceProvider = SenparcDI.GetServiceProvider(); //临时二维码 var qrCodeRegCache = serviceProvider.GetService <QrCodeRegCache>(); var qrCodeRegData = qrCodeRegCache.Get(sceneId.ToString()); if (qrCodeRegData?.Data != null && qrCodeRegData.Data.Ticket == requestMessage.Ticket) { var responseRegMessage = CreateResponseMessage <ResponseMessageText>(); if (qrCodeRegData.Data.QrCodeRegDataType == QrCodeRegDataType.Reg) { var userService = serviceProvider.GetService <AccountService>(); //判断是否已经绑定[CodeChecked] if (userService.GetCount(z => z.WeixinOpenId == requestMessage.FromUserName) <= 0) { var code = new Random().Next(100000, 999999).ToString(); qrCodeRegData.Data.Code = code; qrCodeRegData.Data.OpenId = requestMessage.FromUserName; qrCodeRegCache.Remove(sceneId.ToString()); qrCodeRegCache.Insert(qrCodeRegData.Data, sceneId.ToString()); responseRegMessage.Content = "验证码:" + code; } else { responseRegMessage.Content = "您的微信已绑定NCF账户,不能重复绑定!"; } return(responseRegMessage); } } } } catch (Exception ex) { LogUtility.Weixin.Error(ex.Message, ex); } return(base.OnEvent_ScanRequest(requestMessage)); }
/// <summary> /// 通过二维码扫描进入公众号事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { if (!string.IsNullOrEmpty(requestMessage.EventKey)) { string[] qr_para = requestMessage.EventKey.Split('&'); string shopCode = string.Empty; if (qr_para != null && qr_para.Length >= 2) { //4S店的识别号 shopCode = qr_para[1]; #region 消费者扫码 if (qr_para[0].Contains("AnZhi_Pub")) { registerCustomer(qr_para, shopCode, false); } #endregion #region 员工扫码 if (qr_para[0].Contains("AnZhi_EmployeeRegQR")) { RegisterRemind(qr_para); } #endregion } return(null); } else { #region 模拟码,平台店 string[] qr_para = "AnZhi_Pub&SHOPCODE20181016185200001&1&1".Split('&'); registerCustomer(qr_para, "SHOPCODE20181016185200001", true); return(null); #endregion } }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { AsyncHelper.RunSync(async() => { _accessToken = await _wechatCommonManager.GetAccessTokenAsync(_tenant.Id); if (_user == null) { UserInfoJson userInfo = UserApi.Info(_accessToken, RequestMessage.FromUserName); _user = await _wechatUserManager.CreateUserWhenSubscribeAsync(_tenant.Id, userInfo); } if (!String.IsNullOrEmpty(requestMessage.EventKey)) { int sceneId = int.Parse(requestMessage.EventKey); await _wechatUserManager.ProcessSceneId(sceneId, _user.Id, _tenant.Id); } }); SendAutoReplyMessages(RequestType.Event_ScanRequest); return(ResponseMessage); }
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { try { var opid = requestMessage.FromUserName; var entityevent = new MpEventScanLog(); entityevent.ID = Formula.FormulaHelper.CreateGuid(); entityevent.MpID = account.ID; entityevent.OpenID = opid; entityevent.EventContent = requestMessage.EventKey; entityevent.EventType = "已关注"; entityevent.MsgID = requestMessage.MsgId.ToString(); entityevent.CreateDate = System.DateTime.Now; entities.Set <MpEventScanLog>().Add(entityevent); entities.SaveChanges(); } catch (Exception ex) { LogWriter.Info(string.Format("MPID{0}记录扫码事件出错:原因{1}", account.ID, ex.Message)); } return(null); }
/// <summary> /// 通过二维码扫描 扫描事件 如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { var responseMessage = CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "欢迎您加入五福商城大家庭"; if (!string.IsNullOrEmpty(requestMessage.EventKey)) { //新用户openId var openId = requestMessage.FromUserName; var userInfo = new Services.impl.UserOAuthService().UserInfo(openId); var parentOpenId = requestMessage.EventKey;//推荐人的openid //这里要锁定用户推荐关系 if (openId != parentOpenId) { Task.Factory.StartNew(() => { var userGenerator = new UserGenerator(); userGenerator.CreateUser(new Models.UserInfo { OpenId = openId, UnionId = userInfo.unionid, NickName = userInfo.nickname, Province = userInfo.province, City = userInfo.city, County = userInfo.country, Gender = userInfo.sex.ToString(), Portrait = userInfo.headimgurl, ParentOpenId = parentOpenId }); //给推荐人发送推荐成功消息 string notifyMsg = string.Format(@"用户【{0}】,通过您的二维码加入了商城,加入时间:{1}", userInfo.nickname, DateTime.Now.ToString()); new CustomService().SendText(parentOpenId, notifyMsg); }); } } return(responseMessage); }
/// <summary> /// 扫描关注 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { using (WXDBEntities db = new WXDBEntities()) { var model = db.QrCodeInfo.Where(s => s.WXOpenid.Equals(requestMessage.FromUserName) && s.QrCodeReslut.Equals(requestMessage.EventKey)).FirstOrDefault(); if (model != null) { } else { model = new QrCodeInfo(); try { model.WXOpenid = requestMessage.FromUserName; } catch (Exception) { model.WXOpenid = ""; } try { //UserInfoJson us = UserApi.Info(WXhelper.Instance.CurrenToken(), requestMessage.FromUserName); //model.NickName = us.nickname; //model.Extent1 = us.province + "|" + us.city; model.NickName = ""; model.Extent1 = ""; } catch (Exception) { model.NickName = ""; model.Extent1 = ""; } try { model.QrCodeReslut = requestMessage.EventKey; } catch (Exception) { model.QrCodeReslut = "1"; } model.Status = 0; model.Orders = 0; model.AddTime = DateTime.Now; model.UpdateTime = DateTime.Now; model.Extent2 = ""; db.QrCodeInfo.AddObject(model); db.SaveChanges(); } } var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage); using (WXDBEntities db = new WXDBEntities()) { var tmp = db.WXKewWords.Where(s => s.Type == 0).FirstOrDefault(); if (tmp != null) { responseMessage.Content = tmp.Description; } else { responseMessage.Content = "你好,感谢您关注东郊罗兰 !"; } } return(responseMessage); }
/// <summary> /// 获取请求XML /// </summary> /// <returns></returns> private XDocument GetrequestMessaageDoc(string url, string token, RequestMsgType requestType, Event? eventType) { RequestMessageBase requestMessaage = null; switch (requestType) { case RequestMsgType.Text: requestMessaage = new RequestMessageText() { Content = Request.Form["Content"], }; break; case RequestMsgType.Location: requestMessaage = new RequestMessageLocation() { Label = Request.Form["Label"], Location_X = double.Parse(Request.Form["Location_X"]), Location_Y = double.Parse(Request.Form["Location_Y"]), Scale = int.Parse(Request.Form["Scale"]) }; break; case RequestMsgType.Image: requestMessaage = new RequestMessageImage() { PicUrl = Request.Form["PicUrl"], }; break; case RequestMsgType.Voice: requestMessaage = new RequestMessageVoice() { Format = Request.Form["Format"], Recognition = Request.Form["Recognition"], }; break; case RequestMsgType.Video: requestMessaage = new RequestMessageVideo() { MsgId = long.Parse(Request.Form["MsgId"]), ThumbMediaId = Request.Form["ThumbMediaId"], }; break; //case RequestMsgType.Link: // break; case RequestMsgType.Event: if (eventType.HasValue) { RequestMessageEventBase requestMessageEvent = null; switch (eventType.Value) { //case Event.ENTER: // break; case Event.LOCATION: requestMessageEvent = new RequestMessageEvent_Location() { Latitude = long.Parse(Request.Form["Event.Latitude"]), Longitude = long.Parse(Request.Form["Event.Longitude"]), Precision = double.Parse(Request.Form["Event.Precision"]) }; break; case Event.subscribe: requestMessageEvent = new RequestMessageEvent_Subscribe() { EventKey = Request.Form["Event.EventKey"], Ticket = Request.Form["Event.Ticket"] }; break; case Event.unsubscribe: requestMessageEvent = new RequestMessageEvent_Unsubscribe(); break; case Event.CLICK: requestMessageEvent = new RequestMessageEvent_Click() { EventKey = Request.Form["Event.EventKey"] }; break; case Event.scan: requestMessageEvent = new RequestMessageEvent_Scan() { EventKey = Request.Form["Event.EventKey"], Ticket = Request.Form["Event.Ticket"] }; break; case Event.VIEW: requestMessageEvent = new RequestMessageEvent_View() { EventKey = Request.Form["Event.EventKey"] }; break; case Event.MASSSENDJOBFINISH: requestMessageEvent = new RequestMessageEvent_MassSendJobFinish() { FromUserName = "******",//系统指定 ErrorCount = int.Parse(Request.Form["Event.ErrorCount"]), FilterCount = int.Parse(Request.Form["Event.FilterCount"]), SentCount = int.Parse(Request.Form["Event.SentCount"]), Status = Request.Form["Event.Status"], TotalCount = int.Parse(Request.Form["Event.TotalCount"]) }; break; case Event.TEMPLATESENDJOBFINISH: requestMessageEvent = new RequestMessageEvent_TemplateSendJobFinish() { FromUserName = "******",//系统指定 MsgID = long.Parse(Request.Form["Event.MsgID"]), Status = Request.Form["Event.Status"], }; break; case Event.scancode_push: requestMessageEvent = new RequestMessageEvent_Scancode_Push() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], ScanCodeInfo = new ScanCodeInfo() { ScanResult = Request.Form["Event.ScanResult"], ScanType = Request.Form["Event.ScanType"], } }; break; case Event.scancode_waitmsg: requestMessageEvent = new RequestMessageEvent_Scancode_Waitmsg() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], ScanCodeInfo = new ScanCodeInfo() { ScanResult = Request.Form["Event.ScanResult"], ScanType = Request.Form["Event.ScanType"], } }; break; case Event.pic_sysphoto: var sysphotoPicMd5Sum = Request.Form["Event.PicMd5Sum"]; PicItem sysphotoPicItem = new PicItem() { item = new Md5Sum() { PicMd5Sum = sysphotoPicMd5Sum } }; List<PicItem> sysphotoPicItems = new List<PicItem>(); sysphotoPicItems.Add(sysphotoPicItem); requestMessageEvent = new RequestMessageEvent_Pic_Sysphoto() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], SendPicsInfo = new SendPicsInfo() { Count = Request.Form["Event.Count"], PicList = sysphotoPicItems } }; break; case Event.pic_photo_or_album: var photoOrAlbumPicMd5Sum = Request.Form["Event.PicMd5Sum"]; PicItem photoOrAlbumPicItem = new PicItem() { item = new Md5Sum() { PicMd5Sum = photoOrAlbumPicMd5Sum } }; List<PicItem> photoOrAlbumPicItems = new List<PicItem>(); photoOrAlbumPicItems.Add(photoOrAlbumPicItem); requestMessageEvent = new RequestMessageEvent_Pic_Sysphoto() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], SendPicsInfo = new SendPicsInfo() { Count = Request.Form["Event.Count"], PicList = photoOrAlbumPicItems } }; break; case Event.pic_weixin: var weixinPicMd5Sum = Request.Form["Event.PicMd5Sum"]; PicItem weixinPicItem = new PicItem() { item = new Md5Sum() { PicMd5Sum = weixinPicMd5Sum } }; List<PicItem> weixinPicItems = new List<PicItem>(); weixinPicItems.Add(weixinPicItem); requestMessageEvent = new RequestMessageEvent_Pic_Sysphoto() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], SendPicsInfo = new SendPicsInfo() { Count = Request.Form["Event.Count"], PicList = weixinPicItems } }; break; case Event.location_select: requestMessageEvent = new RequestMessageEvent_Location_Select() { FromUserName = "******",//系统指定 EventKey = Request.Form["Event.EventKey"], SendLocationInfo = new SendLocationInfo() { Label = Request.Form["Event.Label"], Location_X = Request.Form["Event.Location_X"], Location_Y = Request.Form["Event.Location_Y"], Poiname = Request.Form["Event.Poiname"], Scale = Request.Form["Event.Scale"], } }; break; default: throw new ArgumentOutOfRangeException("eventType"); } requestMessaage = requestMessageEvent; } else { throw new ArgumentOutOfRangeException("eventType"); } break; default: throw new ArgumentOutOfRangeException("requestType"); } requestMessaage.MsgId = long.Parse(Request.Form["MsgId"]); requestMessaage.CreateTime = DateTime.Now; requestMessaage.FromUserName = requestMessaage.FromUserName ?? "FromUserName(OpenId)";//用于区别不同的请求用户 requestMessaage.ToUserName = "******"; return requestMessaage.ConvertEntityToXml(); }
//<?xml version="1.0" encoding="utf-8"?> //<xml> // <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> // <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> // <CreateTime>1357986928</CreateTime> // <MsgType><![CDATA[text]]></MsgType> // <Content><![CDATA[中文]]></Content> // <MsgId>5832509444155992350</MsgId> //</xml> /// <summary> /// 获取XDocument转换后的IRequestMessageBase实例。 /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常 /// </summary> /// <returns></returns> public static IRequestMessageBase GetRequestEntity(XDocument doc, PostModel postModel = null) { RequestMessageBase requestMessage = null; RequestMsgType msgType; try { msgType = MsgTypeHelper.GetRequestMsgType(doc); switch (msgType) { case RequestMsgType.Text: requestMessage = new RequestMessageText(); break; case RequestMsgType.Location: requestMessage = new RequestMessageLocation(); break; case RequestMsgType.Image: requestMessage = new RequestMessageImage(); break; case RequestMsgType.Voice: requestMessage = new RequestMessageVoice(); break; case RequestMsgType.Video: requestMessage = new RequestMessageVideo(); break; case RequestMsgType.Link: requestMessage = new RequestMessageLink(); break; case RequestMsgType.ShortVideo: requestMessage = new RequestMessageShortVideo(); break; case RequestMsgType.File: requestMessage = new RequestMessageFile(); break; case RequestMsgType.NeuChar: requestMessage = new RequestMessageNeuChar(); break; case RequestMsgType.Event: //判断Event类型 switch (doc.Root.Element("Event").Value.ToUpper()) { case "ENTER": //进入会话 requestMessage = new RequestMessageEvent_Enter(); break; case "LOCATION": //地理位置 requestMessage = new RequestMessageEvent_Location(); break; case "SUBSCRIBE": //订阅(关注) requestMessage = new RequestMessageEvent_Subscribe(); break; case "UNSUBSCRIBE": //取消订阅(关注) requestMessage = new RequestMessageEvent_Unsubscribe(); break; case "CLICK": //菜单点击 requestMessage = new RequestMessageEvent_Click(); break; case "SCAN": //二维码扫描 requestMessage = new RequestMessageEvent_Scan(); break; case "VIEW": //URL跳转 requestMessage = new RequestMessageEvent_View(); break; case "MASSSENDJOBFINISH": requestMessage = new RequestMessageEvent_MassSendJobFinish(); break; case "TEMPLATESENDJOBFINISH": //模板信息 requestMessage = new RequestMessageEvent_TemplateSendJobFinish(); break; case "SCANCODE_PUSH": //扫码推事件(scancode_push) requestMessage = new RequestMessageEvent_Scancode_Push(); break; case "SCANCODE_WAITMSG": //扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg) requestMessage = new RequestMessageEvent_Scancode_Waitmsg(); break; case "PIC_SYSPHOTO": //弹出系统拍照发图(pic_sysphoto) requestMessage = new RequestMessageEvent_Pic_Sysphoto(); break; case "PIC_PHOTO_OR_ALBUM": //弹出拍照或者相册发图(pic_photo_or_album) requestMessage = new RequestMessageEvent_Pic_Photo_Or_Album(); break; case "PIC_WEIXIN": //弹出微信相册发图器(pic_weixin) requestMessage = new RequestMessageEvent_Pic_Weixin(); break; case "LOCATION_SELECT": //弹出地理位置选择器(location_select) requestMessage = new RequestMessageEvent_Location_Select(); break; case "CARD_PASS_CHECK": //卡券通过审核 requestMessage = new RequestMessageEvent_Card_Pass_Check(); break; case "CARD_NOT_PASS_CHECK": //卡券未通过审核 requestMessage = new RequestMessageEvent_Card_Not_Pass_Check(); break; case "USER_GET_CARD": //领取卡券 requestMessage = new RequestMessageEvent_User_Get_Card(); break; case "USER_DEL_CARD": //删除卡券 requestMessage = new RequestMessageEvent_User_Del_Card(); break; case "KF_CREATE_SESSION": //多客服接入会话 requestMessage = new RequestMessageEvent_Kf_Create_Session(); break; case "KF_CLOSE_SESSION": //多客服关闭会话 requestMessage = new RequestMessageEvent_Kf_Close_Session(); break; case "KF_SWITCH_SESSION": //多客服转接会话 requestMessage = new RequestMessageEvent_Kf_Switch_Session(); break; case "POI_CHECK_NOTIFY": //审核结果事件推送 requestMessage = new RequestMessageEvent_Poi_Check_Notify(); break; case "WIFICONNECTED": //Wi-Fi连网成功事件 requestMessage = new RequestMessageEvent_WifiConnected(); break; case "USER_CONSUME_CARD": //卡券核销 requestMessage = new RequestMessageEvent_User_Consume_Card(); break; case "USER_ENTER_SESSION_FROM_CARD": //从卡券进入公众号会话 requestMessage = new RequestMessageEvent_User_Enter_Session_From_Card(); break; case "USER_VIEW_CARD": //进入会员卡 requestMessage = new RequestMessageEvent_User_View_Card(); break; case "MERCHANT_ORDER": //微小店订单付款通知 requestMessage = new RequestMessageEvent_Merchant_Order(); break; case "SUBMIT_MEMBERCARD_USER_INFO": //接收会员信息事件通知 requestMessage = new RequestMessageEvent_Submit_Membercard_User_Info(); break; case "SHAKEAROUNDUSERSHAKE": //摇一摇事件通知 requestMessage = new RequestMessageEvent_ShakearoundUserShake(); break; case "USER_GIFTING_CARD": //卡券转赠事件推送 requestMessage = new RequestMessageEvent_User_Gifting_Card(); break; case "USER_PAY_FROM_PAY_CELL": // 微信买单完成 requestMessage = new RequestMessageEvent_User_Pay_From_Pay_Cell(); break; case "UPDATE_MEMBER_CARD": // 会员卡内容更新事件:会员卡积分余额发生变动时 requestMessage = new RequestMessageEvent_Update_Member_Card(); break; case "CARD_SKU_REMIND": //卡券库存报警事件:当某个card_id的初始库存数大于200且当前库存小于等于100时 requestMessage = new RequestMessageEvent_Card_Sku_Remind(); break; case "CARD_PAY_ORDER": //券点流水详情事件:当商户朋友的券券点发生变动时 requestMessage = new RequestMessageEvent_Card_Pay_Order(); break; case "APPLY_MERCHANT_AUDIT_INFO": //创建门店小程序审核事件 requestMessage = new RequestMessageEvent_ApplyMerchantAuditInfo(); break; case "CREATE_MAP_POI_AUDIT_INFO": //从腾讯地图中创建门店审核事件 requestMessage = new RequestMessageEvent_CreateMapPoiAuditInfo(); break; case "ADD_STORE_AUDIT_INFO": //门店小程序中创建门店审核事件 requestMessage = new RequestMessageEvent_AddStoreAuditInfo(); break; case "MODIFY_STORE_AUDIT_INFO": //修改门店图片审核事件 requestMessage = new RequestMessageEvent_ModifyStoreAuditInfo(); break; case "VIEW_MINIPROGRAM": //微信点击菜单跳转小程序的事件推送的事件 requestMessage = new RequestMessageEvent_View_Miniprogram(); break; #region 卡券回调 case "GIFTCARD_PAY_DONE": //券点流水详情事件:当商户朋友的券券点发生变动时 requestMessage = new RequestMessageEvent_GiftCard_Pay_Done(); break; case "GIFTCARD_SEND_TO_FRIEND": //券点流水详情事件:当商户朋友的券券点发生变动时 requestMessage = new RequestMessageEvent_GiftCard_Send_To_Friend(); break; case "GIFTCARD_USER_ACCEPT": //券点流水详情事件:当商户朋友的券券点发生变动时 requestMessage = new RequestMessageEvent_GiftCard_User_Accept(); break; #endregion #region 微信认证事件推送 case "QUALIFICATION_VERIFY_SUCCESS": //资质认证成功(此时立即获得接口权限) requestMessage = new RequestMessageEvent_QualificationVerifySuccess(); break; case "QUALIFICATION_VERIFY_FAIL": //资质认证失败 requestMessage = new RequestMessageEvent_QualificationVerifyFail(); break; case "NAMING_VERIFY_SUCCESS": //名称认证成功(即命名成功) requestMessage = new RequestMessageEvent_NamingVerifySuccess(); break; case "NAMING_VERIFY_FAIL": //名称认证失败(这时虽然客户端不打勾,但仍有接口权限) requestMessage = new RequestMessageEvent_NamingVerifyFail(); break; case "ANNUAL_RENEW": //年审通知 requestMessage = new RequestMessageEvent_AnnualRenew(); break; case "VERIFY_EXPIRED": //认证过期失效通知 requestMessage = new RequestMessageEvent_VerifyExpired(); break; #endregion #region 小程序审核事件推送 case "WEAPP_AUDIT_SUCCESS": //小程序审核成功 requestMessage = new RequestMessageEvent_WeAppAuditSuccess(); break; case "WEAPP_AUDIT_FAIL": //小程序审核失败 requestMessage = new RequestMessageEvent_WeAppAuditFail(); break; #endregion default: //其他意外类型(也可以选择抛出异常) requestMessage = new RequestMessageEventBase(); break; } break; default: { requestMessage = new RequestMessageUnknownType() { RequestDocument = doc }; #region v14.8.3 之前的方案,直接在这里抛出异常 /* * throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在RequestMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException());//为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 */ #endregion break; } } Senparc.NeuChar.Helpers.EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException(string.Format("RequestMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex); } return(requestMessage); }
//<?xml version="1.0" encoding="utf-8"?> //<xml> // <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> // <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> // <CreateTime>1357986928</CreateTime> // <MsgType><![CDATA[text]]></MsgType> // <Content><![CDATA[中文]]></Content> // <MsgId>5832509444155992350</MsgId> //</xml> /// <summary> /// 获取XDocument转换后的IRequestMessageBase实例。 /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常 /// </summary> /// <returns></returns> public static IRequestMessageBase GetRequestEntity(XDocument doc, PostModel postModel = null) { RequestMessageBase requestMessage = null; RequestMsgType msgType; try { msgType = MsgTypeHelper.GetRequestMsgType(doc); switch (msgType) { case RequestMsgType.Text: requestMessage = new RequestMessageText(); break; case RequestMsgType.Location: requestMessage = new RequestMessageLocation(); break; case RequestMsgType.Image: requestMessage = new RequestMessageImage(); break; case RequestMsgType.Voice: requestMessage = new RequestMessageVoice(); break; case RequestMsgType.Video: requestMessage = new RequestMessageVideo(); break; case RequestMsgType.Link: requestMessage = new RequestMessageLink(); break; case RequestMsgType.ShortVideo: requestMessage = new RequestMessageShortVideo(); break; case RequestMsgType.Event: //判断Event类型 switch (doc.Root.Element("Event").Value.ToUpper()) { case "ENTER": //进入会话 requestMessage = new RequestMessageEvent_Enter(); break; case "LOCATION": //地理位置 requestMessage = new RequestMessageEvent_Location(); break; case "SUBSCRIBE": //订阅(关注) requestMessage = new RequestMessageEvent_Subscribe(); break; case "UNSUBSCRIBE": //取消订阅(关注) requestMessage = new RequestMessageEvent_Unsubscribe(); break; case "CLICK": //菜单点击 requestMessage = new RequestMessageEvent_Click(); break; case "SCAN": //二维码扫描 requestMessage = new RequestMessageEvent_Scan(); break; case "VIEW": //URL跳转 requestMessage = new RequestMessageEvent_View(); break; case "MASSSENDJOBFINISH": requestMessage = new RequestMessageEvent_MassSendJobFinish(); break; case "TEMPLATESENDJOBFINISH": //模板信息 requestMessage = new RequestMessageEvent_TemplateSendJobFinish(); break; case "SCANCODE_PUSH": //扫码推事件(scancode_push) requestMessage = new RequestMessageEvent_Scancode_Push(); break; case "SCANCODE_WAITMSG": //扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg) requestMessage = new RequestMessageEvent_Scancode_Waitmsg(); break; case "PIC_SYSPHOTO": //弹出系统拍照发图(pic_sysphoto) requestMessage = new RequestMessageEvent_Pic_Sysphoto(); break; case "PIC_PHOTO_OR_ALBUM": //弹出拍照或者相册发图(pic_photo_or_album) requestMessage = new RequestMessageEvent_Pic_Photo_Or_Album(); break; case "PIC_WEIXIN": //弹出微信相册发图器(pic_weixin) requestMessage = new RequestMessageEvent_Pic_Weixin(); break; case "LOCATION_SELECT": //弹出地理位置选择器(location_select) requestMessage = new RequestMessageEvent_Location_Select(); break; case "CARD_PASS_CHECK": //卡券通过审核 requestMessage = new RequestMessageEvent_Card_Pass_Check(); break; case "CARD_NOT_PASS_CHECK": //卡券未通过审核 requestMessage = new RequestMessageEvent_Card_Not_Pass_Check(); break; case "USER_GET_CARD": //领取卡券 requestMessage = new RequestMessageEvent_User_Get_Card(); break; case "USER_DEL_CARD": //删除卡券 requestMessage = new RequestMessageEvent_User_Del_Card(); break; case "KF_CREATE_SESSION": //多客服接入会话 requestMessage = new RequestMessageEvent_Kf_Create_Session(); break; case "KF_CLOSE_SESSION": //多客服关闭会话 requestMessage = new RequestMessageEvent_Kf_Close_Session(); break; case "KF_SWITCH_SESSION": //多客服转接会话 requestMessage = new RequestMessageEvent_Kf_Switch_Session(); break; case "POI_CHECK_NOTIFY": //审核结果事件推送 requestMessage = new RequestMessageEvent_Poi_Check_Notify(); break; case "WIFICONNECTED": //Wi-Fi连网成功事件 requestMessage = new RequestMessageEvent_WifiConnected(); break; case "USER_CONSUME_CARD": //卡券核销 requestMessage = new RequestMessageEvent_User_Consume_Card(); break; case "USER_ENTER_SESSION_FROM_CARD": //从卡券进入公众号会话 requestMessage = new RequestMessageEvent_User_Enter_Session_From_Card(); break; case "USER_VIEW_CARD": //进入会员卡 requestMessage = new RequestMessageEvent_User_View_Card(); break; case "MERCHANT_ORDER": //微小店订单付款通知 requestMessage = new RequestMessageEvent_Merchant_Order(); break; default: //其他意外类型(也可以选择抛出异常) requestMessage = new RequestMessageEventBase(); break; } break; default: throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在RequestMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException()); //为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 } EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException(string.Format("RequestMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex); } return(requestMessage); }
/// <summary> /// Event事件类型请求之scan /// </summary> public virtual IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { return(DefaultResponseMessage(requestMessage)); }
/// <summary> /// 【异步方法】Event事件类型请求之scan /// </summary> public virtual async Task <IResponseMessageBase> OnEvent_ScanRequestAsync(RequestMessageEvent_Scan requestMessage) { return(await DefaultAsyncMethod(requestMessage, () => OnEvent_ScanRequest(requestMessage)).ConfigureAwait(false)); }
//<?xml version="1.0" encoding="utf-8"?> //<xml> // <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> // <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> // <CreateTime>1357986928</CreateTime> // <MsgType><![CDATA[text]]></MsgType> // <Content><![CDATA[中文]]></Content> // <MsgId>5832509444155992350</MsgId> //</xml> /// <summary> /// 获取XDocument转换后的IRequestMessageBase实例。 /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常 /// </summary> /// <returns></returns> public static IRequestMessageBase GetRequestEntity(XDocument doc) { RequestMessageBase requestMessage = null; RequestMsgType msgType; try { msgType = MsgTypeHelper.GetRequestMsgType(doc); switch (msgType) { case RequestMsgType.Text: requestMessage = new RequestMessageText(); break; case RequestMsgType.Location: requestMessage = new RequestMessageLocation(); break; case RequestMsgType.Image: requestMessage = new RequestMessageImage(); break; case RequestMsgType.Voice: requestMessage = new RequestMessageVoice(); break; case RequestMsgType.Video: requestMessage = new RequestMessageVideo(); break; case RequestMsgType.Link: requestMessage = new RequestMessageLink(); break; case RequestMsgType.Event: //判断Event类型 switch (doc.Root.Element("Event").Value.ToUpper()) { case "ENTER": //进入会话 requestMessage = new RequestMessageEvent_Enter(); break; case "LOCATION": //地理位置 requestMessage = new RequestMessageEvent_Location(); break; case "SUBSCRIBE": //订阅(关注) requestMessage = new RequestMessageEvent_Subscribe(); break; case "UNSUBSCRIBE": //取消订阅(关注) requestMessage = new RequestMessageEvent_Unsubscribe(); break; case "CLICK": //菜单点击 requestMessage = new RequestMessageEvent_Click(); break; case "SCAN": //二维码扫描 requestMessage = new RequestMessageEvent_Scan(); break; default: //其他意外类型(也可以选择抛出异常) requestMessage = new RequestMessageEventBase(); break; } break; default: throw new UnknownRequestMsgTypeException( $"MsgType:{msgType} 在RequestMessageFactory中没有对应的处理程序!", new ArgumentOutOfRangeException());//为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 } EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException($"RequestMessage转换出错!可能是MsgType不存在!,XML:{doc.ToString()}", ex); } return(requestMessage); }
//<?xml version="1.0" encoding="utf-8"?> //<xml> // <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> // <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> // <CreateTime>1357986928</CreateTime> // <MsgType><![CDATA[text]]></MsgType> // <Content><![CDATA[中文]]></Content> // <MsgId>5832509444155992350</MsgId> //</xml> /// <summary> /// 获取XDocument转换后的IRequestMessageBase实例。 /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常 /// </summary> /// <returns></returns> public static IRequestMessageBase GetRequestEntity(XDocument doc) { RequestMessageBase requestMessage = null; RequestMsgType msgType; try { msgType = MsgTypeHelper.GetRequestMsgType(doc); switch (msgType) { case RequestMsgType.Text: requestMessage = new RequestMessageText(); break; case RequestMsgType.Location: requestMessage = new RequestMessageLocation(); break; case RequestMsgType.Image: requestMessage = new RequestMessageImage(); break; case RequestMsgType.Voice: requestMessage = new RequestMessageVoice(); break; case RequestMsgType.Video: requestMessage = new RequestMessageVideo(); break; case RequestMsgType.Link: requestMessage = new RequestMessageLink(); break; case RequestMsgType.ShortVideo: requestMessage = new RequestMessageShortVideo(); break; case RequestMsgType.Event: //判断Event类型 switch (doc.Root.Element("Event").Value.ToUpper()) { case "ENTER"://进入会话 requestMessage = new RequestMessageEvent_Enter(); break; case "LOCATION"://地理位置 requestMessage = new RequestMessageEvent_Location(); break; case "SUBSCRIBE"://订阅(关注) requestMessage = new RequestMessageEvent_Subscribe(); break; case "UNSUBSCRIBE"://取消订阅(关注) requestMessage = new RequestMessageEvent_Unsubscribe(); break; case "CLICK"://菜单点击 requestMessage = new RequestMessageEvent_Click(); break; case "SCAN"://二维码扫描 requestMessage = new RequestMessageEvent_Scan(); break; case "VIEW"://URL跳转 requestMessage = new RequestMessageEvent_View(); break; case "MASSSENDJOBFINISH": //事件推送群发 requestMessage = new RequestMessageEvent_MassSendJobFinish(); break; case "TEMPLATESENDJOBFINISH"://模板信息 requestMessage = new RequestMessageEvent_TemplateSendJobFinish(); break; case "SCANCODE_PUSH"://扫码推事件(scancode_push) requestMessage = new RequestMessageEvent_Scancode_Push(); break; case "SCANCODE_WAITMSG"://扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg) requestMessage = new RequestMessageEvent_Scancode_Waitmsg(); break; default://其他意外类型(也可以选择抛出异常) requestMessage = new RequestMessageEventBase(); break; } break; default: throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在RequestMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException());//为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 } EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException(string.Format("RequestMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex); } return requestMessage; }