private string EncryptXML(WechatResponse resp) { string sEncryptMsg = ""; string ToUserNameLabelHead = "<ToUserName><![CDATA["; string ToUserNameLabelTail = "]]></ToUserName>"; string FromUserNameLabelHead = "<FromUserName><![CDATA["; string FromUserNameLabelTail = "]]></FromUserName>"; string CreateTimeLabelHead = "<CreateTime><![CDATA["; string CreateTimeLabelTail = "]]></CreateTime>"; string MsgTypeLabelHead = "<MsgType><![CDATA["; string MsgTypeLabelTail = "]]></MsgType>"; string ContentLabelHead = "<Content><![CDATA["; string ContentLabelTail = "]]></Content>"; sEncryptMsg += "<xml>" + ToUserNameLabelHead + resp.ToUserName + ToUserNameLabelTail; sEncryptMsg += FromUserNameLabelHead + resp.FromUserName + FromUserNameLabelTail; sEncryptMsg += CreateTimeLabelHead + resp.CreateTime + CreateTimeLabelTail; sEncryptMsg += MsgTypeLabelHead + resp.MsgType + MsgTypeLabelTail; sEncryptMsg += ContentLabelHead + resp.Content + ContentLabelTail; sEncryptMsg += "</xml>"; return(sEncryptMsg); }
public JsonResult GetNews(long id) { var response = new WechatResponse() { data = NewsService.Instance.GetNews(id) }; return(Json(response, JsonRequestBehavior.AllowGet)); }
public JsonResult GetUserById(long userId) { var response = new WechatResponse() { data = UserService.Instance.GetUser(userId) }; return(Json(response, JsonRequestBehavior.AllowGet)); }
public JsonResult GetUserInfo() { var response = new WechatResponse() { data = UserService.GetCurrentUser() }; return(Json(response, JsonRequestBehavior.AllowGet)); }
public string GenerateEncryptResponse(WechatRequest req, string replyMsg) { WechatResponse resp = new WechatResponse(); resp.FromUserName = req.ToUserName; resp.ToUserName = req.FromUserName; resp.CreateTime = DateTime.Now.Ticks.ToString(); resp.MsgType = req.MsgType; resp.Content = req.MsgType == "text" ? replyMsg : ""; string encryptResp = this.EncryptXML(resp); return(encryptResp); }
public ActionResult Post(string signature, string timestamp, string nonce, string openid, string encrypt_type, string msg_signature) { //StringBuilder log = new StringBuilder(); LogService.AnyLog("WeChatWebHook", $"WxApi\tPost In");//{DateTime.Now.ToString("HH:mm:ss.fffffff")}\t PostModel postModel = new PostModel() { Token = WechatMpSettings.Default.Token, //根据自己后台的设置保持一致 Signature = signature, Timestamp = timestamp, Nonce = nonce, AppId = WechatMpSettings.Default.AppId, EncodingAESKey = WechatMpSettings.Default.EncodingAESKey, Msg_Signature = msg_signature, }; try { //加密异常 if (encrypt_type == "aes" && string.IsNullOrEmpty(postModel.EncodingAESKey)) { return(Content("公从号接口有异常,请通过其它途径解决您的问题,并反馈此消息")); } if (encrypt_type == "aes" && wxcrypt == null) { wxcrypt = new WXBizMsgCrypt(postModel.Token, postModel.EncodingAESKey, postModel.AppId); } if (!CheckSignature.Check(signature, postModel)) { return(Content("参数错误!")); } String PostXml = Request.GetBodyString(); //解密信息 if (encrypt_type == "aes") { var aeskey = WechatMpSettings.Default.EncodingAESKey; string detext = null; var res = wxcrypt.DecryptMsg(postModel.Msg_Signature, postModel.Timestamp, postModel.Nonce, PostXml, ref detext); //Console.WriteLine($"{res} detext({postModel.Token},{postModel.EncodingAESKey},{postModel.AppId},{postModel.Msg_Signature}, {postModel.Timestamp}, {postModel.Nonce},{PostXml})>{detext}"); PostXml = detext; } WechatResponse wxsponse = new WechatResponse(Request, PostXml); var botsponse = wxsponse.Rebot(); LogService.AnyLog("WeChatWebHook", "响应源数据", $"{botsponse.Content}"); //加密信息 if (encrypt_type == "aes") { var rTimeStamp = DateTime.Now.GetTimestamp10(); var rNonce = RandomString.BuildRndString(16); string restr = null; var rb = wxcrypt.EncryptMsg(botsponse.Content, rTimeStamp + "", rNonce, ref restr); if (rb == 0) { botsponse.Content = restr; } else { $"{rb} EncryptMsg".WriteErrorLine(); } } LogService.AnyLog("WeChatWebHook", "响应密数据", $"{botsponse.Content}"); return(botsponse); } catch (Exception ex) { #region 异常处理 LogService.AnyLog("WeChatWebHook", $"{ex.Message}"); LogService.Exception(ex); return(Content("")); #endregion } finally { LogService.AnyLog("WeChatWebHook", $"WxApi\tPost Out"); } }