diff --git a/CoreCms.Net.Services/CoreCms.Net.Services.csproj b/CoreCms.Net.Services/CoreCms.Net.Services.csproj
index 47c33b67..a401c409 100644
--- a/CoreCms.Net.Services/CoreCms.Net.Services.csproj
+++ b/CoreCms.Net.Services/CoreCms.Net.Services.csproj
@@ -15,6 +15,7 @@
+
diff --git a/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs b/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs
index d1d83a2d..91e29e4a 100644
--- a/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs
+++ b/CoreCms.Net.Services/User/CoreCmsUserTocashServices.cs
@@ -9,6 +9,7 @@
***********************************************************************/
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
@@ -33,6 +34,9 @@ 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;
@@ -302,7 +306,13 @@ namespace CoreCms.Net.Services
{
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
var message = JsonConvert.SerializeObject(response);
- var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message, type = type }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
+ var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash()
+ {
+ status = status,
+ updateTime = DateTime.Now,
+ message = message,
+ type = type
+ }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
jm.status = bl;
jm.data = status;
}
@@ -310,7 +320,13 @@ namespace CoreCms.Net.Services
{
status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
var message = JsonConvert.SerializeObject(response);
- var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message, type = type }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
+ var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash()
+ {
+ status = status,
+ updateTime = DateTime.Now,
+ message = message,
+ type = type
+ }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
jm.status = bl;
jm.data = status;
}
@@ -363,12 +379,81 @@ namespace CoreCms.Net.Services
break;
}
+ case (int)GlobalEnumVars.UserTocashType.商家转账到零钱:
+ {
+ var user = await _userServices.QueryByIdAsync(info.userId);
+ if (user == null)
+ {
+ jm.msg = "用户信息获取失败";
+ return jm;
+ }
+ var weChatUserInfo = await _weChatInfoServices.QueryByClauseAsync(p => p.userId == info.userId);
+ if (weChatUserInfo == null)
+ {
+ jm.msg = "微信用户数据获取失败";
+ return jm;
+ }
+ //按分计算
+ var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
+
+ var palpay = _optionsAccessor.Value;
+
+ var manager = new InMemoryCertificateManager();
+ var options = new WechatTenpayClientOptions()
+ {
+ MerchantId = palpay.MchId,
+ MerchantV3Secret = palpay.APIv3Key,
+ MerchantCertificateSerialNumber = "微信商户证书序列号",
+ MerchantCertificatePrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥,即 `apiclient_key.pem` 文件内容-----END PRIVATE KEY-----",
+ PlatformCertificateManager = manager // 证书管理器的具体用法请参阅下文的高级技巧与加密、验签有关的章节
+ };
+ 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 response = await client.ExecuteCreateTransferBatchAsync(request);
+
+ if (response.IsSuccessful())
+ {
+ status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
+ var message = JsonConvert.SerializeObject(response);
+ var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message, type = type }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
+ jm.status = bl;
+ jm.data = status;
+ }
+ else
+ {
+ status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
+ var message = JsonConvert.SerializeObject(response);
+ var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message, type = type }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
+ jm.status = bl;
+ jm.data = status;
+ }
+ break;
+ }
+
default:
jm.msg = "提现方式获取失败";
jm.status = false;
break;
}
-
return jm;
diff --git a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml
index 8688ecc0..2e25ba61 100644
--- a/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml
+++ b/CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml
@@ -412,7 +412,7 @@
商品相关接口处理
-
+
构造函数