mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 20:03:26 +08:00
优化后台查询微信支付单支付状态
This commit is contained in:
@@ -18,6 +18,7 @@ using CoreCms.Net.Loging;
|
|||||||
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.Entities;
|
||||||
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Extensions;
|
||||||
|
using CoreCms.Net.Utility.Helper;
|
||||||
using CoreCms.Net.WeChat.Service.HttpClients;
|
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||||
using Essensoft.Paylink.WeChatPay;
|
using Essensoft.Paylink.WeChatPay;
|
||||||
using Essensoft.Paylink.WeChatPay.V2;
|
using Essensoft.Paylink.WeChatPay.V2;
|
||||||
@@ -123,7 +124,7 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
var jObj = (JObject)JsonConvert.DeserializeObject(entity.parameters);
|
var jObj = (JObject)JsonConvert.DeserializeObject(entity.parameters);
|
||||||
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
||||||
tradeType = GetTradeType(value.ObjectToString());
|
tradeType = PayHelper.GetWeiChatPayTradeType(value.ObjectToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -294,7 +295,7 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
var jObj = (JObject)JsonConvert.DeserializeObject(paymentInfo.parameters);
|
var jObj = (JObject)JsonConvert.DeserializeObject(paymentInfo.parameters);
|
||||||
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
||||||
tradeType = GetTradeType(value.ObjectToString());
|
tradeType = PayHelper.GetWeiChatPayTradeType(value.ObjectToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = await _weChatPayConfigServices.QueryByClauseAsync(p =>
|
var config = await _weChatPayConfigServices.QueryByClauseAsync(p =>
|
||||||
@@ -352,18 +353,5 @@ namespace CoreCms.Net.Services
|
|||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetTradeType(string tradeType)
|
|
||||||
{
|
|
||||||
if (tradeType != GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString() &&
|
|
||||||
tradeType != GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString() &&
|
|
||||||
tradeType != GlobalEnumVars.WeiChatPayTradeType.NATIVE.ToString() &&
|
|
||||||
tradeType != GlobalEnumVars.WeiChatPayTradeType.APP.ToString() &&
|
|
||||||
tradeType != GlobalEnumVars.WeiChatPayTradeType.MWEB.ToString()
|
|
||||||
)
|
|
||||||
return "JSAPI";
|
|
||||||
if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString())
|
|
||||||
return "JSAPI";
|
|
||||||
return tradeType;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
payment_code: code,
|
payment_code: code,
|
||||||
payment_type: this.type,
|
payment_type: this.type,
|
||||||
params: {
|
params: {
|
||||||
//trade_type: 'NATIVE',
|
trade_type: 'JSAPI',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.ids = (this.type == this.$globalConstVars.paymentType.common || this.type == this.$globalConstVars.paymentType.pinTuan || this.type == this.$globalConstVars.paymentType.group || this.type == this.$globalConstVars.paymentType.seckill || this.type == this.$globalConstVars.paymentType.bargain || this.type == this.$globalConstVars.paymentType.giveaway || this.type == this.$globalConstVars.paymentType.solitaire || this.type == this.$globalConstVars.paymentType.transactionComponent || this.type == this.$globalConstVars.paymentType.serviceOrder) ? this.orderId : this.uid
|
data.ids = (this.type == this.$globalConstVars.paymentType.common || this.type == this.$globalConstVars.paymentType.pinTuan || this.type == this.$globalConstVars.paymentType.group || this.type == this.$globalConstVars.paymentType.seckill || this.type == this.$globalConstVars.paymentType.bargain || this.type == this.$globalConstVars.paymentType.giveaway || this.type == this.$globalConstVars.paymentType.solitaire || this.type == this.$globalConstVars.paymentType.transactionComponent || this.type == this.$globalConstVars.paymentType.serviceOrder) ? this.orderId : this.uid
|
||||||
|
|||||||
34
CoreCms.Net.Utility/Helper/PayHelper.cs
Normal file
34
CoreCms.Net.Utility/Helper/PayHelper.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Utility.Helper
|
||||||
|
{
|
||||||
|
public static class PayHelper
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取微信支付类型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tradeType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string GetWeiChatPayTradeType(string tradeType)
|
||||||
|
{
|
||||||
|
if (tradeType != GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString() &&
|
||||||
|
tradeType != GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString() &&
|
||||||
|
tradeType != GlobalEnumVars.WeiChatPayTradeType.NATIVE.ToString() &&
|
||||||
|
tradeType != GlobalEnumVars.WeiChatPayTradeType.APP.ToString() &&
|
||||||
|
tradeType != GlobalEnumVars.WeiChatPayTradeType.MWEB.ToString()
|
||||||
|
)
|
||||||
|
return GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString();
|
||||||
|
if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI_OFFICIAL.ToString())
|
||||||
|
return GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString();
|
||||||
|
return tradeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -31,8 +31,11 @@ using Microsoft.AspNetCore.Authorization;
|
|||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using NPOI.HSSF.UserModel;
|
using NPOI.HSSF.UserModel;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using CoreCms.Net.Services;
|
||||||
|
|
||||||
namespace CoreCms.Net.Web.Admin.Controllers
|
namespace CoreCms.Net.Web.Admin.Controllers
|
||||||
{
|
{
|
||||||
@@ -49,7 +52,8 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
private readonly ICoreCmsBillPaymentsServices _coreCmsBillPaymentsServices;
|
private readonly ICoreCmsBillPaymentsServices _coreCmsBillPaymentsServices;
|
||||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
private readonly IWeChatPayClient _client;
|
private readonly IWeChatPayClient _client;
|
||||||
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
|
||||||
|
private readonly IWeChatPayConfigServices _weChatPayConfigServices;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -58,14 +62,14 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
/// <param name="webHostEnvironment"></param>
|
/// <param name="webHostEnvironment"></param>
|
||||||
/// <param name="coreCmsBillPaymentsServices"></param>
|
/// <param name="coreCmsBillPaymentsServices"></param>
|
||||||
/// <param name="client"></param>
|
/// <param name="client"></param>
|
||||||
/// <param name="optionsAccessor"></param>
|
/// <param name="weChatPayConfigServices"></param>
|
||||||
public CoreCmsBillPaymentsController(IWebHostEnvironment webHostEnvironment
|
public CoreCmsBillPaymentsController(IWebHostEnvironment webHostEnvironment
|
||||||
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices, IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
|
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices, IWeChatPayClient client, IWeChatPayConfigServices weChatPayConfigServices)
|
||||||
{
|
{
|
||||||
_webHostEnvironment = webHostEnvironment;
|
_webHostEnvironment = webHostEnvironment;
|
||||||
_coreCmsBillPaymentsServices = coreCmsBillPaymentsServices;
|
_coreCmsBillPaymentsServices = coreCmsBillPaymentsServices;
|
||||||
_client = client;
|
_client = client;
|
||||||
_optionsAccessor = optionsAccessor;
|
_weChatPayConfigServices = weChatPayConfigServices;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 获取列表============================================================
|
#region 获取列表============================================================
|
||||||
@@ -508,9 +512,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
jm.msg = "不存在此信息";
|
jm.msg = "不存在此信息";
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
if (model.paymentCode != GlobalEnumVars.PaymentsTypes.wechatpay.ToString())
|
if (model.paymentCode != GlobalEnumVars.PaymentsTypes.wechatpay.ToString() && model.paymentCode != GlobalEnumVars.PaymentsTypes.alipay.ToString())
|
||||||
{
|
{
|
||||||
jm.msg = "此更新暂时仅支持微信支付查询";
|
jm.msg = "此更新暂时仅支持微信支付及支付宝支付查询";
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,32 +525,79 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var request = new WeChatPayOrderQueryRequest
|
if (model.paymentCode == GlobalEnumVars.PaymentsTypes.wechatpay.ToString())
|
||||||
{
|
{
|
||||||
//微信订单号
|
var tradeType = GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString();
|
||||||
//TransactionId = model.TransactionId,
|
if (!string.IsNullOrEmpty(model.parameters))
|
||||||
//商户订单号
|
{
|
||||||
OutTradeNo = model.paymentId
|
var jObj = (JObject)JsonConvert.DeserializeObject(model.parameters);
|
||||||
};
|
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
||||||
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
tradeType = PayHelper.GetWeiChatPayTradeType(value.ObjectToString());
|
||||||
|
}
|
||||||
|
|
||||||
if (response is { ReturnCode: WeChatPayCode.Success, ResultCode: WeChatPayCode.Success, TradeState: WeChatPayCode.Success })
|
var config = await _weChatPayConfigServices.QueryByClauseAsync(p => p.isDefault == true && p.isEnable == true && p.appType == tradeType);
|
||||||
|
|
||||||
|
if (config == null)
|
||||||
|
{
|
||||||
|
jm.msg = "未获取到你的支付配置信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
//构建linkPay请求配置实体
|
||||||
|
var payOptions = new WeChatPayOptions
|
||||||
|
{
|
||||||
|
AppId = config.appId,
|
||||||
|
MchId = config.mchId,
|
||||||
|
APIKey = config.apiKey,
|
||||||
|
APIv3Key = config.apiV3Key,
|
||||||
|
Certificate = config.certificate,
|
||||||
|
RsaPublicKey = config.rsaPublicKey,
|
||||||
|
SubAppId = config.subAppId,
|
||||||
|
SubMchId = config.subMchId
|
||||||
|
};
|
||||||
|
|
||||||
|
var request = new WeChatPayOrderQueryRequest
|
||||||
|
{
|
||||||
|
//微信订单号
|
||||||
|
//TransactionId = model.TransactionId,
|
||||||
|
//商户订单号
|
||||||
|
OutTradeNo = model.paymentId
|
||||||
|
};
|
||||||
|
var response = await _client.ExecuteAsync(request, payOptions);
|
||||||
|
|
||||||
|
if (response is { ReturnCode: WeChatPayCode.Success, ResultCode: WeChatPayCode.Success, TradeState: WeChatPayCode.Success })
|
||||||
|
{
|
||||||
|
var money = Math.Round((decimal)response.TotalFee / 100, 2);
|
||||||
|
await _coreCmsBillPaymentsServices.ToUpdate(response.OutTradeNo,
|
||||||
|
(int)GlobalEnumVars.BillPaymentsStatus.Payed,
|
||||||
|
GlobalEnumVars.PaymentsTypes.wechatpay.ToString(), money, response.ResultCode,
|
||||||
|
response.TransactionId);
|
||||||
|
|
||||||
|
jm.code = 0;
|
||||||
|
jm.msg = "刷新成功";
|
||||||
|
jm.data = response;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jm.code = 1;
|
||||||
|
jm.data = response;
|
||||||
|
jm.msg = response.TradeState == "NOTPAY" ? response.TradeStateDesc : response.ErrCodeDes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (model.paymentCode == GlobalEnumVars.PaymentsTypes.alipay.ToString())
|
||||||
{
|
{
|
||||||
var money = Math.Round((decimal)response.TotalFee / 100, 2);
|
|
||||||
await _coreCmsBillPaymentsServices.ToUpdate(response.OutTradeNo,
|
|
||||||
(int)GlobalEnumVars.BillPaymentsStatus.Payed,
|
|
||||||
GlobalEnumVars.PaymentsTypes.wechatpay.ToString(), money, response.ResultCode,
|
|
||||||
response.TransactionId);
|
|
||||||
|
|
||||||
jm.code = 0;
|
|
||||||
jm.msg = "刷新成功";
|
|
||||||
jm.data = response;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
jm.code = 1;
|
jm.msg = "错误类型的支付方式";
|
||||||
jm.msg = response.TradeStateDesc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return jm;
|
return jm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1300,14 +1300,14 @@
|
|||||||
支付单表
|
支付单表
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsBillPaymentsServices,Essensoft.Paylink.WeChatPay.V2.IWeChatPayClient,Microsoft.Extensions.Options.IOptions{Essensoft.Paylink.WeChatPay.WeChatPayOptions})">
|
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsBillPaymentsServices,Essensoft.Paylink.WeChatPay.V2.IWeChatPayClient,CoreCms.Net.IServices.IWeChatPayConfigServices)">
|
||||||
<summary>
|
<summary>
|
||||||
构造函数
|
构造函数
|
||||||
</summary>
|
</summary>
|
||||||
<param name="webHostEnvironment"></param>
|
<param name="webHostEnvironment"></param>
|
||||||
<param name="coreCmsBillPaymentsServices"></param>
|
<param name="coreCmsBillPaymentsServices"></param>
|
||||||
<param name="client"></param>
|
<param name="client"></param>
|
||||||
<param name="optionsAccessor"></param>
|
<param name="weChatPayConfigServices"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.GetPageList">
|
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.GetPageList">
|
||||||
<summary>
|
<summary>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
</script>
|
</script>
|
||||||
<script type="text/html" id="LAY-app-CoreCmsBillPayments-tableBox-bar">
|
<script type="text/html" id="LAY-app-CoreCmsBillPayments-tableBox-bar">
|
||||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||||
{{# if(d.paymentCode == 'wechatpay' && d.status !=2){ }}
|
{{# if((d.paymentCode == 'wechatpay' || d.paymentCode == 'alipay') && d.status !=2){ }}
|
||||||
<a class="layui-btn layui-btn-xs" lay-event="doRefresh">刷新</a>
|
<a class="layui-btn layui-btn-xs" lay-event="doRefresh">刷新</a>
|
||||||
{{# } }}
|
{{# } }}
|
||||||
</script>
|
</script>
|
||||||
@@ -224,6 +224,7 @@
|
|||||||
//执行刷新操作
|
//执行刷新操作
|
||||||
function doRefresh(obj) {
|
function doRefresh(obj) {
|
||||||
coreHelper.Post("Api/CoreCmsBillPayments/doRefresh", { id: obj.data.paymentId }, function (e) {
|
coreHelper.Post("Api/CoreCmsBillPayments/doRefresh", { id: obj.data.paymentId }, function (e) {
|
||||||
|
table.reloadData('LAY-app-CoreCmsBillPayments-tableBox');
|
||||||
layer.msg(e.msg);
|
layer.msg(e.msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user