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.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||
using Essensoft.Paylink.WeChatPay;
|
||||
using Essensoft.Paylink.WeChatPay.V2;
|
||||
@@ -123,7 +124,7 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
var jObj = (JObject)JsonConvert.DeserializeObject(entity.parameters);
|
||||
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);
|
||||
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 =>
|
||||
@@ -352,18 +353,5 @@ namespace CoreCms.Net.Services
|
||||
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_type: this.type,
|
||||
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
|
||||
|
||||
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.Mvc;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using SqlSugar;
|
||||
using CoreCms.Net.Services;
|
||||
|
||||
namespace CoreCms.Net.Web.Admin.Controllers
|
||||
{
|
||||
@@ -49,7 +52,8 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
private readonly ICoreCmsBillPaymentsServices _coreCmsBillPaymentsServices;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
private readonly IWeChatPayClient _client;
|
||||
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
||||
|
||||
private readonly IWeChatPayConfigServices _weChatPayConfigServices;
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -58,14 +62,14 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
/// <param name="webHostEnvironment"></param>
|
||||
/// <param name="coreCmsBillPaymentsServices"></param>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="optionsAccessor"></param>
|
||||
/// <param name="weChatPayConfigServices"></param>
|
||||
public CoreCmsBillPaymentsController(IWebHostEnvironment webHostEnvironment
|
||||
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices, IWeChatPayClient client, IOptions<WeChatPayOptions> optionsAccessor)
|
||||
, ICoreCmsBillPaymentsServices coreCmsBillPaymentsServices, IWeChatPayClient client, IWeChatPayConfigServices weChatPayConfigServices)
|
||||
{
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_coreCmsBillPaymentsServices = coreCmsBillPaymentsServices;
|
||||
_client = client;
|
||||
_optionsAccessor = optionsAccessor;
|
||||
_weChatPayConfigServices = weChatPayConfigServices;
|
||||
}
|
||||
|
||||
#region 获取列表============================================================
|
||||
@@ -508,9 +512,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
jm.msg = "不存在此信息";
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -521,6 +525,37 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
}
|
||||
|
||||
|
||||
if (model.paymentCode == GlobalEnumVars.PaymentsTypes.wechatpay.ToString())
|
||||
{
|
||||
var tradeType = GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString();
|
||||
if (!string.IsNullOrEmpty(model.parameters))
|
||||
{
|
||||
var jObj = (JObject)JsonConvert.DeserializeObject(model.parameters);
|
||||
if (jObj != null && jObj.TryGetValue("trade_type", out var value))
|
||||
tradeType = PayHelper.GetWeiChatPayTradeType(value.ObjectToString());
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
//微信订单号
|
||||
@@ -528,7 +563,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
//商户订单号
|
||||
OutTradeNo = model.paymentId
|
||||
};
|
||||
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||
var response = await _client.ExecuteAsync(request, payOptions);
|
||||
|
||||
if (response is { ReturnCode: WeChatPayCode.Success, ResultCode: WeChatPayCode.Success, TradeState: WeChatPayCode.Success })
|
||||
{
|
||||
@@ -545,8 +580,24 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
else
|
||||
{
|
||||
jm.code = 1;
|
||||
jm.msg = response.TradeStateDesc;
|
||||
jm.data = response;
|
||||
jm.msg = response.TradeState == "NOTPAY" ? response.TradeStateDesc : response.ErrCodeDes;
|
||||
}
|
||||
|
||||
}
|
||||
else if (model.paymentCode == GlobalEnumVars.PaymentsTypes.alipay.ToString())
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
jm.msg = "错误类型的支付方式";
|
||||
}
|
||||
|
||||
return jm;
|
||||
}
|
||||
|
||||
|
||||
@@ -1300,14 +1300,14 @@
|
||||
支付单表
|
||||
</summary>
|
||||
</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>
|
||||
<param name="webHostEnvironment"></param>
|
||||
<param name="coreCmsBillPaymentsServices"></param>
|
||||
<param name="client"></param>
|
||||
<param name="optionsAccessor"></param>
|
||||
<param name="weChatPayConfigServices"></param>
|
||||
</member>
|
||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.GetPageList">
|
||||
<summary>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
</script>
|
||||
<script type="text/html" id="LAY-app-CoreCmsBillPayments-tableBox-bar">
|
||||
<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>
|
||||
{{# } }}
|
||||
</script>
|
||||
@@ -224,6 +224,7 @@
|
||||
//执行刷新操作
|
||||
function doRefresh(obj) {
|
||||
coreHelper.Post("Api/CoreCmsBillPayments/doRefresh", { id: obj.data.paymentId }, function (e) {
|
||||
table.reloadData('LAY-app-CoreCmsBillPayments-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user