From 28fcd6c9ce371794f1e8b51a037450dafd574778 Mon Sep 17 00:00:00 2001 From: chenchun Date: Wed, 27 Aug 2025 17:46:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8F=B7=E5=9B=9E=E8=B0=83=E5=A4=84=E7=90=86=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8F=8A=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/FuwuhaoService.cs | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs new file mode 100644 index 00000000..40054d7e --- /dev/null +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/FuwuhaoService.cs @@ -0,0 +1,67 @@ +using System.Text; +using System.Text.Json; +using System.Xml.Serialization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Volo.Abp.Application.Services; + +namespace Yi.Framework.AiHub.Application.Services; + +/// +/// 服务号服务 +/// +public class FuwuhaoService : ApplicationService +{ + private readonly ILogger _logger; + private readonly IHttpContextAccessor _accessor; + + public FuwuhaoService(ILogger logger, IHttpContextAccessor accessor) + { + _logger = logger; + _accessor = accessor; + } + + /// + /// 查询已登录的账户信息 + /// + /// + [HttpGet("fuwuhao/callback")] + public async Task GetCallbackAsync([FromQuery] string signature, [FromQuery] string timestamp, + [FromQuery] string nonce, [FromQuery] string echostr) + { + + return echostr; + } + + [HttpPost("fuwuhao/callback")] + public async Task PostCallbackAsync([FromQuery] string signature, [FromQuery] string timestamp, + [FromQuery] string nonce) + { + var request = _accessor.HttpContext.Request; + // 1. 读取原始 XML 内容 + using var reader = new StreamReader(request.Body, Encoding.UTF8); + var xmlString = await reader.ReadToEndAsync(); + + var serializer = new XmlSerializer(typeof(FuwuhaoCallModel)); + using var stringReader = new StringReader(xmlString); + var body = (FuwuhaoCallModel)serializer.Deserialize(stringReader); + _logger.LogError("服务号Post回调通知:" + JsonSerializer.Serialize(body, new JsonSerializerOptions() + { + WriteIndented = true + })); + return "success"; + } +} + +[XmlRoot("xml")] +public class FuwuhaoCallModel +{ + [XmlElement("ToUserName")] public string ToUserName { get; set; } + [XmlElement("FromUserName")] public string FromUserName { get; set; } + [XmlElement("CreateTime")] public string CreateTime { get; set; } + [XmlElement("MsgType")] public string MsgType { get; set; } + [XmlElement("Event")] public string Event { get; set; } + [XmlElement("EventKey")] public string EventKey { get; set; } + [XmlElement("Ticket")] public string Ticket { get; set; } +} \ No newline at end of file