WX
2023-04-15 68f6a4ad43fda2aa8dab3442f1009d88a210f2cf
微信native支付
19个文件已修改
2个文件已添加
442 ■■■■■ 已修改文件
CommonHelper/CommonHelper.csproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonHelper/app.config 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonHelper/packages.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.BLL/GasolineBlend.BLL.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.BLL/app.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.BLL/packages.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.DAL/GasolineBlend.DAL.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.DAL/app.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.DAL/packages.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend.Entity/app.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/Controllers/PayController.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/GasolineBlend.csproj 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/Web.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/packages.config 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Entity/RiskControlRR/PayErrLog.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Entity/RiskControlRR/PayOrder.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Pay/TenPayService.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/RiskControl.NewService.csproj 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Service/PayService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/app.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/packages.config 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonHelper/CommonHelper.csproj
@@ -73,8 +73,8 @@
      <HintPath>..\packages\Microsoft.Office.Interop.Word.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Word.dll</HintPath>
      <EmbedInteropTypes>False</EmbedInteropTypes>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
      <HintPath>..\packages\NLog.4.5.3\lib\net45\NLog.dll</HintPath>
@@ -125,8 +125,8 @@
    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
CommonHelper/app.config
@@ -12,7 +12,11 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
CommonHelper/packages.config
@@ -4,7 +4,7 @@
  <package id="CSRedisCore" version="3.0.52" targetFramework="net461" />
  <package id="Microsoft.CSharp" version="4.5.0" targetFramework="net461" />
  <package id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="13.0.2" targetFramework="net461" />
  <package id="NLog" version="4.5.3" targetFramework="net461" />
  <package id="NPOI" version="2.3.0" targetFramework="net461" />
  <package id="Portable.BouncyCastle" version="1.8.6" targetFramework="net461" />
@@ -16,6 +16,6 @@
  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net461" />
  <package id="WfyExpress.Depends.ChnCharInfo" version="1.0.0" targetFramework="net461" />
</packages>
GasolineBlend.BLL/GasolineBlend.BLL.csproj
@@ -76,8 +76,8 @@
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\MWArray.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="NPOI, Version=2.3.0.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
      <HintPath>..\packages\NPOI.2.3.0\lib\net40\NPOI.dll</HintPath>
GasolineBlend.BLL/app.config
@@ -14,7 +14,7 @@
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -22,7 +22,7 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
GasolineBlend.BLL/packages.config
@@ -3,7 +3,7 @@
  <package id="LinqToExcel" version="1.11.0" targetFramework="net461" />
  <package id="MathNet.Numerics" version="4.15.0" targetFramework="net461" />
  <package id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="13.0.2" targetFramework="net461" />
  <package id="NPOI" version="2.3.0" targetFramework="net461" />
  <package id="Portable.BouncyCastle" version="1.8.6" targetFramework="net461" />
  <package id="SharpZipLib" version="0.86.0" targetFramework="net461" />
GasolineBlend.DAL/GasolineBlend.DAL.csproj
@@ -77,8 +77,8 @@
    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Transactions" />
    <Reference Include="System.Xml.Linq" />
GasolineBlend.DAL/app.config
@@ -4,7 +4,7 @@
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -20,7 +20,7 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
GasolineBlend.DAL/packages.config
@@ -13,5 +13,5 @@
  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net461" />
</packages>
GasolineBlend.Entity/app.config
@@ -12,11 +12,11 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
GasolineBlend/Controllers/PayController.cs
@@ -1,4 +1,6 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
@@ -7,7 +9,10 @@
using GasolineBlend.Filter;
using RiskControl.NewService.Entity.RiskControlRR;
using RiskControl.NewService.Extension;
using RiskControl.NewService.Pay;
using RiskControl.NewService.Service;
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Events;
using SqlSugar;
namespace GasolineBlend.Controllers
@@ -21,6 +26,8 @@
        private PayRechargeAmountService _amountService = new PayRechargeAmountService();
        private PayOrderService _orderService = new PayOrderService();
        private TenPayService _tenPay = new TenPayService();
        #region 充值金额
        [HttpPost]
@@ -33,7 +40,7 @@
        [HttpPost]
        public async Task<ActionResult> DeleteRechargeAmount(int id)
        {
            var res = await _amountService.DeleteAsync(a=>a.Id == id);
            var res = await _amountService.DeleteAsync(a => a.Id == id);
            return SuccessNoShow();
        }
        [HttpPost]
@@ -49,7 +56,7 @@
        {
            var res = await _amountService.GetListAsync();
            res = res?.OrderBy(a => a.RechargeAmount).ToList();
            return SuccessNoShow(data:res);
            return SuccessNoShow(data: res);
        }
        #endregion
@@ -92,16 +99,85 @@
            return SuccessNoShow();
        }
        [HttpPost]
        public async Task<ActionResult> GetOrderPage(int pageIndex,int pageSize,string orderNo,int CreateUserId
            , DateTime? startTime,DateTime? endTime,EnumPayment? payment)
        public async Task<ActionResult> GetOrderPage(int pageIndex, int pageSize, string orderNo, int CreateUserId
            , DateTime? startTime, DateTime? endTime, EnumPayment? payment)
        {
            var res = await _orderService.GetPages(pageIndex,  pageSize,  orderNo,  CreateUserId
                ,  startTime,  endTime,  payment);
            return SuccessNoShow(data:res);
            var res = await _orderService.GetPages(pageIndex, pageSize, orderNo, CreateUserId
                , startTime, endTime, payment);
            return SuccessNoShow(data: res);
        }
        #endregion
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        /// <exception cref="NotSupportedException"></exception>
        [HttpPost]
        public async Task<ActionResult> CreateOrder(PayOrder param)
        {
            param.OrderNo = Guid.NewGuid().ToString("N");
            param.CreateUserId = OperatorProvider.Instance.Current.UserId;
            param.PaymentStatus = EnumPaymentStatus.Paying;
            var order = await _orderService.AddAsync(param);
            switch (param.Payment)
            {
                case EnumPayment.WechatPay:
                    var codeUrl = await _tenPay.GetPayQrCodeUrl(order.PayAmount, order.OrderNo);
                    return SuccessNoShow(data: codeUrl);
                    break;
                default:
                    throw new NotSupportedException();
            }
        }
        /// <summary>
        /// 微信支付消息回调
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public async Task TenPayNotify()
        {
            Stream postData = Request.InputStream;
            StreamReader sRead = new StreamReader(postData);
            string postContent = sRead.ReadToEnd();
            sRead.Close();
            var result = postContent.ToObject<WechatTenpayEvent>();
            var resStr = _tenPay.AesGcmDecrypt(result.Resource.AssociatedData,result.Resource.Nonce,result.Resource.CipherText);
            var obj = resStr.ToObject<TransactionResource>();
            var orderNo = obj.OutTradeNumber;
            var order = await _orderService.GetModelAsync(a => a.OrderNo == orderNo);
            if (order == null)
            {
                LogHelper.Error($"没找到订单,OrderNO:[{orderNo}];" +
                                $"回调消息:{postContent}");
                return;
            }
            order.PaymentSysId = obj.TransactionId;
            // 支付成功
            if (result.EventType == "TRANSACTION.SUCCESS" && obj.TradeState == "SUCCESS")
            {
                order.PayTime = obj.SuccessTime.DateTime;
                order.PaymentStatus = EnumPaymentStatus.Success;
            }
            else
            {
                order.PaymentStatus = EnumPaymentStatus.Error;
                var errlog = new PayErrLog()
                {
                    OrderNo = order.OrderNo,
                    Content = postContent
                };
                await _orderService.LogPayError(errlog);
            }
            var issuccess = await _orderService.UpdateAsync(order);
        }
    }
}
}
GasolineBlend/GasolineBlend.csproj
@@ -52,11 +52,23 @@
    <Reference Include="BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
      <HintPath>..\packages\Portable.BouncyCastle.1.8.6\lib\net40\BouncyCastle.Crypto.dll</HintPath>
    </Reference>
    <Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
      <HintPath>..\packages\BouncyCastle.Cryptography.2.1.1\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
    </Reference>
    <Reference Include="Flurl, Version=3.0.6.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Flurl.3.0.6\lib\net461\Flurl.dll</HintPath>
    </Reference>
    <Reference Include="Flurl.Http, Version=3.2.4.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Flurl.Http.3.2.4\lib\net461\Flurl.Http.dll</HintPath>
    </Reference>
    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
      <HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
    </Reference>
    <Reference Include="LinqToExcel, Version=1.11.0.0, Culture=neutral, PublicKeyToken=9c8ea65a58f03f1f, processorArchitecture=MSIL">
      <HintPath>..\packages\LinqToExcel.1.11.0\lib\LinqToExcel.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
@@ -66,8 +78,8 @@
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\MWArray.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="NPOI, Version=2.3.0.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
      <HintPath>..\packages\NPOI.2.3.0\lib\net40\NPOI.dll</HintPath>
@@ -90,17 +102,48 @@
    <Reference Include="Remotion.Interfaces, Version=1.13.52.2, Culture=neutral, PublicKeyToken=0669cf0452175907, processorArchitecture=MSIL">
      <HintPath>..\packages\LinqToExcel.1.11.0\lib\Remotion.Interfaces.dll</HintPath>
    </Reference>
    <Reference Include="SKIT.FlurlHttpClient.Common, Version=2.6.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SKIT.FlurlHttpClient.Common.2.6.0\lib\net461\SKIT.FlurlHttpClient.Common.dll</HintPath>
    </Reference>
    <Reference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3, Version=2.18.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SKIT.FlurlHttpClient.Wechat.TenpayV3.2.18.0\lib\net461\SKIT.FlurlHttpClient.Wechat.TenpayV3.dll</HintPath>
    </Reference>
    <Reference Include="SqlSugar, Version=5.1.4.66, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SqlSugar.5.1.4.66\lib\SqlSugar.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
    </Reference>
    <Reference Include="System.Data" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
    </Reference>
    <Reference Include="System.Numerics" />
    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
    </Reference>
    <Reference Include="System.ServiceModel" />
    <Reference Include="System.Text.Encodings.Web, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath>
    </Reference>
    <Reference Include="System.Text.Json, Version=6.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Text.Json.6.0.7\lib\net461\System.Text.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
    </Reference>
    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
    </Reference>
    <Reference Include="System.Web.DynamicData" />
    <Reference Include="System.Web.Entity" />
    <Reference Include="System.Web.ApplicationServices" />
@@ -450,7 +493,7 @@
          <AutoAssignPort>True</AutoAssignPort>
          <DevelopmentServerPort>55219</DevelopmentServerPort>
          <DevelopmentServerVPath>/</DevelopmentServerVPath>
          <IISUrl>http://localhost:45219/</IISUrl>
          <IISUrl>http://127.0.0.1:45219/</IISUrl>
          <NTLMAuthentication>False</NTLMAuthentication>
          <UseCustomServer>False</UseCustomServer>
          <CustomServerUrl>
GasolineBlend/Web.config
@@ -114,7 +114,7 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -122,7 +122,7 @@
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NPOI.OpenXmlFormats" publicKeyToken="0DF73EC7942B34E1" culture="neutral" />
GasolineBlend/packages.config
@@ -2,6 +2,9 @@
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net461" />
  <package id="bootstrap" version="3.0.0" targetFramework="net461" />
  <package id="BouncyCastle.Cryptography" version="2.1.1" targetFramework="net461" />
  <package id="Flurl" version="3.0.6" targetFramework="net461" />
  <package id="Flurl.Http" version="3.2.4" targetFramework="net461" />
  <package id="jQuery" version="1.10.2" targetFramework="net461" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net461" />
  <package id="LinqToExcel" version="1.11.0" targetFramework="net461" />
@@ -20,17 +23,28 @@
  <package id="Microsoft.AspNet.Web.Optimization.zh-Hans" version="1.1.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages.zh-Hans" version="3.2.3" targetFramework="net461" />
  <package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net461" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.8" targetFramework="net461" />
  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net461" />
  <package id="Microsoft.Net.Compilers" version="2.4.0" targetFramework="net461" developmentDependency="true" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
  <package id="Modernizr" version="2.6.2" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="13.0.2" targetFramework="net461" />
  <package id="NPOI" version="2.3.0" targetFramework="net461" />
  <package id="Portable.BouncyCastle" version="1.8.6" targetFramework="net461" />
  <package id="Respond" version="1.2.0" targetFramework="net461" />
  <package id="SharpZipLib" version="0.86.0" targetFramework="net461" />
  <package id="SKIT.FlurlHttpClient.Common" version="2.6.0" targetFramework="net461" />
  <package id="SKIT.FlurlHttpClient.Wechat.TenpayV3" version="2.18.0" targetFramework="net461" />
  <package id="SqlSugar" version="5.1.4.66" targetFramework="net461" />
  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net461" />
  <package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net461" />
  <package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net461" />
  <package id="System.Text.Json" version="6.0.7" targetFramework="net461" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
  <package id="WebGrease" version="1.5.2" targetFramework="net461" />
</packages>
RiskControl.NewService/Entity/RiskControlRR/PayErrLog.cs
New file
@@ -0,0 +1,34 @@
using System;
using SqlSugar;
namespace RiskControl.NewService.Entity.RiskControlRR
{
    /// <summary>
    /// 支付错误日志
    /// </summary>
    public class PayErrLog
    {
        /// <summary>
        ///
        ///</summary>
        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }
        /// <summary>
        /// 订单编号
        ///</summary>
        [SugarColumn(ColumnName = "OrderNo")]
        public string OrderNo { get; set; }
        /// <summary>
        /// 订单编号
        ///</summary>
        [SugarColumn(ColumnName = "Content")]
        public string Content { get; set; }
        /// <summary>
        /// 创建时间
        /// 默认值: (getdate())
        ///</summary>
        [SugarColumn(ColumnName = "CreateTime")]
        public DateTime CreateTime { get; set; } = DateTime.Now;
    }
}
RiskControl.NewService/Entity/RiskControlRR/PayOrder.cs
@@ -36,7 +36,7 @@
        /// 支付金额 
        ///</summary>
        [SugarColumn(ColumnName = "PayAmount")]
        public decimal PayAmount { get; set; }
        public double PayAmount { get; set; }
        /// <summary>
        /// 支付方式 
        ///</summary>
@@ -60,6 +60,13 @@
        ///</summary>
        [SugarColumn(ColumnName = "PayTime")]
        public DateTime? PayTime { get; set; }
        /// <summary>
        /// 支付查询id;
        /// 微信支付: transaction_id
        ///</summary>
        [SugarColumn(ColumnName = "PaymentSysId")]
        public string PaymentSysId { get; set; } = "";
        /// <summary>
        /// 支付账户 
        ///</summary>
@@ -94,14 +101,19 @@
    public enum EnumPaymentStatus
    {
        /// <summary>
        /// 支付失败
        /// </summary>
        [Description("支付失败")]
        Error = -1,
        /// <summary>
        /// 支付成功
        /// </summary>
        [Description("支付成功")]
        Success =1,
        /// <summary>
        /// 支付中
        /// 等待支付
        /// </summary>
        [Description("支付中")]
        [Description("等待支付")]
        Paying = 2,
        /// <summary>
        /// 取消支付
RiskControl.NewService/Pay/TenPayService.cs
New file
@@ -0,0 +1,108 @@
using System;
using System.Configuration;
using System.Text;
using System.Threading.Tasks;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Parameters;
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
namespace RiskControl.NewService.Pay
{
    /// <summary>
    /// 微信支付
    /// </summary>
    public class TenPayService
    {
        private readonly WechatTenpayClient _client;
        public TenPayService()
        {
            var manager = new InMemoryCertificateManager();
            var options = new WechatTenpayClientOptions()
            {
                // 微信商户号
                MerchantId = "1639568130",
                // 微信商户 v3 API 密钥
                MerchantV3Secret = "edsz2647sssse32arr6i8mtdte3FX23o",
                // 微信商户证书序列号
                MerchantCertificateSerialNumber = "3B33617BA9676F44DF4CA618A2D2244F23206539",
                // -----BEGIN PRIVATE KEY-----微信商户证书私钥,即 `apiclient_key.pem` 文件内容-----END PRIVATE KEY-----
                MerchantCertificatePrivateKey = @"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD33bbIMbA6rSJv
Uv6mieciQ8jOMqueIytSSiVVsUdRiv1qyFF+0TAJ85zwb2x/vvouIYZcpEp36EiK
0wGlE0C4xlmvqmQ2/2CmoIRcuXEMkrLTmXVTLBWDhct0C9SsG5CXjGyK10fLWSg4
lEbsgoZOoNEXn7zKsX8t+ZLaAyXTPYDt9np2neXo8/fEzR87DfivINSdI2XQy7Xn
63CcD0/SDfRoeJbXuM04kYWZyL8+m40lNjqjw9NUr34jYSWqgE9ZciIFZ4aNcdhQ
/xLlBUlGOylFoqDJY/3AvTOM1DhWUunWq5r3YFl/I/BJRcdG8uLlcVIAnbEEjR1C
XCHXETfnAgMBAAECggEAenLVcWDapqIReN2PX8aQoKTL9tGhZqYJKMXoW8UQboAz
YSVE3VmKWeA3j6/78b/u6As3zVx8TXA7JhnHnj08pAuZEuciSukuXiK+QPB7oLJ4
FYCiLUyB9E+Miu+tSLj1XWjJ1m0z0olhDVJzFzQEFaPsp7cKFThKk/PPUFRtw0SO
INZbaTg51C7nCMlaMI9RQpUlJwTrg9YMxl9mG1+QR9H75APQc228pja8izjyN4r0
m+ucLtlko5T7n7mYvXemuU0JdYjfLkD/2ikt3S8QIy2cgs/A+qgpXb0NkZo5F/pv
qDQDj5yH8GYxeDJi1UDRH7ayDlrYnamtgNkan5NqQQKBgQD9bEJw+R9PT6mDqNbh
eK0R2cRVZXuEcNL9qeh8mVrgbz/xUkca2lzX+wW10p2Wx7KP4b1xF1zoSzumSuBG
fqhLOYeUFQ1p86gEkkmk5x2QywCB5OwiLe+OKlzIWSuLiWqCeACfOlXRuVwUg+l+
2tSbpPd6O17oT2zZxfDj6cVdMwKBgQD6Yv0AcqYZgV++4ZKm0Eh4X0YK+1sREII8
KSrE/SgaT35XrUCxoytgTYX4X5LrWsiBeqFFUoqRPHzlJ9ltcWxR7ETc/U0bV68F
cJQX2V33+TDqLG3YigzaUXB1tonpMXVHh+HcRWwDNfMcfsx59IjAkvbS/H4s5vRG
cGlA5QZyfQKBgEWJskWLplK9+ja9WpEt6teOGLiSCy2RQ+QE/l1KO0yAWlxehlJQ
/s7o+20j6MgZ7d5bQ/9HOOAo3KpJu3a8hHN3ysMQb8jV6hGvDnQoUs2LVo1OAply
X1x0NVdoWHGGeGpqgUkv2aKdqS2b8LM1WseGob2xkt5OBQFQtkPjvptPAoGAJTJf
c5mUo2Vc2/aW2sFGgttkhG0i8j4JmvZirDEPrBjzJANRARLEduINbQCFywEJmHKn
Uq0YeMsLot9wpZmcBe+bq1jWA6HbFmvLFF/uXdBfO+qtxuV7U1OV6Wbcxg/a5G2D
WD3X9gIlw63yoot5ZWJv2Jg6BmGpGG3KtSFQ++ECgYEAmldmHIvP18sauwnXBgT+
JTy9AfcNOy3Hh56FnQ3FRhbZ6ysGPEI9y6TDJLod1+oiTIum89c1gNVARxDEFF0D
IWh7G12/AVYb3nU+k8Ixd9OwsdFZGnOhJufwD9baD4LfltWznPcwB8AmZYwe+wys
OLpOkRhY7n680Yq4lp/M3ps=",
                PlatformCertificateManager = manager // 平台证书管理器的具体用法请参阅下文的基础用法与加密、验签有关的章节
            };
            _client = new WechatTenpayClient(options);
        }
        /// <summary>
        /// 生成支付二维码
        /// </summary>
        /// <param name="payAmount">支付金额(元)</param>
        /// <param name="orderNo">订单号</param>
        /// <returns></returns>
        public async Task<string> GetPayQrCodeUrl(double payAmount,string orderNo)
        {
            var req = new CreatePayTransactionNativeRequest()
            {
                Amount = new CreatePayTransactionNativeRequest.Types.Amount() { Total = (int)(payAmount*100) },
                AppId = "wxb00487d99ff5e2de",
                MerchantId = "1639568130",
                Description = "仁风控接口充值",
                OutTradeNumber = orderNo,
                // todo 回调地址,改为服务器的域名,必须为https
                NotifyUrl = $"https://f84b17556.goho.co/pay/TenPayNotify"
            };
            var res = await _client.ExecuteCreatePayTransactionNativeAsync(req);
            if (!res.IsSuccessful())
                throw new Exception(res.ErrorMessage);
            return res.QrcodeUrl;
        }
        public string AesGcmDecrypt(string associatedData, string nonce, string ciphertext)
        {
            GcmBlockCipher gcmBlockCipher = new GcmBlockCipher(new AesEngine());
            AeadParameters aeadParameters = new AeadParameters(
                new KeyParameter(Encoding.UTF8.GetBytes("edsz2647sssse32arr6i8mtdte3FX23o")),
                128,
                Encoding.UTF8.GetBytes(nonce),
                Encoding.UTF8.GetBytes(associatedData));
            gcmBlockCipher.Init(false, aeadParameters);
            byte[] data = Convert.FromBase64String(ciphertext);
            byte[] plaintext = new byte[gcmBlockCipher.GetOutputSize(data.Length)];
            int length = gcmBlockCipher.ProcessBytes(data, 0, data.Length, plaintext, 0);
            gcmBlockCipher.DoFinal(plaintext, length);
            return Encoding.UTF8.GetString(plaintext);
        }
    }
}
RiskControl.NewService/RiskControl.NewService.csproj
@@ -61,17 +61,41 @@
    <Reference Include="Aliyun.Credentials, Version=1.3.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Aliyun.Credentials.1.3.1\lib\net45\Aliyun.Credentials.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
    <Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
      <HintPath>..\packages\BouncyCastle.Cryptography.2.1.1\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
    </Reference>
    <Reference Include="Flurl, Version=3.0.6.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Flurl.3.0.6\lib\net461\Flurl.dll</HintPath>
    </Reference>
    <Reference Include="Flurl.Http, Version=3.2.4.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Flurl.Http.3.2.4\lib\net461\Flurl.Http.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="SKIT.FlurlHttpClient.Common, Version=2.6.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SKIT.FlurlHttpClient.Common.2.6.0\lib\net461\SKIT.FlurlHttpClient.Common.dll</HintPath>
    </Reference>
    <Reference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3, Version=2.18.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SKIT.FlurlHttpClient.Wechat.TenpayV3.2.18.0\lib\net461\SKIT.FlurlHttpClient.Wechat.TenpayV3.dll</HintPath>
    </Reference>
    <Reference Include="SqlSugar, Version=5.1.4.66, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\SqlSugar.5.1.4.66\lib\SqlSugar.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
    </Reference>
    <Reference Include="System.ComponentModel.DataAnnotations" />
    <Reference Include="System.Configuration" />
    <Reference Include="System.Core" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath>
    </Reference>
@@ -79,7 +103,26 @@
      <HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath>
    </Reference>
    <Reference Include="System.Net.Http.WebRequest" />
    <Reference Include="System.Numerics" />
    <Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
    </Reference>
    <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
    </Reference>
    <Reference Include="System.Security" />
    <Reference Include="System.Text.Encodings.Web, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath>
    </Reference>
    <Reference Include="System.Text.Json, Version=6.0.0.7, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Text.Json.6.0.7\lib\net461\System.Text.Json.dll</HintPath>
    </Reference>
    <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
    </Reference>
    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
    </Reference>
    <Reference Include="System.Web" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
@@ -111,6 +154,7 @@
    <Compile Include="Entity\CreditRatingReportSelf.cs" />
    <Compile Include="Entity\CreditRatingReportStar.cs" />
    <Compile Include="Entity\QccDbEntity\SysCompanyOriginalName.cs" />
    <Compile Include="Entity\RiskControlRR\PayErrLog.cs" />
    <Compile Include="Entity\RiskControlRR\PayOrder.cs" />
    <Compile Include="Entity\RiskControlRR\PayRechargeAmount.cs" />
    <Compile Include="Entity\RiskControlStockDL\BankFjcfTableDetail.cs" />
@@ -219,6 +263,7 @@
    <Compile Include="Extension\PageExtension.cs" />
    <Compile Include="Extension\Params\ReportSearchParam.cs" />
    <Compile Include="Extension\QccMsgData.cs" />
    <Compile Include="Pay\TenPayService.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="QiChaCha\HttpMethod.cs" />
    <Compile Include="QiChaCha\QccEntity2\BankruptcyCheckDetail.cs" />
RiskControl.NewService/Service/PayService.cs
@@ -29,6 +29,16 @@
                .ToPageAsync(1, 20);
            return res;
        }
        /// <summary>
        /// 记录支付异常信息
        /// </summary>
        /// <param name="log"></param>
        /// <returns></returns>
        public async Task LogPayError(PayErrLog log)
        {
            await RiskControlRRDb.Insertable<PayErrLog>(log).ExecuteCommandAsync();
        }
    }
    /// <summary>
    /// 支付金额
RiskControl.NewService/app.config
@@ -4,11 +4,11 @@
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
RiskControl.NewService/packages.config
@@ -10,10 +10,24 @@
  <package id="AlibabaCloud.TeaUtil" version="0.1.13" targetFramework="net461" />
  <package id="AlibabaCloud.TeaXML" version="0.0.3" targetFramework="net461" />
  <package id="Aliyun.Credentials" version="1.3.1" targetFramework="net461" />
  <package id="BouncyCastle.Cryptography" version="2.1.1" targetFramework="net461" />
  <package id="Flurl" version="3.0.6" targetFramework="net461" />
  <package id="Flurl.Http" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net461" />
  <package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net461" />
  <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net461" />
  <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="13.0.2" targetFramework="net461" />
  <package id="SKIT.FlurlHttpClient.Common" version="2.6.0" targetFramework="net461" />
  <package id="SKIT.FlurlHttpClient.Wechat.TenpayV3" version="2.18.0" targetFramework="net461" />
  <package id="SqlSugar" version="5.1.4.66" targetFramework="net461" />
  <package id="System.Buffers" version="4.5.1" targetFramework="net461" />
  <package id="System.Memory" version="4.5.4" targetFramework="net461" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net461" />
  <package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net461" />
  <package id="System.Text.Json" version="6.0.7" targetFramework="net461" />
  <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
  <package id="Tea" version="1.0.11" targetFramework="net461" />
</packages>