mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 21:03:26 +08:00
【新增】新增微信扫码支付功能,对接PC端。
【新增】增加DTO类库,将逐步完善dto层。 【修复】修复【分类】切换后,切换回来未清零原始数据,导致更新数据重复的问题。 【调整】移除模板库功能,防止出现审核因为模板库页面存在而导致的审核失败。暂将模板库的代码存放到会员QQ群内,方便下载使用。 【调整】代码生成器【Repository.tpl】移除Cache手动增删改,【SqlSugarSetup】增加sqlsugar自动检测增删改后清理二级缓存。 【调整】后端新增秒杀独立组件,用于区分团购及秒杀的差异,首页新增秒杀组件。 【优化】重写首页所有组件样式及接口数据获取效率。 【优化】优化拼团,秒杀,团购,接龙数据获取逻辑,提升列表及详情页面数据获取效率。 【优化】调整拼团,秒杀,团购,服务商品推广海报为新式海报效果。增加服务商品推广海报。 【优化】清理h5相关代码判断,移除h5支付组件,提高响应速度。 【优化】移除小程序前端冗余代码。加快代码执行效率。
This commit is contained in:
@@ -17,6 +17,7 @@ using Newtonsoft.Json;
|
||||
using System.Threading.Tasks;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Essensoft.Paylink.Alipay;
|
||||
using Essensoft.Paylink.Alipay.Domain;
|
||||
using Essensoft.Paylink.Alipay.Request;
|
||||
@@ -67,7 +68,7 @@ namespace CoreCms.Net.Services
|
||||
OutTradeNo = entity.paymentId,
|
||||
Subject = entity.payTitle.Length > 40 ? entity.payTitle[..40] : entity.payTitle,
|
||||
ProductCode = entity.paymentCode,
|
||||
TotalAmount = entity.money.ToString(),
|
||||
TotalAmount = entity.money.ToString(CultureInfo.InvariantCulture),
|
||||
Body = entity.payTitle.Length > 40 ? entity.payTitle[..40] : entity.payTitle
|
||||
};
|
||||
var req = new AlipayTradeAppPayRequest();
|
||||
|
||||
@@ -19,6 +19,7 @@ using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||
using Essensoft.Paylink.Alipay.Domain;
|
||||
using Essensoft.Paylink.WeChatPay;
|
||||
using Essensoft.Paylink.WeChatPay.V2;
|
||||
using Essensoft.Paylink.WeChatPay.V2.Request;
|
||||
@@ -26,6 +27,7 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using QRCoder;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
@@ -178,36 +180,69 @@ namespace CoreCms.Net.Services
|
||||
var response = await _client.ExecuteAsync(orderRequest, _optionsAccessor.Value);
|
||||
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||
{
|
||||
var req = new WeChatPayJsApiSdkRequest
|
||||
{
|
||||
Package = "prepay_id=" + response.PrepayId
|
||||
};
|
||||
WeChatPayDictionary parameter;
|
||||
//App微信支付
|
||||
if (tradeType == GlobalEnumVars.WeiChatPayTradeType.APP.ToString())
|
||||
{
|
||||
var reqApp = new WeChatPayAppSdkRequest()
|
||||
{
|
||||
PrepayId = response.PrepayId
|
||||
};
|
||||
parameter = await _client.ExecuteAsync(reqApp, _optionsAccessor.Value);
|
||||
var parameter = await _client.ExecuteAsync(reqApp, _optionsAccessor.Value);
|
||||
parameter.Add("paymentId", entity.paymentId);
|
||||
jm.status = true;
|
||||
jm.msg = "创建微信APP支付环境成功";
|
||||
jm.data = parameter;
|
||||
jm.otherData = response;
|
||||
}
|
||||
else
|
||||
//JsApi通用微信支付
|
||||
else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString())
|
||||
{
|
||||
parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
|
||||
// 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6)
|
||||
var req = new WeChatPayJsApiSdkRequest
|
||||
{
|
||||
Package = "prepay_id=" + response.PrepayId
|
||||
};
|
||||
var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value);
|
||||
parameter.Add("paymentId", entity.paymentId);
|
||||
jm.status = true;
|
||||
jm.msg = "创建JSAPI支付环境成功";
|
||||
jm.data = parameter;
|
||||
//jm.otherData = response;
|
||||
}
|
||||
//扫码支付
|
||||
else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.NATIVE.ToString())
|
||||
{
|
||||
jm.status = true;
|
||||
jm.msg = "创建微信扫码支付环境成功";
|
||||
jm.data = new
|
||||
{
|
||||
response,
|
||||
entity.paymentId
|
||||
};
|
||||
//确定是否存在扫码的图片,然后转成base64到前端进行扫码支付
|
||||
if (!string.IsNullOrEmpty(response.CodeUrl) && response.CodeUrl.Contains("weixin://wxpay/bizpayurl?pr="))
|
||||
{
|
||||
using var qrGenerator = new QRCodeGenerator();
|
||||
using var qrCodeData = qrGenerator.CreateQrCode(response.CodeUrl, QRCodeGenerator.ECCLevel.L);
|
||||
using var pngByteQrCode = new PngByteQRCode(qrCodeData);
|
||||
var pngBytes = pngByteQrCode.GetGraphic(20, false);
|
||||
var stringBase64Str = Convert.ToBase64String(pngBytes);
|
||||
jm.otherData = stringBase64Str;
|
||||
}
|
||||
}
|
||||
//H5支付
|
||||
else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.MWEB.ToString())
|
||||
{
|
||||
jm.status = true;
|
||||
jm.msg = "创建H5支付环境成功";
|
||||
jm.data = response;
|
||||
}
|
||||
// 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6)
|
||||
parameter.Add("paymentId", entity.paymentId);
|
||||
|
||||
jm.status = true;
|
||||
//jm.msg = "创建支付环境成功";
|
||||
jm.data = parameter;
|
||||
jm.otherData = response;
|
||||
}
|
||||
else
|
||||
{
|
||||
jm.status = false;
|
||||
jm.msg = "微信建立支付请求失败";
|
||||
jm.otherData = response;
|
||||
//jm.otherData = response;
|
||||
}
|
||||
return jm;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user