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");
}
}
}