From ecd2829ad660d8ac75a002b10255d29c2b8c5d1d Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期五, 21 六月 2024 16:57:32 +0800
Subject: [PATCH] 测试修改验签问题

---
 Wms/Wms/Controllers/UpApiController.cs |   65 +++++++++++++++++++++++---------
 1 files changed, 47 insertions(+), 18 deletions(-)

diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index e201dcd..2d549d0 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -15,6 +15,12 @@
 using WMS.DAL;
 using Microsoft.AspNetCore.Authorization;
 using Utility;
+using System.Collections.Generic;
+using System.Reflection.Emit;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json.Linq;
+using System.Runtime.CompilerServices;
 
 namespace Wms.Controllers
 {
@@ -31,7 +37,7 @@
         private readonly IArrivalNoticeServer _arrivalNoticeSvc;
         private readonly IStockCheckServer _stockCheckSvc;//鐩樼偣鍗昐vc 
         private readonly IProcurePlanServer _procurePlanSvc;//閲囪喘鍗昐vs
-        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc, IProcurePlanServer procurePlanSvc)
+        public UpApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IArrivalNoticeServer arrivalNoticeServer, IStockCheckServer stockCheckSvc, IProcurePlanServer procurePlanSvc)
         {
             _config = setting.Value;
             _exNoticeSvc = exNoticeSvc;
@@ -78,7 +84,7 @@
         /// <param name="model">鍏ュ簱鍗曞彿</param>
         /// <returns></returns>
         [HttpPost]
-        public IActionResult FinishAsn(IdVm model) 
+        public IActionResult FinishAsn(IdVm model)
         {
             try
             {
@@ -125,7 +131,7 @@
                     return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" });
                 }
 
-                _arrivalNoticeSvc.ByPdaFinish(model.Code, model.Code.Substring(0,2) == "AS" ? _config.ErpHost + _config.AsnFinishUrl : _config.ErpHost + _config.SoFinishUrl, int.Parse(userId));
+                _arrivalNoticeSvc.ByPdaFinish(model.Code, model.Code.Substring(0, 2) == "AS" ? _config.ErpHost + _config.AsnFinishUrl : _config.ErpHost + _config.SoFinishUrl, int.Parse(userId));
 
                 return Ok(new { code = 0, count = 0, msg = "鍗曟嵁澶嶆牳骞朵笂浼犳垚鍔�" });
             }
@@ -331,7 +337,7 @@
             {
                 SoResInfo result = _exNoticeSvc.ErpAddExportNotice(model);
                 return Ok(result);
-                
+
             }
             catch (Exception e)
             {
@@ -442,6 +448,7 @@
         /// 娴嬭瘯楠岀鍔犲瘑
         /// </summary>
         /// <returns></returns>
+        [ServiceFilter(typeof(ApiResponseActionFilter))]
         [Verification]
         [HttpPost]
         public IActionResult Demo2(IdVm model)
@@ -463,25 +470,47 @@
             }
         }
 
-        [HttpGet]
-        public IActionResult Demo3()
+        [HttpPost]
+        [ServiceFilter(typeof(ApiResponseActionFilter))]
+        [UnitOfWork]
+        public string Demo3(IdVm model)
         {
-            var result = new ErpModel { Success = -1, Message = "" };
-            try
-            {
-                var time = DateTimeOffset.Now.ToUnixTimeSeconds();
-                result = new ErpModel { Success = 0, Message = time.ToString() };
+            string jsonParams = JsonConvert.SerializeObject(model);
 
-                return Ok(result);
-            }
-            catch (Exception e)
-            {
-                result.Message = e.Message;
-                return Ok(result);
-            }
+            // 鐢熸垚鏃堕棿鎴筹紙Unix 鏃堕棿鎴筹級
+            var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
+
+            // 鐢熸垚绛惧悕
+            var signature = GenerateSignature(jsonParams);
+
+            // 杈撳嚭绛惧悕
+            Console.WriteLine("Generated Signature: " + signature);
+            return signature;
         }
 
+        private static string GenerateSignature(string jsonParams)
+        {
+            var appKey = "90170307d4184844ac2a26b431f79981";
+            // 灏� JSON 瀛楃涓茶浆鎹负 JObject
+            JObject jObject = JObject.Parse(jsonParams);
 
+            // 杩囨护鎺夋暟缁勭被鍨嬬殑灞炴��
+            var filteredProperties = jObject.Properties()
+                .Where(p => p.Value.Type != JTokenType.Array)
+                .ToDictionary(p => p.Name, p => p.Value.ToString());
+
+            // 娣诲姞鏃堕棿鎴筹紙Unix 鏃堕棿鎴筹級
+            var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
+            filteredProperties.Add("timestamp", timestamp);
+            filteredProperties.Add("appKey", appKey);
+
+            // 鏋勫缓寰呯鍚嶅瓧绗︿覆
+            var signatureBaseString = string.Join("&", filteredProperties.OrderBy(p => p.Key).Select(p => p.Key + "=" + p.Value));
+
+            // 璁$畻 MD5 鍊�
+            var computedSignature = Md5Tools.CalcMd5(signatureBaseString);
+            return computedSignature;
+        }
         #endregion
     }
 }

--
Gitblit v1.8.0