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 @@
-
-
+
+