From 8656d4ca3606f1e5dcd53359a795835fca95e42c Mon Sep 17 00:00:00 2001 From: jianweie code Date: Sat, 2 Aug 2025 00:52:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=90=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E3=80=91=E5=AE=8C=E5=96=84=E6=8E=A5=E5=8F=A3=E7=AB=AF=E5=95=86?= =?UTF-8?q?=E5=AE=B6=E8=BD=AC=E8=B4=A6=E5=9B=9E=E8=B0=83=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...CoreCmsUserTocashWeChatNotifyRepository.cs | 8 + .../ICoreCmsUserTocashWeChatNotifyServices.cs | 7 + CoreCms.Net.Model/CoreCms.Net.Model.xml | 30 ++++ .../User/CoreCmsUserTocashWeChatNotify.cs | 151 ++++++++++++++---- ...CoreCmsUserTocashWeChatNotifyRepository.cs | 50 ++++-- .../CoreCmsUserTocashWeChatNotifyServices.cs | 10 ++ .../PayNotify/WeChatPayController.cs | 133 ++++++++++++--- .../CoreCms.Net.Web.WebApi.xml | 4 +- ...嗗杞处寰俊鍥炶皟閫氱煡琛ㄣ慍oreCmsUserTocashWeChatNotify.sql | 22 ++- 9 files changed, 356 insertions(+), 59 deletions(-) diff --git a/CoreCms.Net.IRepository/User/ICoreCmsUserTocashWeChatNotifyRepository.cs b/CoreCms.Net.IRepository/User/ICoreCmsUserTocashWeChatNotifyRepository.cs index dcded3dd..53624f09 100644 --- a/CoreCms.Net.IRepository/User/ICoreCmsUserTocashWeChatNotifyRepository.cs +++ b/CoreCms.Net.IRepository/User/ICoreCmsUserTocashWeChatNotifyRepository.cs @@ -26,6 +26,14 @@ namespace CoreCms.Net.IRepository { #region 閲嶅啓澧炲垹鏀规煡鎿嶄綔=========================================================== + /// + /// 閲嶅啓寮傛鎻掑叆鏂规硶锛堣繑鍥炲簭鍒楋級 + /// + /// 瀹炰綋鏁版嵁 + /// + Task ExecuteReturnIdentityAsync(CoreCmsUserTocashWeChatNotify entity); + + /// /// 閲嶅啓寮傛鎻掑叆鏂规硶 /// diff --git a/CoreCms.Net.IServices/User/ICoreCmsUserTocashWeChatNotifyServices.cs b/CoreCms.Net.IServices/User/ICoreCmsUserTocashWeChatNotifyServices.cs index b91b49b1..5c193dfa 100644 --- a/CoreCms.Net.IServices/User/ICoreCmsUserTocashWeChatNotifyServices.cs +++ b/CoreCms.Net.IServices/User/ICoreCmsUserTocashWeChatNotifyServices.cs @@ -26,6 +26,13 @@ namespace CoreCms.Net.IServices { #region 閲嶅啓澧炲垹鏀规煡鎿嶄綔=========================================================== + /// + /// 閲嶅啓寮傛鎻掑叆鏂规硶锛堣繑鍥炲簭鍒楋級 + /// + /// 瀹炰綋鏁版嵁 + /// + Task ExecuteReturnIdentityAsync(CoreCmsUserTocashWeChatNotify entity); + /// /// 閲嶅啓寮傛鎻掑叆鏂规硶 /// diff --git a/CoreCms.Net.Model/CoreCms.Net.Model.xml b/CoreCms.Net.Model/CoreCms.Net.Model.xml index 1455a5ef..bdcbf0bd 100644 --- a/CoreCms.Net.Model/CoreCms.Net.Model.xml +++ b/CoreCms.Net.Model/CoreCms.Net.Model.xml @@ -8397,6 +8397,11 @@ 鐢ㄦ埛鏄电О + + + 鍟嗗杞处鍙嶉鏁版嵁 + + 鐢ㄦ埛鎻愮幇浣跨敤鍟嗗杞处寰俊鍥炶皟閫氱煡 @@ -8447,6 +8452,31 @@ 鍒涘缓鏃堕棿 + + + 楠岀鐨勫钩鍙拌瘉涔﹀簭鍒楀彿鎴栨敮浠樺叕閽D + + + + + 楠岀鐨勭鍚嶅 + + + + + 楠岀鐨勬椂闂存埑 + + + + + 楠岀鐨勯殢鏈哄瓧绗︿覆 + + + + + 瑙e瘑鏁版嵁 + + 鐢ㄦ埛鎻愮幇浣跨敤鍟嗗杞处鍥炶皟璁板綍 diff --git a/CoreCms.Net.Model/Entities/User/CoreCmsUserTocashWeChatNotify.cs b/CoreCms.Net.Model/Entities/User/CoreCmsUserTocashWeChatNotify.cs index efcd9c12..433a9411 100644 --- a/CoreCms.Net.Model/Entities/User/CoreCmsUserTocashWeChatNotify.cs +++ b/CoreCms.Net.Model/Entities/User/CoreCmsUserTocashWeChatNotify.cs @@ -1,10 +1,10 @@ /*********************************************************************** * Project: CoreCms - * ProjectName: 鏍稿績鍐呭绠$悊绯荤粺 - * Web: https://www.corecms.net - * Author: 澶х伆鐏 - * Email: jianweie@163.com - * CreateTime: 2025/7/28 23:08:04 + * ProjectName: 鏍稿績鍐呭绠$悊绯荤粺 + * Web: https://www.corecms.net + * Author: 澶х伆鐏 + * Email: jianweie@163.com + * CreateTime: 2025/8/1 23:54:59 * Description: 鏆傛棤 ***********************************************************************/ @@ -25,67 +25,164 @@ namespace CoreCms.Net.Model.Entities public CoreCmsUserTocashWeChatNotify() { } - + /// /// 搴忓垪 /// [Display(Name = "搴忓垪")] + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + [Required(ErrorMessage = "璇疯緭鍏0}")] - public System.Int32 id { get; set; } - + + + + public System.Int32 id { get; set; } + + /// /// 閫氱煡ID /// [Display(Name = "閫氱煡ID")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - [StringLength(maximumLength: 50, ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] - public System.String callBackId { get; set; } - + [StringLength(maximumLength:50,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String callBackId { get; set; } + + /// /// 閫氱煡鍒涘缓鏃堕棿 /// [Display(Name = "閫氱煡鍒涘缓鏃堕棿")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - [StringLength(maximumLength: 50, ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] - public System.String create_time { get; set; } - + [StringLength(maximumLength:50,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String create_time { get; set; } + + /// /// 閫氱煡鏁版嵁绫诲瀷 /// [Display(Name = "閫氱煡鏁版嵁绫诲瀷")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - [StringLength(maximumLength: 50, ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] - public System.String resource_type { get; set; } - + [StringLength(maximumLength:50,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String resource_type { get; set; } + + /// /// 閫氱煡绫诲瀷 /// [Display(Name = "閫氱煡绫诲瀷")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - [StringLength(maximumLength: 50, ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] - public System.String event_type { get; set; } - + [StringLength(maximumLength:50,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String event_type { get; set; } + + /// /// 鍥炶皟鎽樿 /// [Display(Name = "鍥炶皟鎽樿")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - [StringLength(maximumLength: 100, ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] - public System.String summary { get; set; } - + [StringLength(maximumLength:100,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String summary { get; set; } + + /// /// 閫氱煡鏁版嵁 /// [Display(Name = "閫氱煡鏁版嵁")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - public System.String resource { get; set; } - + + + + public System.String resource { get; set; } + + /// /// 鍒涘缓鏃堕棿 /// [Display(Name = "鍒涘缓鏃堕棿")] + [Required(ErrorMessage = "璇疯緭鍏0}")] - public System.DateTime createTime { get; set; } + + + + public System.DateTime createTime { get; set; } + + + /// + /// 楠岀鐨勫钩鍙拌瘉涔﹀簭鍒楀彿鎴栨敮浠樺叕閽D + /// + [Display(Name = "楠岀鐨勫钩鍙拌瘉涔﹀簭鍒楀彿鎴栨敮浠樺叕閽D")] + + + [StringLength(maximumLength:100,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String wechatpaySerial { get; set; } + + + /// + /// 楠岀鐨勭鍚嶅 + /// + [Display(Name = "楠岀鐨勭鍚嶅")] + + + [StringLength(maximumLength:1000,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String wechatpaySignature { get; set; } + + + /// + /// 楠岀鐨勬椂闂存埑 + /// + [Display(Name = "楠岀鐨勬椂闂存埑")] + + + [StringLength(maximumLength:50,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String wechatpayTimestamp { get; set; } + + + /// + /// 楠岀鐨勯殢鏈哄瓧绗︿覆 + /// + [Display(Name = "楠岀鐨勯殢鏈哄瓧绗︿覆")] + + + [StringLength(maximumLength:100,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String wechatpayNonce { get; set; } + + + /// + /// 瑙e瘑鏁版嵁 + /// + [Display(Name = "瑙e瘑鏁版嵁")] + + + [StringLength(maximumLength:1000,ErrorMessage = "{0}涓嶈兘瓒呰繃{1}瀛")] + + + public System.String decryptedData { get; set; } + + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.Repository/User/CoreCmsUserTocashWeChatNotifyRepository.cs b/CoreCms.Net.Repository/User/CoreCmsUserTocashWeChatNotifyRepository.cs index 2833a281..d22573ab 100644 --- a/CoreCms.Net.Repository/User/CoreCmsUserTocashWeChatNotifyRepository.cs +++ b/CoreCms.Net.Repository/User/CoreCmsUserTocashWeChatNotifyRepository.cs @@ -1,10 +1,10 @@ /*********************************************************************** * Project: CoreCms - * ProjectName: 鏍稿績鍐呭绠$悊绯荤粺 - * Web: https://www.corecms.net - * Author: 澶х伆鐏 - * Email: jianweie@163.com - * CreateTime: 2025/7/28 23:08:04 + * ProjectName: 鏍稿績鍐呭绠$悊绯荤粺 + * Web: https://www.corecms.net + * Author: 澶х伆鐏 + * Email: jianweie@163.com + * CreateTime: 2025/8/1 23:54:59 * Description: 鏆傛棤 ***********************************************************************/ @@ -29,7 +29,6 @@ namespace CoreCms.Net.Repository public class CoreCmsUserTocashWeChatNotifyRepository : BaseRepository, ICoreCmsUserTocashWeChatNotifyRepository { private readonly IUnitOfWork _unitOfWork; - public CoreCmsUserTocashWeChatNotifyRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { _unitOfWork = unitOfWork; @@ -37,6 +36,18 @@ namespace CoreCms.Net.Repository #region 瀹炵幇閲嶅啓澧炲垹鏀规煡鎿嶄綔========================================================== + + /// + /// 閲嶅啓寮傛鎻掑叆鏂规硶锛堣繑鍥炲簭鍒楋級 + /// + /// 瀹炰綋鏁版嵁 + /// + public async Task ExecuteReturnIdentityAsync(CoreCmsUserTocashWeChatNotify entity) + { + var id = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync(); + return id; + } + /// /// 閲嶅啓寮傛鎻掑叆鏂规硶 /// @@ -69,7 +80,7 @@ namespace CoreCms.Net.Repository return jm; } //浜嬬墿澶勭悊杩囩▼寮濮 - oldModel.id = entity.id; + //oldModel.id = entity.id; oldModel.callBackId = entity.callBackId; oldModel.create_time = entity.create_time; oldModel.resource_type = entity.resource_type; @@ -77,6 +88,11 @@ namespace CoreCms.Net.Repository oldModel.summary = entity.summary; oldModel.resource = entity.resource; oldModel.createTime = entity.createTime; + oldModel.wechatpaySerial = entity.wechatpaySerial; + oldModel.wechatpaySignature = entity.wechatpaySignature; + oldModel.wechatpayTimestamp = entity.wechatpayTimestamp; + oldModel.wechatpayNonce = entity.wechatpayNonce; + oldModel.decryptedData = entity.decryptedData; //浜嬬墿澶勭悊杩囩▼缁撴潫 var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); @@ -134,10 +150,9 @@ namespace CoreCms.Net.Repository return jm; } - #endregion 瀹炵幇閲嶅啓澧炲垹鏀规煡鎿嶄綔========================================================== + #endregion #region 閲嶅啓鏍规嵁鏉′欢鏌ヨ鍒嗛〉鏁版嵁 - /// /// 閲嶅啓鏍规嵁鏉′欢鏌ヨ鍒嗛〉鏁版嵁 /// @@ -168,6 +183,12 @@ namespace CoreCms.Net.Repository summary = p.summary, resource = p.resource, createTime = p.createTime, + wechatpaySerial = p.wechatpaySerial, + wechatpaySignature = p.wechatpaySignature, + wechatpayTimestamp = p.wechatpayTimestamp, + wechatpayNonce = p.wechatpayNonce, + decryptedData = p.decryptedData, + }).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount); } else @@ -184,12 +205,19 @@ namespace CoreCms.Net.Repository summary = p.summary, resource = p.resource, createTime = p.createTime, + wechatpaySerial = p.wechatpaySerial, + wechatpaySignature = p.wechatpaySignature, + wechatpayTimestamp = p.wechatpayTimestamp, + wechatpayNonce = p.wechatpayNonce, + decryptedData = p.decryptedData, + }).ToPageListAsync(pageIndex, pageSize, totalCount); } var list = new PageList(page, pageIndex, pageSize, totalCount); return list; } - #endregion 閲嶅啓鏍规嵁鏉′欢鏌ヨ鍒嗛〉鏁版嵁 + #endregion + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.Services/User/CoreCmsUserTocashWeChatNotifyServices.cs b/CoreCms.Net.Services/User/CoreCmsUserTocashWeChatNotifyServices.cs index 8a7157dd..e3c4fbc5 100644 --- a/CoreCms.Net.Services/User/CoreCmsUserTocashWeChatNotifyServices.cs +++ b/CoreCms.Net.Services/User/CoreCmsUserTocashWeChatNotifyServices.cs @@ -40,6 +40,16 @@ namespace CoreCms.Net.Services #region 瀹炵幇閲嶅啓澧炲垹鏀规煡鎿嶄綔========================================================== + /// + /// 閲嶅啓寮傛鎻掑叆鏂规硶锛堣繑鍥炲簭鍒楋級 + /// + /// 瀹炰綋鏁版嵁 + /// + public async Task ExecuteReturnIdentityAsync(CoreCmsUserTocashWeChatNotify entity) + { + return await _dal.ExecuteReturnIdentityAsync(entity); + } + /// /// 閲嶅啓寮傛鎻掑叆鏂规硶 /// diff --git a/CoreCms.Net.Web.WebApi/Controllers/PayNotify/WeChatPayController.cs b/CoreCms.Net.Web.WebApi/Controllers/PayNotify/WeChatPayController.cs index 6efd2376..0738fd8e 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/PayNotify/WeChatPayController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/PayNotify/WeChatPayController.cs @@ -17,12 +17,15 @@ using CoreCms.Net.Model.FromBody; using Essensoft.Paylink.WeChatPay; using Essensoft.Paylink.WeChatPay.V2; using Essensoft.Paylink.WeChatPay.V2.Notify; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Newtonsoft.Json; using NLog; using System; +using System.Linq; using System.Threading.Tasks; +using SKIT.FlurlHttpClient.Wechat.TenpayV3; namespace CoreCms.Net.Web.WebApi.Controllers.PayNotify { @@ -39,18 +42,24 @@ namespace CoreCms.Net.Web.WebApi.Controllers.PayNotify private readonly IWeChatPayConfigServices _weChatPayConfigServices; private readonly ICoreCmsUserTocashWeChatNotifyServices _userTocashWeChatNotifyServices; + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IWechatTenpayClientFactory _wechatTenpayClientFactory; + private readonly ICoreCmsUserTocashServices _userTocashServices; /// /// 鏋勯犲嚱鏁 /// public WeChatPayController( - IWeChatPayNotifyClient client, ICoreCmsBillRefundServices billRefundServices, IRedisOperationRepository redisOperationRepository, IWeChatPayConfigServices weChatPayConfigServices, ICoreCmsUserTocashWeChatNotifyServices userTocashWeChatNotifyServices) + IWeChatPayNotifyClient client, ICoreCmsBillRefundServices billRefundServices, IRedisOperationRepository redisOperationRepository, IWeChatPayConfigServices weChatPayConfigServices, ICoreCmsUserTocashWeChatNotifyServices userTocashWeChatNotifyServices, IHttpContextAccessor httpContextAccessor, IWechatTenpayClientFactory wechatTenpayClientFactory, ICoreCmsUserTocashServices userTocashServices) { _client = client; _billRefundServices = billRefundServices; _redisOperationRepository = redisOperationRepository; _weChatPayConfigServices = weChatPayConfigServices; _userTocashWeChatNotifyServices = userTocashWeChatNotifyServices; + _httpContextAccessor = httpContextAccessor; + _wechatTenpayClientFactory = wechatTenpayClientFactory; + _userTocashServices = userTocashServices; } /// @@ -153,12 +162,17 @@ namespace CoreCms.Net.Web.WebApi.Controllers.PayNotify /// /// [HttpPost] - public async Task TransferBillsCallBack([FromBody] FMTransferBillsCallBack entity) + public async Task TransferBillsCallBack( + [FromHeader(Name = "Wechatpay-Timestamp")] string timestamp, + [FromHeader(Name = "Wechatpay-Nonce")] string nonce, + [FromHeader(Name = "Wechatpay-Signature")] string signature, + [FromHeader(Name = "Wechatpay-Serial")] string serialNumber, + [FromBody] FMTransferBillsCallBack entity) { try { NLogUtil.WriteAll(LogLevel.Trace, LogType.Refund, "鍟嗗杞处鍥炶皟閫氱煡", JsonConvert.SerializeObject(entity)); - + // 妫鏌ヨ姹傚ご鏄惁鍖呭惈蹇呰鐨勫瓧娈 if (entity == null) { var obj = new @@ -169,25 +183,108 @@ namespace CoreCms.Net.Web.WebApi.Controllers.PayNotify return new JsonResult(obj); } - var log = new CoreCmsUserTocashWeChatNotify(); - - log.callBackId = entity.id; - log.create_time = entity.create_time; - log.resource_type = entity.resource_type; - log.event_type = entity.event_type; - log.summary = entity.summary; - log.resource = JsonConvert.SerializeObject(entity.resource); - log.createTime = DateTime.Now; - - await _userTocashWeChatNotifyServices.InsertAsync(log); - - - if (entity.event_type== "MCHTRANSFER.BILL.FINISHED") + // 瀛樺偍鍥炶皟鏁版嵁 + var log = new CoreCmsUserTocashWeChatNotify { - + wechatpayNonce = nonce, + wechatpaySerial = serialNumber, + wechatpaySignature = signature, + wechatpayTimestamp = timestamp, + callBackId = entity.id, + create_time = entity.create_time, + resource_type = entity.resource_type, + event_type = entity.event_type, + summary = entity.summary, + resource = JsonConvert.SerializeObject(entity.resource), + createTime = DateTime.Now + }; + // 鑾峰彇杩斿洖搴忓垪 + var id = await _userTocashWeChatNotifyServices.ExecuteReturnIdentityAsync(log); + + // 鑾峰彇鏀粯閰嶇疆 + var payConfig = await _weChatPayConfigServices.QueryByClauseAsync(p => + p.isDefault == true && p.isEnable == true && + p.appType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString()); + + // 鏋勫缓WeChatPay瀹㈡埛绔 + var client = await _wechatTenpayClientFactory.Create(payConfig.mchId); + + // 楠岃瘉绛惧悕 + bool valid = await client.VerifyEventSignatureAsync( + webhookTimestamp: timestamp, + webhookNonce: nonce, + webhookBody: JsonConvert.SerializeObject(entity), + webhookSignature: signature, + webhookSerialNumber: serialNumber + ); + + // 濡傛灉楠岀澶辫触锛岃繑鍥為敊璇俊鎭 + if (!valid) + { + return new JsonResult(new { code = "FAIL", message = "楠岀澶辫触" }); } + // 鍙嶅簭鍒楀寲鍥炶皟妯″瀷 + var callbackModel = client.DeserializeEvent(JsonConvert.SerializeObject(entity)); + var eventType = callbackModel.EventType?.ToUpper(); + // 澶勭悊涓嶅悓鐨勪簨浠剁被鍨 + if (eventType == "MCHTRANSFER.BILL.FINISHED") + { + var callbackResource = client.DecryptEventResource(callbackModel); + + if (callbackResource != null) + { + //鏇存柊瑙e瘑鏁版嵁 + await _userTocashWeChatNotifyServices.UpdateAsync(p => new CoreCmsUserTocashWeChatNotify + { + decryptedData = JsonConvert.SerializeObject(callbackResource) + }, p => p.id == id); + + //涓氬姟澶勭悊 + var usertocash = callbackResource.OutBillNumber.Replace("usertocash", ""); + var userTocashId = Convert.ToInt32(usertocash); + + switch (callbackResource.State) + { + //杞处鎴愬姛 + case "SUCCESS": + await _userTocashServices.UpdateAsync(p => new CoreCmsUserTocash() + { + needUserGet = false, + }, p => p.id == userTocashId); + break; + + //鍗曟嵁宸插彈鐞 + case "ACCEPTED": + break; + + //鍗曟嵁澶勭悊涓紝杞处缁撴灉灏氭湭鏄庣‘锛屽涓鐩村浜庢鐘舵侊紝寤鸿妫鏌ヨ处鎴蜂綑棰濇槸鍚﹁冻澶 + case "PROCESSING": + break; + + //寰呮敹娆剧敤鎴风‘璁わ紝鍙媺璧峰井淇℃敹娆剧‘璁ら〉闈㈣繘琛屾敹娆剧‘璁 + case "WAIT_USER_CONFIRM": + break; + + //杞处澶辫触 + case "FAIL": + break; + + //鎾ら攢涓 + case "CANCELING": + break; + + //鎾ら攢 + case "CANCELLED": + break; + } + } + } + else + { + // 鍏朵粬鎯呭喌鐣 + } return NoContent(); } diff --git a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml index b18d5654..4d9c4e21 100644 --- a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml +++ b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml @@ -839,7 +839,7 @@ 寰俊鏀粯寮傛閫氱煡 - + 鏋勯犲嚱鏁 @@ -854,7 +854,7 @@ 閫娆剧粨鏋滈氱煡 - + 鍟嗗杞处鍥炶皟閫氱煡 diff --git a/鏁版嵁搴/SqlServer/20250729/3銆佹柊澧炪愮敤鎴锋彁鐜颁娇鐢ㄥ晢瀹惰浆璐﹀井淇″洖璋冮氱煡琛ㄣ慍oreCmsUserTocashWeChatNotify.sql b/鏁版嵁搴/SqlServer/20250729/3銆佹柊澧炪愮敤鎴锋彁鐜颁娇鐢ㄥ晢瀹惰浆璐﹀井淇″洖璋冮氱煡琛ㄣ慍oreCmsUserTocashWeChatNotify.sql index d9a3054a..ad442fea 100644 --- a/鏁版嵁搴/SqlServer/20250729/3銆佹柊澧炪愮敤鎴锋彁鐜颁娇鐢ㄥ晢瀹惰浆璐﹀井淇″洖璋冮氱煡琛ㄣ慍oreCmsUserTocashWeChatNotify.sql +++ b/鏁版嵁搴/SqlServer/20250729/3銆佹柊澧炪愮敤鎴锋彁鐜颁娇鐢ㄥ晢瀹惰浆璐﹀井淇″洖璋冮氱煡琛ㄣ慍oreCmsUserTocashWeChatNotify.sql @@ -1,5 +1,5 @@ -/****** Object: Table [dbo].[CoreCmsUserTocashWeChatNotify] Script Date: 2025/7/29 0:16:28 ******/ +/****** Object: Table [dbo].[CoreCmsUserTocashWeChatNotify] Script Date: 2025/8/2 0:29:31 ******/ SET ANSI_NULLS ON GO @@ -15,6 +15,11 @@ CREATE TABLE [dbo].[CoreCmsUserTocashWeChatNotify]( [summary] [NVARCHAR](100) NOT NULL, [resource] [NVARCHAR](MAX) NOT NULL, [createTime] [DATETIME] NOT NULL, + [wechatpaySerial] [NVARCHAR](100) NULL, + [wechatpaySignature] [NVARCHAR](1000) NULL, + [wechatpayTimestamp] [NVARCHAR](50) NULL, + [wechatpayNonce] [NVARCHAR](100) NULL, + [decryptedData] [NVARCHAR](1000) NULL, CONSTRAINT [PK_CoreCmsUserTocashWeChatNotify] PRIMARY KEY CLUSTERED ( [id] ASC @@ -46,6 +51,21 @@ GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'createTime' GO +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'验签的平台证书序列号或支付公钥ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'wechatpaySerial' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'验签的签名值' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'wechatpaySignature' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'验签的时间戳' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'wechatpayTimestamp' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'验签的随机字符串' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'wechatpayNonce' +GO + +EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'解密数据' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify', @level2type=N'COLUMN',@level2name=N'decryptedData' +GO + EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用户提现使用商家转账微信回调通知' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsUserTocashWeChatNotify' GO