public override string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { var authorizerAppid = requestMessage.AuthorizerAppid; var authorizer = db.Query <WechatOpenAuthorizer>() .Where(m => !m.IsDel) .Where(m => m.AuthorizerAppId == authorizerAppid) .FirstOrDefault(); if (authorizer != null) { authorizer.IsDel = true; var shopAuthorizer = db.Query <ShopWechatOpenAuthorizer>() .Where(m => !m.IsDel) .Where(m => m.WechatOpenAuthorizerId == authorizer.Id) .FirstOrDefault(); if (shopAuthorizer != null) { shopAuthorizer.IsDel = true; } db.SaveChanges(); } //取消授权 return(base.OnUnauthorizedRequest(requestMessage)); }
public ThirdPartyMessageHandler(Stream inputStream) { RequestDocument = XmlUtility.XmlUtility.Convert(inputStream);//转成XDocument //转成实体 RequestMessageBase requestMessage = null; InfoType infoType; try { infoType = InfoTypeHelper.GetRequestInfoType(RequestDocument); switch (infoType) { case InfoType.component_verify_ticket: requestMessage = new RequestMessageComponentVerifyTicket(); break; case InfoType.unauthorized: requestMessage = new RequestMessageUnauthorized(); break; default: throw new ArgumentOutOfRangeException(); } } catch (Exception ex) { throw; } requestMessage.FillEntityWithXml(RequestDocument); RequestMessage = requestMessage; }
public ThirdPartyMessageHandler(Stream inputStream) { //TODO:信息需要解密 RequestDocument = XmlUtility.XmlUtility.Convert(inputStream);//转成XDocument //转成实体 RequestMessageBase requestMessage = null; InfoType infoType; try { infoType = InfoTypeHelper.GetRequestInfoType(RequestDocument); switch (infoType) { case InfoType.component_verify_ticket: requestMessage = new RequestMessageComponentVerifyTicket(); break; case InfoType.unauthorized: requestMessage = new RequestMessageUnauthorized(); break; default: throw new ArgumentOutOfRangeException(); } } catch (Exception ex) { throw; } requestMessage.FillEntityWithXml(RequestDocument); RequestMessage = 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; RequestInfoType infoType; try { infoType = InfoTypeHelper.GetRequestInfoType(doc); switch (infoType) { case RequestInfoType.component_verify_ticket: requestMessage = new RequestMessageComponentVerifyTicket(); break; case RequestInfoType.unauthorized: /* * <xml> * <AppId>第三方平台appid</AppId> * <CreateTime>1413192760</CreateTime> * <InfoType>unauthorized</InfoType> * <AuthorizerAppid>公众号appid</AuthorizerAppid> * </xml> */ requestMessage = new RequestMessageUnauthorized(); break; case RequestInfoType.authorized: /* * <xml> * <AppId>第三方平台appid</AppId> * <CreateTime>1413192760</CreateTime> * <InfoType>authorized</InfoType> * <AuthorizerAppid>公众号appid</AuthorizerAppid> * <AuthorizationCode>授权码(code)</AuthorizationCode> * <AuthorizationCodeExpiredTime>过期时间</AuthorizationCodeExpiredTime> * </xml> */ requestMessage = new RequestMessageAuthorized(); break; case RequestInfoType.updateauthorized: requestMessage = new RequestMessageUpdateAuthorized(); break; default: throw new UnknownRequestMsgTypeException(string.Format("InfoType:{0} 在RequestMessageFactory中没有对应的处理程序!", infoType), new ArgumentOutOfRangeException()); //为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 } EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException(string.Format("RequestMessage转换出错!可能是InfoType不存在!,XML:{0}", doc.ToString()), ex); } return(requestMessage); }
public override string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { string autherAppId = requestMessage.AuthorizerAppid; var appAuthInfo = db.AppAuths.FirstOrDefault(c => c.AuthorizerAppId == autherAppId); if (appAuthInfo != null) { appAuthInfo.LastUpdateOn = DateTime.Now; appAuthInfo.Authorized = false; db.SaveChanges(); } return(base.OnUnauthorizedRequest(requestMessage)); }
public override string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { //取消授权 try { var authorizerAppid = requestMessage.AuthorizerAppid; var authorizer = db.Query <WechatOpenAuthorizer>() .Where(m => !m.IsDel) .Where(m => m.AuthorizerAppId == authorizerAppid) .FirstOrDefault(); if (authorizer != null) { authorizer.IsDel = true; var shopAuthorizer = db.Query <ShopWechatOpenAuthorizer>() .Where(m => !m.IsDel) .Where(m => m.WechatOpenAuthorizerId == authorizer.Id) .FirstOrDefault(); if (shopAuthorizer != null) { shopAuthorizer.IsDel = true; } db.SaveChanges(); } return(base.OnUnauthorizedRequest(requestMessage)); } catch (Exception ex) { log.Add(new TaskLog() { AddTime = DateTime.Now, TaskName = "OnUnauthorizedRequest", ExeResult = ex.Message }); log.SaveChanges(); return(base.OnUnauthorizedRequest(requestMessage)); } finally { log.Add(new TaskLog() { AddTime = DateTime.Now, TaskName = "OnUnauthorizedRequest", ExeResult = JsonConvert.SerializeObject(requestMessage) }); log.SaveChanges(); } }
public override string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { //取消授权 return(base.OnUnauthorizedRequest(requestMessage)); }
/// <summary> /// 推送取消授权通知 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public virtual string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { return("success"); }
/// <summary> /// 推送取消授权通知 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public virtual string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { return "success"; }
public override string OnUnauthorizedRequest(RequestMessageUnauthorized requestMessage) { //取消授权 UnauthWechatApp(requestMessage.AuthorizerAppid); return(base.OnUnauthorizedRequest(requestMessage)); }
public XDocument Init() { //解密XML信息 var postDataStr = EcryptRequestDocument.ToString(); WXBizMsgCrypt msgCrype = new WXBizMsgCrypt(_postModel.Token, _postModel.EncodingAESKey, _postModel.AppId); string msgXml = null; var result = msgCrype.DecryptMsg(_postModel.Msg_Signature, _postModel.Timestamp, _postModel.Nonce, postDataStr, ref msgXml); //判断result类型 if (result != 0) { //验证没有通过,取消执行 CancelExcute = true; return null; } RequestDocument = XDocument.Parse(msgXml);//完成解密 RequestMessage = RequestMessageFactory.GetRequestEntity(RequestDocument); //转成实体 RequestMessageBase requestMessage = null; RequestInfoType infoType; try { infoType = InfoTypeHelper.GetRequestInfoType(RequestDocument); switch (infoType) { case RequestInfoType.component_verify_ticket: requestMessage = new RequestMessageComponentVerifyTicket(); break; case RequestInfoType.unauthorized: requestMessage = new RequestMessageUnauthorized(); break; default: throw new ArgumentOutOfRangeException(); } } catch (Exception ex) { //此处可以记录日志 throw; } requestMessage.FillEntityWithXml(RequestDocument); RequestMessage = requestMessage; return RequestDocument; }