From 32d421fb8bdd76f7613af548c9dfb184c4a64a23 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 01 十二月 2025 13:14:02 +0800
Subject: [PATCH] feat:开发

---
 ApiTools.Core/Models/WxmpUtils/Models/WxmpSubscribMessageNotifyRequestQuery.cs |   33 +++++++++++
 ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs                                     |    2 
 ApiTools.Core/Utils/WxmpUtils/WxmpOptions.cs                                   |   18 ++++++
 ApiTools.Web.Entry/appsettings.json                                            |    7 ++
 ApiTools.Web.Entry/Controllers/WxmpController.cs                               |   39 +++++++++++++
 ApiTools.Core/ApiTools.Core.xml                                                |   35 +++++++++++
 ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs    |    4 +
 7 files changed, 136 insertions(+), 2 deletions(-)

diff --git a/ApiTools.Core/ApiTools.Core.xml b/ApiTools.Core/ApiTools.Core.xml
index 683f524..ffe0338 100644
--- a/ApiTools.Core/ApiTools.Core.xml
+++ b/ApiTools.Core/ApiTools.Core.xml
@@ -3323,6 +3323,26 @@
             寰俊灏忕▼搴忚闃呮秷鎭�氱煡
             </summary>
         </member>
+        <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyRequestQuery.Signature">
+            <summary>
+            绛惧悕
+            </summary>
+        </member>
+        <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyRequestQuery.Timestamp">
+            <summary>
+            鏃堕棿鎴�
+            </summary>
+        </member>
+        <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyRequestQuery.Nonce">
+            <summary>
+            闅忔満鏁�
+            </summary>
+        </member>
+        <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyRequestQuery.Echostr">
+            <summary>
+            闅忔満瀛楃涓�
+            </summary>
+        </member>
         <member name="T:ApiTools.Core.GetWxmpSubscribMessageTemplatesQuery">
             <summary>
             鏌ヨ寰俊灏忕▼搴忚闃呮秷鎭ā鏉�
@@ -7140,6 +7160,21 @@
             寰俊灏忕▼搴忛厤缃�
             </summary>
         </member>
+        <member name="P:ApiTools.Core.WxmpOptions.SubscribMessage">
+            <summary>
+            璁㈤槄娑堟伅
+            </summary>
+        </member>
+        <member name="P:ApiTools.Core.WxmpOptionsSubscribMessage.Token">
+            <summary>
+            浠ょ墝
+            </summary>
+        </member>
+        <member name="P:ApiTools.Core.WxmpOptionsSubscribMessage.EncodingAESKey">
+            <summary>
+            娑堟伅鍔犲瘑瀵嗛挜
+            </summary>
+        </member>
         <member name="P:ApiTools.Core.WxmpOptionsItem.Code">
             <summary>
             缂栧彿
diff --git a/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs b/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
index 033e7d6..55575cc 100644
--- a/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
+++ b/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
@@ -10,9 +10,11 @@
     /// <summary>
     /// 寰俊灏忕▼搴忚闃呮秷鎭�氱煡
     /// </summary>
-    [Resource([EnumResourceController.CommonServerWxmpUtils], Method = EnumResourceMethod.Post)]
+    [Resource([EnumResourceController.CommonServerWxmpUtils], Method = EnumResourceMethod.Get)]
     public class WxmpSubscribMessageNotifyCommand : IRequest<bool>
     {
+
+
         public string ToUserName { get; set; }
         public string FromUserName { get; set; }
         public DateTime CreateTime { get; set; }
diff --git a/ApiTools.Core/Models/WxmpUtils/Models/WxmpSubscribMessageNotifyRequestQuery.cs b/ApiTools.Core/Models/WxmpUtils/Models/WxmpSubscribMessageNotifyRequestQuery.cs
new file mode 100644
index 0000000..8f8bed4
--- /dev/null
+++ b/ApiTools.Core/Models/WxmpUtils/Models/WxmpSubscribMessageNotifyRequestQuery.cs
@@ -0,0 +1,33 @@
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+    public class WxmpSubscribMessageNotifyRequestQuery
+    {
+        /// <summary>
+        /// 绛惧悕
+        /// </summary>
+        [JsonProperty("signature")]
+        public string Signature { get; set; }
+        /// <summary>
+        /// 鏃堕棿鎴�
+        /// </summary>
+        [JsonProperty("timestamp")]
+        public string Timestamp { get; set; }
+        /// <summary>
+        /// 闅忔満鏁�
+        /// </summary>
+        [JsonProperty("nonce")]
+        public string Nonce { get; set; }
+        /// <summary>
+        /// 闅忔満瀛楃涓�
+        /// </summary>
+        [JsonProperty("echostr")]
+        public string Echostr { get; set; }
+    }
+}
diff --git a/ApiTools.Core/Utils/WxmpUtils/WxmpOptions.cs b/ApiTools.Core/Utils/WxmpUtils/WxmpOptions.cs
index ec1a277..6e5aaa5 100644
--- a/ApiTools.Core/Utils/WxmpUtils/WxmpOptions.cs
+++ b/ApiTools.Core/Utils/WxmpUtils/WxmpOptions.cs
@@ -18,6 +18,24 @@
         }
 
         public List<WxmpOptionsItem> Items { get; set; }
+
+        /// <summary>
+        /// 璁㈤槄娑堟伅
+        /// </summary>
+        public WxmpOptionsSubscribMessage SubscribMessage { get; set; }
+    }
+
+    public class WxmpOptionsSubscribMessage
+    {
+        /// <summary>
+        /// 浠ょ墝
+        /// </summary>
+        public string Token { get; set; }
+
+        /// <summary>
+        /// 娑堟伅鍔犲瘑瀵嗛挜
+        /// </summary>
+        public string EncodingAESKey { get; set; }
     }
 
     public class WxmpOptionsItem
diff --git a/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs b/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
index 39321b6..5dcf926 100644
--- a/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
+++ b/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
@@ -176,5 +176,7 @@
             if (callback == null || callback.ErrorCode != 0)
                 throw Oops.Oh(EnumErrorCodeType.s510, $"鍙戦�佽闃呮秷鎭け璐ワ細{callback.ErrorMessage}锛岃鑱旂郴绠$悊鍛�");
         }
+
+
     }
 }
diff --git a/ApiTools.Web.Entry/Controllers/WxmpController.cs b/ApiTools.Web.Entry/Controllers/WxmpController.cs
new file mode 100644
index 0000000..102d943
--- /dev/null
+++ b/ApiTools.Web.Entry/Controllers/WxmpController.cs
@@ -0,0 +1,39 @@
+锘縰sing ApiTools.Core;
+using Furion.DataEncryption;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+
+namespace ApiTools.Web.Entry.Controllers
+{
+    [Route("api/common/wxmp")]
+    public class WxmpController(
+            WxmpUtils utils,
+            IOptions<WxmpOptions> options
+        ) : ControllerBase
+    {
+        private readonly WxmpUtils utils = utils;
+        private readonly IOptions<WxmpOptions> options = options;
+
+        [HttpGet("subscribMessageNotify")]
+        public IActionResult SubscribMessageNotify([FromQuery] WxmpSubscribMessageNotifyRequestQuery request)
+        {
+            var @params = new[]
+            {
+                options.Value.SubscribMessage.Token,
+                request.Timestamp,
+                request.Nonce
+            }
+            .OrderBy(p => p)
+            .ToArray();
+            var text = string.Concat(@params);
+            if (SHA1Encryption.Compare(text, request.Signature, true))
+            {
+                return Content(request.Echostr);
+            }
+            else
+            {
+                return Unauthorized("楠岀澶辫触");
+            }
+        }
+    }
+}
diff --git a/ApiTools.Web.Entry/appsettings.json b/ApiTools.Web.Entry/appsettings.json
index bdb049d..812a8cd 100644
--- a/ApiTools.Web.Entry/appsettings.json
+++ b/ApiTools.Web.Entry/appsettings.json
@@ -58,7 +58,12 @@
         "AppSecret": "9a132eda735bc925200b0e215cffe20a",
         "EnvVersion": "trial"
       }
-    ]
+    ],
+    "SubscribMessage": {
+      "Url": "https://sms.81812333.com/api/common/wxmp/wxmpSubscribMessageNotify",
+      "Token": "8Uu6CZ9KM2CAr3Q3O0YdWUYPfcXFhgMK",
+      "EncodingAESKey": "tbBkUB7nCgZlfton3aKMlfzHSm7QdWgnpKFibl6sjn7"
+    },
   },
   "Task": {
     "SettlementTime": "T0"

--
Gitblit v1.9.1