diff --git a/CoreCms.Net.RedisMQ/CoreCms.Net.RedisMQ.csproj b/CoreCms.Net.RedisMQ/CoreCms.Net.RedisMQ.csproj index a46cada0..86538f08 100644 --- a/CoreCms.Net.RedisMQ/CoreCms.Net.RedisMQ.csproj +++ b/CoreCms.Net.RedisMQ/CoreCms.Net.RedisMQ.csproj @@ -5,8 +5,8 @@ - - + + diff --git a/CoreCms.Net.Repository/CoreCms.Net.Repository.csproj b/CoreCms.Net.Repository/CoreCms.Net.Repository.csproj index 2e9d39af..7c1f1c29 100644 --- a/CoreCms.Net.Repository/CoreCms.Net.Repository.csproj +++ b/CoreCms.Net.Repository/CoreCms.Net.Repository.csproj @@ -6,7 +6,7 @@ - + diff --git a/CoreCms.Net.Services/CoreCms.Net.Services.csproj b/CoreCms.Net.Services/CoreCms.Net.Services.csproj index a401c409..101eff24 100644 --- a/CoreCms.Net.Services/CoreCms.Net.Services.csproj +++ b/CoreCms.Net.Services/CoreCms.Net.Services.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs b/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs index 91e29e4a..9a6e80e1 100644 --- a/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs +++ b/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs @@ -29,16 +29,16 @@ using CoreCms.Net.WeChat.Service.HttpClients; using Essensoft.Paylink.WeChatPay; using Essensoft.Paylink.WeChatPay.V2; using Essensoft.Paylink.WeChatPay.V2.Request; +using Essensoft.Paylink.WeChatPay.V3.Domain; +using Essensoft.Paylink.WeChatPay.V3.Request; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Newtonsoft.Json; -using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings; -using SKIT.FlurlHttpClient.Wechat.TenpayV3; -using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models; using SqlSugar; using Yitter.IdGenerator; +using Microsoft.AspNetCore.Hosting; namespace CoreCms.Net.Services @@ -55,13 +55,15 @@ namespace CoreCms.Net.Services private readonly ICoreCmsUserBalanceServices _userBalanceServices; private readonly ICoreCmsUserWeChatInfoServices _weChatInfoServices; private readonly IOptions _optionsAccessor; - private readonly IWeChatPayClient _client; + private readonly IWeChatPayClient _v2Client; + private readonly Essensoft.Paylink.WeChatPay.V3.IWeChatPayClient _v3Client; private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IWebHostEnvironment _webHostEnvironment; public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal, - IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions optionsAccessor, IWeChatPayClient client, IHttpContextAccessor httpContextAccessor) + IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions optionsAccessor, IWeChatPayClient v2Client, IHttpContextAccessor httpContextAccessor, IWebHostEnvironment webHostEnvironment, Essensoft.Paylink.WeChatPay.V3.IWeChatPayClient v3Client) { this._dal = dal; base.BaseDal = dal; @@ -71,8 +73,10 @@ namespace CoreCms.Net.Services _userBalanceServices = userBalanceServices; _weChatInfoServices = weChatInfoServices; _optionsAccessor = optionsAccessor; - _client = client; + _v2Client = v2Client; _httpContextAccessor = httpContextAccessor; + _webHostEnvironment = webHostEnvironment; + _v3Client = v3Client; } /// @@ -301,7 +305,7 @@ namespace CoreCms.Net.Services Desc = "余额提现零钱", SpBillCreateIp = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1" }; - var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); + var response = await _v2Client.ExecuteAsync(request, _optionsAccessor.Value); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { status = (int)GlobalEnumVars.UserTocashStatus.提现成功; @@ -359,7 +363,7 @@ namespace CoreCms.Net.Services Amount = amount, Desc = "余额提现银行卡", }; - var response = await _client.ExecuteAsync(request, _optionsAccessor.Value); + var response = await _v2Client.ExecuteAsync(request, _optionsAccessor.Value); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { status = (int)GlobalEnumVars.UserTocashStatus.提现成功; @@ -396,41 +400,32 @@ namespace CoreCms.Net.Services //按分计算 var amount = Convert.ToInt16((info.money - info.withdrawals) * 100); - var palpay = _optionsAccessor.Value; - - var manager = new InMemoryCertificateManager(); - var options = new WechatTenpayClientOptions() + var model = new WeChatPayTransferBatchesBodyModel { - MerchantId = palpay.MchId, - MerchantV3Secret = palpay.APIv3Key, - MerchantCertificateSerialNumber = "微信商户证书序列号", - MerchantCertificatePrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥,即 `apiclient_key.pem` 文件内容-----END PRIVATE KEY-----", - PlatformCertificateManager = manager // 证书管理器的具体用法请参阅下文的高级技巧与加密、验签有关的章节 + AppId = _optionsAccessor.Value.AppId, + BatchName = info.id + "用户提现处理", + BatchRemark = info.id + "用户提现处理", + TotalAmount = amount, + TotalNum = 1, + OutBatchNo = "ut" + info.createTime.ToString("yyyyMMddHHmmss"), + TransferDetailList = new List() + { + new() + { + OutDetailNo = "ut" + info.id, + TransferAmount = amount, + TransferRemark = "用户提现处理", + OpenId = weChatUserInfo.openid, + UserName = info.accountName + } + } }; - var client = new WechatTenpayClient(options); - var request = new CreateTransferBatchRequest(); - request.AppId = palpay.AppId; - request.OutBatchNumber = "ut" + info.createTime.ToString("yyyyMMddHHmmss"); - request.BatchName = info.id + "用户提现处理"; - request.BatchRemark = info.id + "用户提现处理"; - request.TotalAmount = amount; - request.TotalNumber = 1; - request.TransferDetailList = new List(); - //转账明细列表 - var t = new CreateTransferBatchRequest.Types.TransferDetail - { - OutDetailNumber = "ut" + info.id, - TransferAmount = amount, - TransferRemark = "用户提现处理", - OpenId = weChatUserInfo.openid, - UserName = info.accountName - }; - request.TransferDetailList.Add(t); + var request = new WeChatPayTransferBatchesRequest(); + request.SetBodyModel(model); - var response = await client.ExecuteCreateTransferBatchAsync(request); - - if (response.IsSuccessful()) + var response = await _v3Client.ExecuteAsync(request, _optionsAccessor.Value); + if (response.IsError == false) { status = (int)GlobalEnumVars.UserTocashStatus.提现成功; var message = JsonConvert.SerializeObject(response); diff --git a/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj b/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj index 4a3c5a51..48d090ba 100644 --- a/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj +++ b/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj @@ -51,8 +51,8 @@ - - + + diff --git a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.csproj b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.csproj index e2e7caea..c47bac25 100644 --- a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.csproj +++ b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.csproj @@ -55,8 +55,8 @@ - - + +