From 436c24ea8c397809897fb6c8d57bfc7a091f9ab3 Mon Sep 17 00:00:00 2001 From: zpc Date: Sun, 25 Aug 2024 15:46:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Utility/HttpContextExtensions.cs | 36 ++++++++++++++++++ .../HuanMeng.MiaoYu.Code/Chat/ChatBLL.cs | 2 +- .../HuanMeng.MiaoYu.Code.csproj | 4 ++ .../HuanMeng.MiaoYu.Code/Order/OrderBLL.cs | 3 +- .../Payment/Alipay/AlipayPayment.cs | 11 +++--- .../Payment/Contract/IPayment.cs | 2 +- .../Payment/PaymentExtend.cs | 22 +++++++---- .../Payment/WeChat/WeChatConfig.cs | 32 ++++++++++++++++ .../Payment/WeChat/WeChatPayment.cs | 34 +++++++++++++++++ .../DataStorage/1680394019/apiclient_cert.p12 | Bin 0 -> 2774 bytes .../DataStorage/1680394019/apiclient_cert.pem | 25 ++++++++++++ .../DataStorage/1680394019/apiclient_key.pem | 28 ++++++++++++++ .../1680394019/证书使用说明.txt | 18 +++++++++ .../DataStorage/1680394019_20240825_cert.zip | Bin 0 -> 6534 bytes .../HuanMeng.MiaoYu.WebApi.csproj | 12 ++++++ src/2-api/HuanMeng.MiaoYu.WebApi/Program.cs | 2 +- 16 files changed, 214 insertions(+), 17 deletions(-) create mode 100644 src/0-core/HuanMeng.DotNetCore/Utility/HttpContextExtensions.cs create mode 100644 src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatConfig.cs create mode 100644 src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatPayment.cs create mode 100644 src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/apiclient_cert.p12 create mode 100644 src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/apiclient_cert.pem create mode 100644 src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/apiclient_key.pem create mode 100644 src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/证书使用说明.txt create mode 100644 src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019_20240825_cert.zip diff --git a/src/0-core/HuanMeng.DotNetCore/Utility/HttpContextExtensions.cs b/src/0-core/HuanMeng.DotNetCore/Utility/HttpContextExtensions.cs new file mode 100644 index 0000000..3904fb9 --- /dev/null +++ b/src/0-core/HuanMeng.DotNetCore/Utility/HttpContextExtensions.cs @@ -0,0 +1,36 @@ +using Microsoft.AspNetCore.Http; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HuanMeng.DotNetCore.Utility +{ + public static class HttpContextExtensions + { + /// + /// 获取IP地址 + /// + /// + /// + public static string GetClientIpAddress(this HttpContext context) + { + // 尝试从X-Forwarded-For头部中获取IP地址 + var forwardedFor = context.Request.Headers["X-Forwarded-For"].FirstOrDefault(); + if (!string.IsNullOrEmpty(forwardedFor)) + { + // 处理可能的多个IP地址,通常第一个是客户端的真实IP + var ipAddresses = forwardedFor.Split(','); + if (ipAddresses.Length > 0) + { + return ipAddresses[0].Trim(); + } + } + + // 如果X-Forwarded-For头部不存在,使用RemoteIpAddress + return context.Connection.RemoteIpAddress?.ToString(); + } + } +} diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Chat/ChatBLL.cs b/src/0-core/HuanMeng.MiaoYu.Code/Chat/ChatBLL.cs index c06aea2..a3142ef 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/Chat/ChatBLL.cs +++ b/src/0-core/HuanMeng.MiaoYu.Code/Chat/ChatBLL.cs @@ -269,7 +269,7 @@ public class ChatBLL : MiaoYuBase #endregion var claudeChatResponse = await Chat(charact, mess); - if (claudeChatResponse.Message.Contains("香港") || claudeChatResponse.Message.Contains("台湾")|||| claudeChatResponse.Message.Contains("摇头丸")) + if (claudeChatResponse.Message.Contains("香港") || claudeChatResponse.Message.Contains("台湾")|| claudeChatResponse.Message.Contains("摇头丸")) { var chatMessage = new ChatMessageDto() { diff --git a/src/0-core/HuanMeng.MiaoYu.Code/HuanMeng.MiaoYu.Code.csproj b/src/0-core/HuanMeng.MiaoYu.Code/HuanMeng.MiaoYu.Code.csproj index b6fefec..b637826 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/HuanMeng.MiaoYu.Code.csproj +++ b/src/0-core/HuanMeng.MiaoYu.Code/HuanMeng.MiaoYu.Code.csproj @@ -27,6 +27,10 @@ + + + + diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Order/OrderBLL.cs b/src/0-core/HuanMeng.MiaoYu.Code/Order/OrderBLL.cs index 4f2bcfa..a6a9350 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/Order/OrderBLL.cs +++ b/src/0-core/HuanMeng.MiaoYu.Code/Order/OrderBLL.cs @@ -47,8 +47,9 @@ namespace HuanMeng.MiaoYu.Code.Order //创建订单 try { + var ip = HttpContextAccessor.HttpContext.GetClientIpAddress(); var payment = PaymentExtend.GetPayment(paymentMethod); - (var orderId, var order) = payment.CreateOrder(product.ProductName, product.Price.ToString(), product); + (var orderId, var order) = await payment.CreateOrder(product.ProductName, product.Price, product, ip); var t = product.ToIntentOrder(paymentMethod, orderId); t.UserId = _UserId; Dao.daoDbMiaoYu.context.Add(t); diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Payment/Alipay/AlipayPayment.cs b/src/0-core/HuanMeng.MiaoYu.Code/Payment/Alipay/AlipayPayment.cs index ca02b9c..1d41821 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/Payment/Alipay/AlipayPayment.cs +++ b/src/0-core/HuanMeng.MiaoYu.Code/Payment/Alipay/AlipayPayment.cs @@ -18,30 +18,31 @@ namespace HuanMeng.MiaoYu.Code.Payment.Alipay /// public class AlipayPayment : IPayment { - public (string orderId, string order) CreateOrder(string productName, string price, params object[] args) + public Task<(string orderId, string order)> CreateOrder(string productName, decimal price, params object[] args) { if (string.IsNullOrEmpty(productName)) { throw new ArgumentNullException($"产品名称不能为空!"); } - if (string.IsNullOrEmpty(price)) + var priceStr = price.ToString(); + if (string.IsNullOrEmpty(priceStr)) { throw new ArgumentNullException($"价格不能为空!"); } var orderId = GenerateTimestampIdWithOffset(); //.SetOptions(GetConfig()); - var response = Factory.Payment.App().Optional("passback_params", "PaymentType%3Dzfb").Pay(productName, orderId, price); + var response = Factory.Payment.App().Optional("passback_params", "PaymentType%3Dzfb").Pay(productName, orderId, priceStr); if (ResponseChecker.Success(response)) { Console.WriteLine("调用成功"); } else { - throw new Exception("创建订单失败!"); + throw new Exception("创建订单失败!" + response.Body); } //.PreCreate("Apple iPhone11 128G", "2234567234890", "5799.00"); var zfbOrderId = response.Body; - return (orderId, zfbOrderId); + return Task.FromResult((orderId, zfbOrderId)); } private string GenerateTimestampIdWithOffset() { diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Payment/Contract/IPayment.cs b/src/0-core/HuanMeng.MiaoYu.Code/Payment/Contract/IPayment.cs index e98ef59..da8d257 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/Payment/Contract/IPayment.cs +++ b/src/0-core/HuanMeng.MiaoYu.Code/Payment/Contract/IPayment.cs @@ -19,6 +19,6 @@ namespace HuanMeng.MiaoYu.Code.Payment.Contract /// 价格 /// 其它参数 /// - (string orderId,string order) CreateOrder(string productName, string price, params object[] args); + Task<(string orderId, string order)> CreateOrder(string productName, decimal price, params object[] args); } } diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Payment/PaymentExtend.cs b/src/0-core/HuanMeng.MiaoYu.Code/Payment/PaymentExtend.cs index 25e0e38..1ae7b71 100644 --- a/src/0-core/HuanMeng.MiaoYu.Code/Payment/PaymentExtend.cs +++ b/src/0-core/HuanMeng.MiaoYu.Code/Payment/PaymentExtend.cs @@ -3,17 +3,12 @@ using Alipay.EasySDK.Kernel; using HuanMeng.MiaoYu.Code.Payment.Alipay; using HuanMeng.MiaoYu.Code.Payment.Contract; +using HuanMeng.MiaoYu.Code.Payment.WeChat; using HuanMeng.MiaoYu.Model.Dto.Cache; -using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace HuanMeng.MiaoYu.Code.Payment { @@ -22,17 +17,27 @@ namespace HuanMeng.MiaoYu.Code.Payment /// public static class PaymentExtend { + //public static WXPayTradeApi WxApi { get; set; } /// /// 支付 /// /// /// - public static IHostApplicationBuilder AddAlipay(this IHostApplicationBuilder builder) + public static IHostApplicationBuilder AddPayment(this IHostApplicationBuilder builder) { AddAlipay(builder.Configuration); + + + var weChatConfig = builder.Configuration.GetSection("Payment:WeChatConfig").Get(); + + string key = Path.GetFullPath("DataStorage/1680394019/apiclient_key.pem"); + string key1 = Path.GetFullPath("DataStorage/1680394019/apiclient_cert.pem"); + return builder; } + + /// /// 支付 /// @@ -71,11 +76,12 @@ namespace HuanMeng.MiaoYu.Code.Payment /// public static IPayment GetPayment(string payment) { + if (payment == "zfb") { return new AlipayPayment(); } - return new AlipayPayment(); + return new WeChatPayment(); } /// diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatConfig.cs b/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatConfig.cs new file mode 100644 index 0000000..0ba9124 --- /dev/null +++ b/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatConfig.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HuanMeng.MiaoYu.Code.Payment.WeChat +{ + /// + /// + /// + public class WeChatConfig + { + /// + /// + /// + public string AppId { get; set; } + /// + /// + /// + public string AppSecret { get; set; } + /// + /// + /// + public string Key { get; set; } + public string MchId { get; set; } + public string NotifyUrl { get; set; } + } + + + +} diff --git a/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatPayment.cs b/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatPayment.cs new file mode 100644 index 0000000..6fd05a0 --- /dev/null +++ b/src/0-core/HuanMeng.MiaoYu.Code/Payment/WeChat/WeChatPayment.cs @@ -0,0 +1,34 @@ +using HuanMeng.MiaoYu.Code.Payment.Contract; + +namespace HuanMeng.MiaoYu.Code.Payment.WeChat +{ + /// + /// 微信支付 + /// + public class WeChatPayment() : IPayment + { + + public async Task<(string orderId, string order)> CreateOrder(string productName, decimal price, params object[] args) + { + + // WechatPayHelper.pay_config = new WechatPayConfig() + // { + // app_id = "xxxxxx", + // mch_id = "xxxxxx", + // api_key = "xxxxxx", + + // cert_path = "E:\\xxxxxx\\apiclient_cert.p12", + // cert_password = "xxxxxx" + // }; + var orderId = GenerateTimestampIdWithOffset(); + + return new(orderId, null); + } + private string GenerateTimestampIdWithOffset() + { + var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); // 获取Unix时间戳(毫秒) + var random = new Random().Next(1000, 9999); // 生成四位随机数 + return $"WX0{timestamp}J001Z{random}"; + } + } +} diff --git a/src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/apiclient_cert.p12 b/src/2-api/HuanMeng.MiaoYu.WebApi/DataStorage/1680394019/apiclient_cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..fd59988af1b936d515960f135c52bda31711ec3e GIT binary patch literal 2774 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 M_pF!)oV@k_0ItjZK|g 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 XPz1vLAqy1LyFU&4=Pg@;zqkJYp^{8| literal 0 HcmV?d00001 diff --git a/src/2-api/HuanMeng.MiaoYu.WebApi/HuanMeng.MiaoYu.WebApi.csproj b/src/2-api/HuanMeng.MiaoYu.WebApi/HuanMeng.MiaoYu.WebApi.csproj index 4b54bb5..7a8f456 100644 --- a/src/2-api/HuanMeng.MiaoYu.WebApi/HuanMeng.MiaoYu.WebApi.csproj +++ b/src/2-api/HuanMeng.MiaoYu.WebApi/HuanMeng.MiaoYu.WebApi.csproj @@ -31,6 +31,18 @@ + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/src/2-api/HuanMeng.MiaoYu.WebApi/Program.cs b/src/2-api/HuanMeng.MiaoYu.WebApi/Program.cs index 277b30b..2e4b6a6 100644 --- a/src/2-api/HuanMeng.MiaoYu.WebApi/Program.cs +++ b/src/2-api/HuanMeng.MiaoYu.WebApi/Program.cs @@ -132,7 +132,7 @@ builder.Services.AddSwaggerGen(c => }); //配置路由选项,使URL全部小写 //builder.Services.AddRouting(options => options.LowercaseUrls = true); -builder.AddAlipay(); +builder.AddPayment(); //添加多租户 builder.AddMultiTenantMiaoYu(); //添加腾讯云管理