leo
2023-04-24 3af25b44fff2fc4dc1a5181f72237d63b75f60d4
Merge branch 'master' of http://47.92.245.94:8000/r/RiskControl_RR_Fast
3个文件已修改
3个文件已添加
197 ■■■■■ 已修改文件
GasolineBlend/Controllers/PayController.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/GasolineBlend.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Pay/AliPayService.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Pay/Alipay/AlipayConfig.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/Pay/Alipay/AopSdk.dll 补丁 | 查看 | 原始文档 | blame | 历史
RiskControl.NewService/RiskControl.NewService.csproj 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
GasolineBlend/Controllers/PayController.cs
@@ -10,6 +10,7 @@
using RiskControl.NewService.Entity.RiskControlRR;
using RiskControl.NewService.Extension;
using RiskControl.NewService.Pay;
using RiskControl.NewService.Pay.Alipay;
using RiskControl.NewService.Service;
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Events;
@@ -27,6 +28,7 @@
        private PayOrderService _orderService = new PayOrderService();
        private TenPayService _tenPay = new TenPayService();
        private AliPayService _aliPay = new AliPayService();
        #region 充值金额
@@ -129,9 +131,28 @@
                    var codeUrl = await _tenPay.GetPayQrCodeUrl(order.PayAmount, order.OrderNo);
                    return SuccessNoShow(data: codeUrl);
                    break;
                case EnumPayment.AliPay:
                    var html = _aliPay.BuildAliPay(order.PayAmount,order.OrderNo);
                    return SuccessNoShow(data: html);
                    break;
                default:
                    throw new NotSupportedException();
            }
        }
        [HttpGet]
        public async Task TestAlipay()
        {
            var order = new PayOrder();
            order.OrderType = "alipayTest";
            order.PayAmount = 0.01;
            order.Payment = EnumPayment.AliPay;
            order.OrderNo = Guid.NewGuid().ToString("N");
            //order.CreateUserId = OperatorProvider.Instance.Current.UserId;
            order.PaymentStatus = EnumPaymentStatus.Paying;
            order = await _orderService.AddAsync(order);
            var html = _aliPay.BuildAliPay(order.PayAmount,order.OrderNo);
            HttpContext.Response.Write(html);
        }
        /// <summary>
@@ -179,6 +200,35 @@
            var issuccess = await _orderService.UpdateAsync(order);
        }
        /// <summary>
        /// 支付宝支付消息回调
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [LoginChecked(false)]
        public async Task AliPayNotify()
        {
            var data = HttpContext.Request.Form;
            var orderNo = data["out_trade_no"];
            var order = await _orderService.GetModelAsync(a => a.OrderNo == orderNo);
            if (order == null)
            {
                LogHelper.Error($"没找到订单,OrderNO:[{orderNo}];" +
                                $"回调消息:{data}");
                return;
            }
            order.PaymentSysId = data["trade_no"];
            // 支付成功
            if (DateTime.TryParse(data["gmt_payment"],out DateTime pt))
                order.PayTime = pt;
            order.PayTime = DateTime.Now;
            order.PaymentStatus = EnumPaymentStatus.Success;
            var issuccess = await _orderService.UpdateAsync(order);
        }
    }
}
GasolineBlend/GasolineBlend.csproj
@@ -49,6 +49,9 @@
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="AopSdk">
      <HintPath>..\RiskControl.NewService\Pay\Alipay\AopSdk.dll</HintPath>
    </Reference>
    <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>
RiskControl.NewService/Pay/AliPayService.cs
New file
@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
using Flurl.Http;
using Newtonsoft.Json;
using RiskControl.NewService.Pay.Alipay;
namespace RiskControl.NewService.Pay
{
    public class AliPayService
    {
        public string BuildAliPay( double payAmount, string orderNo)
        {
            var subject = "仁风控接口充值";
            IAopClient client = new DefaultAopClient(AliPayConfig.Url
                , AliPayConfig.AppId
                , AliPayConfig.RsaPrivateKey
                , "json", "1.0", "RSA2"
                , AliPayConfig.RsaAliPublicKey, "UTF-8", false);
            AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
            //异步接收地址,仅支持http/https,公网可访问
            request.SetNotifyUrl(AliPayConfig.NotifyUrl);
            //同步跳转地址,仅支持http/https
            request.SetReturnUrl(AliPayConfig.ReturnUrl);
            /******必传参数******/
            Dictionary<string, object> bizContent = new Dictionary<string, object>();
            //商户订单号,商家自定义,保持唯一性
            bizContent.Add("out_trade_no", orderNo);
            //支付金额,最小值0.01元
            bizContent.Add("total_amount", payAmount);
            //订单标题,不可使用特殊符号
            bizContent.Add("subject", subject);
            //电脑网站支付场景固定传值FAST_INSTANT_TRADE_PAY
            bizContent.Add("product_code", "FAST_INSTANT_TRADE_PAY");
            /******可选参数******/
            //bizContent.Add("time_expire", "2022-08-01 22:00:00");
            ////商品明细信息,按需传入
            //List<object> goodsDetails = new List<object>();
            //Dictionary<string, object> goods1 = new Dictionary<string, object>();
            //goods1.Add("goods_id", "goodsNo1");
            //goods1.Add("goods_name", "子商品1");
            //goods1.Add("quantity", 1);
            //goods1.Add("price", 0.01);
            //goodsDetails.Add(goods1);
            //bizContent.Add("goods_detail", goodsDetails);
            ////扩展信息,按需传入
            //Dictionary<string, object> extendParams = new Dictionary<string, object>();
            //extendParams.Add("sys_service_provider_id", "2088501624560335");
            //bizContent.Add("extend_params", extendParams);
            string Contentjson = JsonConvert.SerializeObject(bizContent);
            request.BizContent = Contentjson;
            AlipayTradePagePayResponse response = client.pageExecute(request);
            return response.Body;
        }
    }
}
RiskControl.NewService/Pay/Alipay/AlipayConfig.cs
New file
@@ -0,0 +1,61 @@
using System.Configuration;
namespace RiskControl.NewService.Pay.Alipay
{
    public static class AliPayConfig
    {
        #region Alipay config
        ///// <summary>
        ///// 服务地址
        ///// </summary>
        //public static string Url = "https://openapi.alipay.com/gateway.do";
        ///// <summary>
        ///// appid
        ///// </summary>
        //public static string AppId = "2021003191602070";
        ///// <summary>
        ///// 异步接收地址,仅支持http/https,公网可访问
        ///// </summary>
        //public static string NotifyUrl = "https://f84b17556.goho.co/pay/AliPayNotify";
        ///// <summary>
        ///// 同步跳转地址,仅支持http/https
        ///// </summary>
        //public static string ReturnUrl = "";
        ///// <summary>
        ///// 私钥
        ///// </summary>
        //public static string RsaPrivateKey = @"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCG/uF/cg2Kvnqj+uW1e0KkONDDcLnwbNc6HrjISm3bPShF4OBcFRvOTa4fZTy8TKl1KIauPBS1qoss2Vk3/hYq3mw6eotL4giQNA3yxfZLXCwN5iumKeKYZVEoliXjt3FZJ5nw653LNjfJD5xR5czZBI2I0K1xUNhOWpqTJ4hcS5RvpoNcky9rsum/FCPQb7dnoNEakLh0o7CCt1rTcH1sKivVL+kc5t611hIRp/E7DF0hfzY5CYsANSB3ZYuIsW5iE2dxXmCVGEM9yhhpsNAnzm+4wJB7i36+uppZ/Uu1a2xQXZzvUW1vV2ZxMHgu21sZ0cseq1NaaU5VVlgYYjATAgMBAAECggEAAeDqImvj5FpiOoXzTGM6ui5QOWgILmBVXmmvCJqAjNx9AvvuI1nn2ScblTRDdBtdAFRgC2yqnRyScz1TEIRoqpAN0YKDDbtHgzo2N3qpwsK1mjvpv5Y1oQlH59ivDkwvN55ldgTRXVKT1ChzdHBOOXbmwVCmGT2WxQBdxk52h1JAwQ09DpYH87RccCn96khy9HZSXm889WFxyrP09CLxPckARmwvUS9EVEu+y8cqxx3bX2yPjvRIqU/k30GTxGX8VaByYVCfW0QwLXW6pxIYRnM7YPO5VpKjzlKCY1LapLjm4Qn9Ic8uG099aH9zqBojYolazfLjVTeuSBSqSohEgQKBgQDBHWT1e7kPhDXTgCyZE+xSAqiGvQCpvV87cbhHX6M2We058gltmD0amSKH4friYCWdUwPzqNyBdilMeE6JrE8b/MLjZc8wzgRfIOlRHgjCmrMNu9IT4hPO/+DT4TXnufsWvKD9sTSmwSQ8CmZfwWwT6qkJ7MgDiZecV0iXyvnlXQKBgQCy9ID2WT+Wb0KpL6A4sb6Orrd+7NS4FggO2XztQC6TN8i3qcIQd5ZA3c2eh9OjjCBvukokYi9kCePqsO280Kn5zYQpud/XG2qA19oClG3Zv8WJPA+HLs6ZBPAIM/Bh2wFJzeEQs+tla4GPdST/2dfX1j/1Ch1Whd4v0FB0LUAkLwKBgFAfWP78+Tg123tIB7jvajJQhgl5K2hBeNyZ/yIlzPrE7scG4+CDtH5voMMOAGCiEZknk1Ep82sHUnU2yScXxa7P/TAJ0p/mKiwp5IPSWUIcm0OMdMnpF9zfjzF5lDrzj/jMBGOdfUHeiqEak4URJD1TNBU5F3dYQ/4KvMS1417FAoGATFTCVVHIL7CRbHzmCIi4UT/xAPCf401ybnMSOFhyBVV8Besg3clEi7KQLBifi1kP1NhPG6nNsQwO7WI+ZZVTizvALdQcyDHngcGQOh15pbGI3nqB3RV4Bgj3IWiWFgdGS2bHo0o7E+2BO+GpwH/48xVt/mUsEmXTWe2vA37xpv0CgYEAvzvAFiPe1aWfiHqxnxuYX0hq3c3T4OmYCSwvxyYrZBqts7O17wGigltNiwqcAo4mQ28oY/OIug//rxlEk2awO3xtTOAPEMHlbqknuUHfy1ZA1FTJMfMaI5jUBrgWlM5wLRP257AF/JHppAzpeWPj+unshrqO1KRgYSsMMSWPI0M=";
        ///// <summary>
        ///// 支付宝公钥
        ///// </summary>
        //public static string RsaAliPublicKey = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs31iMOQDsat5um5Cu++hoBjd2bkC+r6P8BiiEAC/LqLoMztORZfgQLonYuEIq6TruPk7BQHRqwXN+qsi/pEgO6StTHg6zBKG74zgiYx6nW9YV5/EW1vsRAV7ZvBAJrc4RNJlIVLO+PxcrcOJVLcU1N6xBEyJ1hgvndPVf2MlVnSnbYlHPorqrS6SdpBUwxjRekGekIAFLZEvD0HN2KBBxaIAGpsvM2R1l7mJP9Ign+StlMKRmoad256YmfaYzX4scY3NtGiZfIV3TzxzbESCm1m+CexSrG+443bw/St+m1fSSzBb0fpTpeJVCoQdUlBy3UHDbewc5ilZ+m9gXH7miQIDAQAB";
        #endregion
        /// <summary>
        /// 服务地址
        /// </summary>
        public static string Url = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
        /// <summary>
        /// appid
        /// </summary>
        public static string AppId = "2021000122663405";
        /// <summary>
        /// 异步接收地址,仅支持http/https,公网可访问
        /// </summary>
        public static string NotifyUrl = "https://f84b17556.goho.co/pay/AliPayNotify";
        /// <summary>
        /// 同步跳转地址,仅支持http/https
        /// </summary>
        public static string ReturnUrl = "";
        /// <summary>
        /// 私钥
        /// </summary>
        public static string RsaPrivateKey = @"MIIEpQIBAAKCAQEAv/+6YKOhqNv5AAejDruOfeDQ18irlpJQnBAhWpSL/xLMfX8x5tz1MtS8tCYRJxeluyP3y9jpMia7/waolIPmtJLMgSi8xYD2lB+rEE+9hb6vd37n6JgTXsniCweohHxZHNP2mSlUFEJ7C1LUIDdtQaCfFM4vsHXW6AXtmz7qqZyagvo0wW38brvt9iv5kxrc7I8v6qhpR1gWe0hEhANPOinqcgqnJ1P4btSM0tI23bvfAxcCkbEx8pTARe11s3CEip/iY3sJwub5168U4uoxHkZTwEEIzQnJimY6gaavPRC6aIJR/wRW3NNAmsTRsUhiSLv4SP9R9TAhuR1GrKJknwIDAQABAoIBADS8eCPtLg0khotEjbwRNj1LD/IFM2RDQhLrt02a+a0RK8vYsQs5a7wPhNlyj0mOjD4PzhNWvA7DZuXQnWNVq3uzyqo7V0ZketYKsMDlNihTTPzkhax0gPWLPCRNcTMauJtbeSNun6KE9CkTEiLbNo5NIQTk8WJlq6bFYhM/P9NgLrswV1YYLBF++QJ+Hai1FWvw+eK+s4PKEoDoKFPfbdBLUEt+m8TtzJwUJVAAJtuO6m/J/qxIVFNQdvyeGH3z6Cd7/As/PreintwuZ0xdy2XZIDSpsa4TnHYRF6huPsn+UKcQCuZSULyLgDVHgWLBn96/cQXU9ldHJDCB647OpIkCgYEA+l3mVa9W+Pamc5DM5OW4TjtBcq9/HRYlEIKB8WOvJnwLRw0cILFXd2msrM7xLojpAStkP42wkJP/7Z8w4klRCB7s0hCzaOQ4wBjPuZkXtBTtGNtjqh6JxV9zRjF7Qgv2khSPjNxCfU5yfLvYCnrII5cQQnrzDYWNdpKFpo/Vd3MCgYEAxFGh4Q4zQUe3Wn2d/oXWvqH3oYDWhnNOcCY3jWtkluCa1wGuhmkbnOG0iJ9TsBAjLNGBff69kVGLE69L+A8V/7F0IFyhkoWp8Bh6XQbS4DGEQ2pnyDyC2ljct0gUOm6fY5GsdbfWYn8O4bI+yKGd2/arL+9E9zl5LZD3j/JVGyUCgYEAkDmxa2DDcE3d2yrp7V4sCtz1udRBHIdaOKWFp4GuLzQ75uU1c9vVMBPvBel8ZDs4RpUxfa7orJClWMRgi6qChHQUJnq6b00xJ+/jEd6QGgwH/U68ng5TfSCcLi5o+8Yad1Ji01k68CZVq2cmb/sE+gOWuUVMaFisAkcruKSY6uMCgYEAg99uBRab2XMKOE//bHSNHvr/s84uzJvyCaWyVV3ZcPwpJtprWMCMGuMGeWvFNJRyfG2zNWaEAnSrHqr3Ngc0ONED96Uhp6H/2FcpAwpNZun8NajpU/lJ0NA2Wyug4utiR+kX1u+JpBpDbdplEDJ4LsTQk19/jS5fNvuVQG2BO70CgYEAvGHG4NFchIM2H84HK9RWYhkPMmkrd4l63bO8aAT4jeV5bH6Ta5FpMQT7RdiTWnGPPI9K0vfpdU1/ymew+Z01xFPae2Ldz9ZeQ7GwgI3U7kZ9DzhEAo6H7cjCSp+YXN2nJHMzrzamtaqyvQUFSUqCzspRUwp1vUjMnRc/ov0RsWc=";
        /// <summary>
        /// 支付宝公钥
        /// </summary>
        public static string RsaAliPublicKey = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoAC3ITPVFHSd2VGonWkzz2yT1ugoCCf+mU6H0PYYa5VvwPkaBHJg3eVsxSNCp9WY2488tUBwF+UqUaKGkODYA0G1OnRgJVr4HATAo6IHQtesffjcIpG1rNQ1mABwL8gOxd41UziqUkJJ0olE1NsUhs3b7EYfj1lf8V57NlrKIMU7mt+ROBF0x7z/5EDWdtrPTese2Esh8jk5lKcH+eYEK2LMdGXfNRA49rc4YK/uFMzdYFoYMuEw/uY0AvLNntXtwXhLmAF011pzu4rvKNN6oV8+BvCpS8lUbsirKsRi5PCSPpUqkb54nerH3xTrOIVmbIGrPJnKHUhaNKQ+eqyJqwIDAQAB";
    }
}
RiskControl.NewService/Pay/Alipay/AopSdk.dll
Binary files differ
RiskControl.NewService/RiskControl.NewService.csproj
@@ -61,6 +61,10 @@
    <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="AopSdk, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>Pay\Alipay\AopSdk.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>
@@ -265,6 +269,8 @@
    <Compile Include="Extension\PageExtension.cs" />
    <Compile Include="Extension\Params\ReportSearchParam.cs" />
    <Compile Include="Extension\QccMsgData.cs" />
    <Compile Include="Pay\AliPayService.cs" />
    <Compile Include="Pay\Alipay\AlipayConfig.cs" />
    <Compile Include="Pay\TenPayService.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="QiChaCha\HttpMethod.cs" />
@@ -549,7 +555,9 @@
      <Name>GasolineBlend.Entity</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup />
  <ItemGroup>
    <Content Include="Pay\Alipay\AopSdk.dll" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">