using Api.MessageReceive.Service; using CommonUtil; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Api.MessageReceive.Controllers { [Route(TopConstants.API_ROUTE)] public class QwMessageController : ControllerBase { public static string _token = "u5tsOEqTNBwKcxgGoL"; public static string _aeskey = "XIkbuXu67vOwOcWWpZ1mAdOGxJn6Gs6B6YozPHgFAhE"; /// /// 企业微信消息 /// /// [AcceptVerbs("GET", "POST")] public async Task WxKfMessage() { if (HttpContext.Request.Method.ToLower() != "post") { #region 接口校验 QwBizMsgCrypt wxcpt = new QwBizMsgCrypt(_token, _aeskey, ""); string sVerifyMsgSig = HttpContext.Request.Query["msg_signature"]; string sVerifyTimeStamp = HttpContext.Request.Query["timestamp"]; string sVerifyNonce = HttpContext.Request.Query["nonce"]; string sVerifyEchoStr = HttpContext.Request.Query["echostr"].ToString(); int ret = 0; string sEchoStr = ""; ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEchoStr); if (ret != 0) { System.Console.WriteLine("ERR: VerifyURL fail, ret: " + ret); return Content(sEchoStr); } return Content(sEchoStr); #endregion } else { #region 解析官方请求参数 StreamReader reader = new StreamReader(HttpContext.Request.Body, Encoding.UTF8); var result = reader.ReadToEndAsync().Result; reader.Close(); string sReqMsgSig = HttpContext.Request.Query["msg_signature"]; string sReqTimeStamp = HttpContext.Request.Query["timestamp"]; string sReqNonce = HttpContext.Request.Query["nonce"]; WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(_token, _aeskey, ""); string sMsg = ""; // 解析之后的明文 var code = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, result, ref sMsg); LogUtil.Info($"服务商数据回调xmlConten---{sMsg}", $"qywx_msg_log日志"); #endregion WxKfService.WxMessageHandle(sMsg, "wxkf_msg"); } return Ok("success"); } } }