mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:43:26 +08:00
【升级】升级paylink支付组件。
【优化】优化商家付款到零钱组件。
This commit is contained in:
@@ -5,8 +5,8 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.0" />
|
||||||
<PackageReference Include="InitQ" Version="1.0.0.14" />
|
<PackageReference Include="InitQ" Version="1.0.0.14" />
|
||||||
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.20.1" />
|
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.20.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="DotLiquid" Version="2.2.656" />
|
<PackageReference Include="DotLiquid" Version="2.2.656" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" />
|
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.0" />
|
||||||
<PackageReference Include="Flurl.Http" Version="3.2.4" />
|
<PackageReference Include="Flurl.Http" Version="3.2.4" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
|
||||||
|
|||||||
@@ -29,16 +29,16 @@ using CoreCms.Net.WeChat.Service.HttpClients;
|
|||||||
using Essensoft.Paylink.WeChatPay;
|
using Essensoft.Paylink.WeChatPay;
|
||||||
using Essensoft.Paylink.WeChatPay.V2;
|
using Essensoft.Paylink.WeChatPay.V2;
|
||||||
using Essensoft.Paylink.WeChatPay.V2.Request;
|
using Essensoft.Paylink.WeChatPay.V2.Request;
|
||||||
|
using Essensoft.Paylink.WeChatPay.V3.Domain;
|
||||||
|
using Essensoft.Paylink.WeChatPay.V3.Request;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
|
|
||||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
|
|
||||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
|
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using Yitter.IdGenerator;
|
using Yitter.IdGenerator;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
|
||||||
|
|
||||||
namespace CoreCms.Net.Services
|
namespace CoreCms.Net.Services
|
||||||
@@ -55,13 +55,15 @@ namespace CoreCms.Net.Services
|
|||||||
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
|
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
|
||||||
private readonly ICoreCmsUserWeChatInfoServices _weChatInfoServices;
|
private readonly ICoreCmsUserWeChatInfoServices _weChatInfoServices;
|
||||||
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
||||||
private readonly IWeChatPayClient _client;
|
private readonly IWeChatPayClient _v2Client;
|
||||||
|
private readonly Essensoft.Paylink.WeChatPay.V3.IWeChatPayClient _v3Client;
|
||||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||||
|
|
||||||
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
|
|
||||||
|
|
||||||
public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal,
|
public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal,
|
||||||
IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions<WeChatPayOptions> optionsAccessor, IWeChatPayClient client, IHttpContextAccessor httpContextAccessor)
|
IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions<WeChatPayOptions> optionsAccessor, IWeChatPayClient v2Client, IHttpContextAccessor httpContextAccessor, IWebHostEnvironment webHostEnvironment, Essensoft.Paylink.WeChatPay.V3.IWeChatPayClient v3Client)
|
||||||
{
|
{
|
||||||
this._dal = dal;
|
this._dal = dal;
|
||||||
base.BaseDal = dal;
|
base.BaseDal = dal;
|
||||||
@@ -71,8 +73,10 @@ namespace CoreCms.Net.Services
|
|||||||
_userBalanceServices = userBalanceServices;
|
_userBalanceServices = userBalanceServices;
|
||||||
_weChatInfoServices = weChatInfoServices;
|
_weChatInfoServices = weChatInfoServices;
|
||||||
_optionsAccessor = optionsAccessor;
|
_optionsAccessor = optionsAccessor;
|
||||||
_client = client;
|
_v2Client = v2Client;
|
||||||
_httpContextAccessor = httpContextAccessor;
|
_httpContextAccessor = httpContextAccessor;
|
||||||
|
_webHostEnvironment = webHostEnvironment;
|
||||||
|
_v3Client = v3Client;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -301,7 +305,7 @@ namespace CoreCms.Net.Services
|
|||||||
Desc = "余额提现零钱",
|
Desc = "余额提现零钱",
|
||||||
SpBillCreateIp = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1"
|
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)
|
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||||
{
|
{
|
||||||
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||||
@@ -359,7 +363,7 @@ namespace CoreCms.Net.Services
|
|||||||
Amount = amount,
|
Amount = amount,
|
||||||
Desc = "余额提现银行卡",
|
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)
|
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||||
{
|
{
|
||||||
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||||
@@ -396,41 +400,32 @@ namespace CoreCms.Net.Services
|
|||||||
//按分计算
|
//按分计算
|
||||||
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
||||||
|
|
||||||
var palpay = _optionsAccessor.Value;
|
var model = new WeChatPayTransferBatchesBodyModel
|
||||||
|
|
||||||
var manager = new InMemoryCertificateManager();
|
|
||||||
var options = new WechatTenpayClientOptions()
|
|
||||||
{
|
{
|
||||||
MerchantId = palpay.MchId,
|
AppId = _optionsAccessor.Value.AppId,
|
||||||
MerchantV3Secret = palpay.APIv3Key,
|
BatchName = info.id + "用户提现处理",
|
||||||
MerchantCertificateSerialNumber = "微信商户证书序列号",
|
BatchRemark = info.id + "用户提现处理",
|
||||||
MerchantCertificatePrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥,即 `apiclient_key.pem` 文件内容-----END PRIVATE KEY-----",
|
TotalAmount = amount,
|
||||||
PlatformCertificateManager = manager // 证书管理器的具体用法请参阅下文的高级技巧与加密、验签有关的章节
|
TotalNum = 1,
|
||||||
|
OutBatchNo = "ut" + info.createTime.ToString("yyyyMMddHHmmss"),
|
||||||
|
TransferDetailList = new List<TransferDetail>()
|
||||||
|
{
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
OutDetailNo = "ut" + info.id,
|
||||||
|
TransferAmount = amount,
|
||||||
|
TransferRemark = "用户提现处理",
|
||||||
|
OpenId = weChatUserInfo.openid,
|
||||||
|
UserName = info.accountName
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
var client = new WechatTenpayClient(options);
|
|
||||||
|
|
||||||
var request = new CreateTransferBatchRequest();
|
var request = new WeChatPayTransferBatchesRequest();
|
||||||
request.AppId = palpay.AppId;
|
request.SetBodyModel(model);
|
||||||
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<CreateTransferBatchRequest.Types.TransferDetail>();
|
|
||||||
//转账明细列表
|
|
||||||
var t = new CreateTransferBatchRequest.Types.TransferDetail
|
|
||||||
{
|
|
||||||
OutDetailNumber = "ut" + info.id,
|
|
||||||
TransferAmount = amount,
|
|
||||||
TransferRemark = "用户提现处理",
|
|
||||||
OpenId = weChatUserInfo.openid,
|
|
||||||
UserName = info.accountName
|
|
||||||
};
|
|
||||||
request.TransferDetailList.Add(t);
|
|
||||||
|
|
||||||
var response = await client.ExecuteCreateTransferBatchAsync(request);
|
var response = await _v3Client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||||
|
if (response.IsError == false)
|
||||||
if (response.IsSuccessful())
|
|
||||||
{
|
{
|
||||||
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||||
var message = JsonConvert.SerializeObject(response);
|
var message = JsonConvert.SerializeObject(response);
|
||||||
|
|||||||
@@ -51,8 +51,8 @@
|
|||||||
<PackageReference Include="EasyCaching.CSRedis" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.CSRedis" Version="1.7.0" />
|
||||||
<PackageReference Include="EasyCaching.InMemory" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.InMemory" Version="1.7.0" />
|
||||||
<PackageReference Include="EasyCaching.Serialization.Json" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.Serialization.Json" Version="1.7.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.0" />
|
||||||
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="7.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
|
||||||
|
|||||||
@@ -55,8 +55,8 @@
|
|||||||
<PackageReference Include="EasyCaching.CSRedis" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.CSRedis" Version="1.7.0" />
|
||||||
<PackageReference Include="EasyCaching.InMemory" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.InMemory" Version="1.7.0" />
|
||||||
<PackageReference Include="EasyCaching.Serialization.Json" Version="1.7.0" />
|
<PackageReference Include="EasyCaching.Serialization.Json" Version="1.7.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.1.0" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.1.0" />
|
||||||
<PackageReference Include="Hangfire" Version="1.7.31" />
|
<PackageReference Include="Hangfire" Version="1.7.31" />
|
||||||
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.31" />
|
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.31" />
|
||||||
<PackageReference Include="Hangfire.Core" Version="1.7.31" />
|
<PackageReference Include="Hangfire.Core" Version="1.7.31" />
|
||||||
|
|||||||
Reference in New Issue
Block a user