public void WeixinAuthUrl(WeiXinCallBackAuthViewModel weixinauth) { HttpContext.Response.AddHeader("Status", "200"); HttpContext.Response.Write("接收成功"); if (!string.IsNullOrEmpty(weixinauth.echostr)) { var send = UserBackendService.WeiXinAuthURL(weixinauth); var result = Newtonsoft.Json.JsonConvert.DeserializeObject <WeiXinMessageResult>(send); if (result.Status) { HttpContext.Response.AddHeader("Status", "200"); HttpContext.Response.Write(result.Result); } else { HttpContext.Response.Write(result.Code); } } var httpRequestStream = HttpContext.Request.InputStream; var message = UserBackendService.SendCallBackMessage(weixinauth, httpRequestStream); var results = Newtonsoft.Json.JsonConvert.DeserializeObject <WeiXinMessageResult>(message); if (results.Status) { HttpContext.Response.AddHeader("Status", "200"); HttpContext.Response.Write(results.Result); } }
/// <summary> /// 验证回调URL有效性 /// </summary> /// <param name="requestauth">微信请求体</param> public string WeiXinAuthURL(WeiXinCallBackAuthViewModel requestauth) { // Infrastructure.WeiXin.WXBizMsgCrypt wxcpt = new Infrastructure.WeiXin.WXBizMsgCrypt(CALLBACKTOKEN, CALLBACKENCODINGAESKEY, CORPID); string sVerifyMsgSig = requestauth.msg_signature; string sVerifyTimeStamp = requestauth.timestamp; string sVerifyNonce = requestauth.nonce; string sVerifyEchoStr = requestauth.echostr; int ret = -1; string sEchoStr = ""; // ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEchoStr); if (ret == 0) { return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = true, Result = sEchoStr, Code = ret.ToString() })); } return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = false, Result = "", Code = ret.ToString() })); }
/// <summary> /// 信息转发处理 /// </summary> /// <param name="request">请求处理</param> /// <param name="requestream">请求流</param> /// <returns></returns> public string SendCallBackMessage(WeiXinCallBackAuthViewModel request, Stream requestream) { // Infrastructure.WeiXin.WXBizMsgCrypt wxcpt = new Infrastructure.WeiXin.WXBizMsgCrypt(CALLBACKTOKEN, CALLBACKENCODINGAESKEY, CORPID); int ret = -1; string sMsg = ""; //解析之后的明文 string sReqData = GetXml(requestream); // ret = wxcpt.DecryptMsg(request.msg_signature, request.timestamp, request.nonce, sReqData, ref sMsg); if (ret != 0) { return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = false, Result = "", Code = ret.ToString() })); } XmlDocument doc = new XmlDocument(); doc.LoadXml(sMsg); XmlNode cropid = doc.SelectSingleNode("//ToUserName"); string cropId = cropid.InnerText; //获取企业id XmlNode from = doc.SelectSingleNode("//FromUserName"); string userid = from.InnerText; //获取员工id XmlNode type = doc.SelectSingleNode("//MsgType"); string msgtype = type.InnerText; //操作的类型 XmlNode CreateTime = doc.SelectSingleNode("//CreateTime"); string createtime = CreateTime.InnerText; //消息的创建时间 XmlNode AgentID = doc.SelectSingleNode("//AgentID"); string agentid = AgentID.InnerText;//应用id var Content = string.Empty; if (msgtype == "text") { XmlNode content = doc.SelectSingleNode("//Content"); Content = content.InnerText; } else if (msgtype == "event") { Content = "事件"; } var SendContent = string.Empty; #region 监控发给谁 #region 能力判断 var UserPower = GetPowerByWeixinUserId(userid); if (UserPower.IsPower) { if (msgtype == "text") { #region 帮助功能 //根据帮助文档获取 var HelpTxt = WeixinPowerHelpText(UserPower); #endregion #region 获取sendContent SendContent = getSendContent(Content, HelpTxt, UserPower); #endregion //#region 修改支付密码 ////修改支付密码 //if (IsChangePayPassWordPowers) //{ // if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.ChangePayPassword).Success) // { // SendContent = WeixinContentFillter(Content, Service.Enums.WeiXinTaskRegStr.ChangePayPassword); // } // else if (Content == "TX") // { // WalletService.WithdrawReady(); // SendContent = "提现信息已发送!:)"; // } // else if (Content == "支付密码") // { // SendContent = Service.Enums.WeiXinTaskRegStr.ChangePayPasswordDsec; // } // else // { // //SendContent = IsChangePassWordPower ? HelpTxt : "修改支付密码请回复:支付密码 4个字,系统将给你提供修改规则"; // SendContent = HelpTxt; // } //} //#endregion //#region 修改密码 ////修改密码 //if (IsChangePassWordPower) //{ // if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.ChangePassword).Success) // { // SendContent = ChangePassword(Content, Service.Enums.WeiXinTaskRegStr.ChangePassword, Service.Enums.WeiXinTaskRegStr.ChangePasswordDsec); // } // else if (Content == "修改密码") // { // SendContent = Service.Enums.WeiXinTaskRegStr.ChangePasswordDsec; // } // else // { // //SendContent = IsChangePayPassWordPowers ? HelpTxt : "修改密码请回复:修改密码 4个字,系统将给你提供修改规则"; // SendContent = HelpTxt; // } //} //#endregion //#region 查询用户Id ////查询用户ID //if (IsSearchUser) //{ // if (Common.Helpers.StringHelper.StrIsMatch(Content, Service.Enums.WeiXinTaskRegStr.SearchUserId).Success) // { // SendContent = GetUser(Content, Service.Enums.WeiXinTaskRegStr.SearchUserId, Service.Enums.WeiXinTaskRegStr.SearchUserIdDsec); // } // else if (Content == "查询用户") // { // SendContent = Service.Enums.WeiXinTaskRegStr.SearchUserIdDsec; // } // else // { // // SendContent = IsSearchUser ? "1:如果想修改密码请回复:修改密码 4个字,系统将给你提供修改规则;<br/>2:如果想修改支付密码请回复:支付密码 4个字,系统将给你提供修改规则;" : "修改密码请回复:修改密码 4个字,系统将给你提供修改规则"; // SendContent = HelpTxt; // } //} //#endregion } else if (msgtype == "event") { XmlNode events = doc.SelectSingleNode("//Event"); string weixinevents = events.InnerText; //事件类型 XmlNode EventKey = doc.SelectSingleNode("//EventKey"); string weiXinEventKey = EventKey.InnerText;//事件KEY值 XmlNode ScanCodeInfo = doc.SelectSingleNode("//ScanCodeInfo"); string weiXinScanCodeInfo = ScanCodeInfo.InnerText; //扫描信息 var weiXinScanType = string.Empty; var weiXinScanResult = string.Empty; if (!string.IsNullOrEmpty(weiXinScanCodeInfo)) { XmlNode ScanType = doc.SelectSingleNode("//ScanType"); weiXinScanType = ScanType.InnerText; //扫描类型 XmlNode ScanResult = doc.SelectSingleNode("//ScanResult"); weiXinScanResult = ScanResult.InnerText; //扫描结果 } if (string.IsNullOrEmpty(weiXinScanResult)) { SendContent = "扫码信息有误!"; } else { var usertransfer = JsonConvert.DeserializeObject <WxinxinUserTransferViewModel>(weiXinScanResult); if (usertransfer == null) { SendContent = "扫码信息有误!"; } else { SendTaskNotify(new TaskRequest() { Content = usertransfer.UserId + "amount:" + usertransfer.Amount + "desc:" + usertransfer.AmountDesc, ListUsers = "*****@*****.**" }); // WalletService.Transfer(ITradeTypeConfigurationExtention.ExiuAsUserId, usertransfer.UserId, usertransfer.Amount, "", usertransfer.AmountDesc, usertransfer.Token); SendContent = "转账已完成!"; } } } } SendContent = (!UserPower.IsPower) ? "你好,我是驴尾巴!好好工作,不要逗我玩!" : (string.IsNullOrEmpty(Content)) ? "不知道你说的什么!" : SendContent; #endregion var CallBackEncryptMsg = string.Empty; string result = SetData(SendContent, userid, cropId, createtime); if (msgtype == "text" || msgtype == "event")//如果接收的是消息类型 { // ret = wxcpt.EncryptMsg(result, request.timestamp, request.nonce, ref CallBackEncryptMsg); if (ret != 0) { return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = false, Result = "", Code = ret.ToString() })); } return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = true, Result = CallBackEncryptMsg, Code = ret.ToString() })); } return(JsonConvert.SerializeObject(new WeiXinMessageResult { Status = true, Result = "未知的操作", Code = ret.ToString() })); }
public ActionResult WeiXinChangePassword(WeiXinCallBackAuthViewModel weixinauth) { return(View()); }