sunpengfei
2 天以前 67d5dbb966df4af4304b4168378c68ce83ad01b1
FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
@@ -5,11 +5,14 @@
using Aop.Api.Request;
using Aop.Api.Response;
using Aop.Api.Util;
using Furion;
using Furion.FriendlyException;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -23,11 +26,15 @@
    {
        private readonly IAopClient alipayClient;
        private readonly ILogger<AlipayUtils> logger;
        private readonly IOptions<AlipayOptions> options;
        public AlipayUtils(
            ILogger<AlipayUtils> logger,
            IOptions<AlipayOptions> options)
        {
            var appCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.AppCertPath);
            var alipayPublicCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.AlipayPublicCertPath);
            var rootCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.RootCertPath);
            alipayClient = new DefaultAopClient(new AlipayConfig
            {
                ServerUrl = options.Value.ServerUrl,
@@ -36,44 +43,158 @@
                Format = options.Value.Format,
                Charset = options.Value.Charset,
                SignType = options.Value.SignType,
                AppCertPath = options.Value.AppCertPath,
                AlipayPublicCertPath = options.Value.AlipayPublicCertPath,
                RootCertContent = options.Value.RootCertContent,
                AppCertPath = appCertPath,
                AlipayPublicCertPath = alipayPublicCertPath,
                RootCertPath = rootCertPath,
                AlipayPublicKey = options.Value.AlipayPublicKey,
                EncryptKey = options.Value.EncryptKey,
            });
            this.logger = logger;
            this.options = options;
        }
        public void UserAgreementPageSign(AlipayUserAgreementPageSignModel model)
        /// <summary>
        /// 支付宝个人协议页面签约接口
        /// </summary>
        /// <param name="model"></param>
        /// <param name="notifyUrl"></param>
        public AlipayUserAgreementPageSignResponse UserAgreementPageSign(AlipayUserAgreementPageSignModel model, string notifyUrl = null)
        {
            // 初始化SDK
            // 构造请求参数以调用接口
            logger.LogInformation($"正在执行支付宝个人协议页面签约接口:{model.ToJson()}");
            AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
            model.PersonalProductCode = "FUND_SAFT_SIGN_WITHHOLDING_P";
            model.SignScene = "INDUSTRY|SATF_ACC";
            model.ThirdPartyType = "PARTNER";
            model.AccessParams = new AccessParams
            {
                Channel = ""
            };
            // 设置签约有效时间限制
            model.EffectTime = 300;
            request.SetBizModel(model);
            //request.SetNotifyUrl();
            if (notifyUrl.IsNotNull())
            {
                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
                request.SetNotifyUrl(notifyUrl);
            }
            AlipayUserAgreementPageSignResponse response = alipayClient.pageExecute(request, null, "GET");
            string pageRedirectionData = response.Body;
            Console.WriteLine(pageRedirectionData);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
            if (!response.IsError)
        /// <summary>
        /// 支付宝个人代扣协议查询接口
        /// </summary>
        /// <param name="model"></param>
        public AlipayUserAgreementQueryResponse UserAgreementQuery(AlipayUserAgreementQueryModel model)
        {
            logger.LogInformation($"正在执行支付宝个人代扣协议查询接口:{model.ToJson()}");
            AlipayUserAgreementQueryRequest request = new AlipayUserAgreementQueryRequest();
            request.SetBizModel(model);
            AlipayUserAgreementQueryResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 支付宝个人代扣协议解约接口
        /// </summary>
        /// <param name="model"></param>
        public AlipayUserAgreementUnsignResponse UserAgreementUnsign(AlipayUserAgreementUnsignModel model)
        {
            logger.LogInformation($"正在执行支付宝个人代扣协议解约接口:{model.ToJson()}");
            AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest();
            request.SetBizModel(model);
            AlipayUserAgreementUnsignResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 资金记账本开通
        /// </summary>
        /// <param name="model"></param>
        public AlipayFundAccountbookCreateResponse FundAccountbookCreate(AlipayFundAccountbookCreateModel model)
        {
            logger.LogInformation($"正在执行资金记账本开通接口:{model.ToJson()}");
            AlipayFundAccountbookCreateRequest request = new AlipayFundAccountbookCreateRequest();
            request.SetBizModel(model);
            AlipayFundAccountbookCreateResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 资金记账本的信息查询
        /// </summary>
        /// <param name="model"></param>
        public AlipayFundAccountbookQueryResponse FundAccountbookQuery(AlipayFundAccountbookQueryModel model)
        {
            logger.LogInformation($"正在执行资金记账本的信息查询接口:{model.ToJson()}");
            AlipayFundAccountbookQueryRequest request = new AlipayFundAccountbookQueryRequest();
            request.SetBizModel(model);
            AlipayFundAccountbookQueryResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 资金转账页面支付接口
        /// </summary>
        /// <param name="model"></param>
        /// <param name="notifyUrl"></param>
        public AlipayFundTransPagePayResponse FundTransPagePay(AlipayFundTransPagePayModel model, string notifyUrl = null)
        {
            logger.LogInformation($"正在执行资金转账页面支付接口:{model.ToJson()}");
            AlipayFundTransPagePayRequest request = new AlipayFundTransPagePayRequest();
            request.SetBizModel(model);
            if (notifyUrl.IsNotNull())
            {
                Console.WriteLine("调用成功");
                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
                request.SetNotifyUrl(notifyUrl);
            }
            else
            AlipayFundTransPagePayResponse response = alipayClient.pageExecute(request, null, "GET");
            logger.LogInformation($"结果:{response.Body}");
            return response;
        }
        /// <summary>
        /// 单笔转账接口
        /// </summary>
        /// <param name="model"></param>
        /// <param name="notifyUrl"></param>
        public AlipayFundTransUniTransferResponse FundTransUniTransfer(AlipayFundTransUniTransferModel model, string notifyUrl = null)
        {
            logger.LogInformation($"正在执行单笔转账接口:{model.ToJson()}");
            AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
            request.SetBizModel(model);
            if (notifyUrl.IsNotNull())
            {
                Console.WriteLine("调用失败");
                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
                request.SetNotifyUrl(notifyUrl);
            }
            AlipayFundTransUniTransferResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 转账业务单据查询接口
        /// </summary>
        /// <param name="model"></param>
        public AlipayFundTransCommonQueryResponse FundTransCommonQuery(AlipayFundTransCommonQueryModel model)
        {
            logger.LogInformation($"正在执行转账业务单据查询接口:{model.ToJson()}");
            AlipayFundTransCommonQueryRequest request = new AlipayFundTransCommonQueryRequest();
            request.SetBizModel(model);
            AlipayFundTransCommonQueryResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 账单与电子凭证下载
        /// </summary>
        /// <param name="model"></param>
        public AlipayDataBillBizfundagentQueryResponse FundTransCommonQuery(AlipayDataBillBizfundagentQueryModel model)
        {
            logger.LogInformation($"正在执行账单与电子凭证下载:{model.ToJson()}");
            AlipayDataBillBizfundagentQueryRequest request = new AlipayDataBillBizfundagentQueryRequest();
            request.SetBizModel(model);
            AlipayDataBillBizfundagentQueryResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
@@ -83,7 +204,7 @@
        public AlipayFundExpandindirectImageUploadResponse FundExpandindirectImageUpload(AlipayFundExpandindirectImageUploadRequest request)
        {
            logger.LogInformation("正在执行资金二级商户KYB代进件文件上传接口");
            AlipayFundExpandindirectImageUploadResponse response = alipayClient.Execute(request);
            AlipayFundExpandindirectImageUploadResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
@@ -101,9 +222,10 @@
            request.SetBizModel(model);
            if (notifyUrl.IsNotNull())
            {
                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
                request.SetNotifyUrl(notifyUrl);
            }
            AlipayFundExpandindirectCreateResponse response = alipayClient.Execute(request);
            AlipayFundExpandindirectCreateResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
@@ -118,11 +240,10 @@
            logger.LogInformation($"正在执行资金二级商户KYB代进件单查询接口:{model.ToJson()}");
            AlipayFundExpandindirectOrderQueryRequest request = new AlipayFundExpandindirectOrderQueryRequest();
            request.SetBizModel(model);
            AlipayFundExpandindirectOrderQueryResponse response = alipayClient.Execute(request);
            AlipayFundExpandindirectOrderQueryResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }
        /// <summary>
        /// 资金二级商户KYB代进件单取消接口
@@ -134,7 +255,7 @@
            logger.LogInformation($"正在执行资金二级商户KYB代进件单取消接口:{model.ToJson()}");
            AlipayFundExpandindirectOrderCancelRequest request = new AlipayFundExpandindirectOrderCancelRequest();
            request.SetBizModel(model);
            AlipayFundExpandindirectOrderCancelResponse response = alipayClient.Execute(request);
            AlipayFundExpandindirectOrderCancelResponse response = alipayClient.CertificateExecute(request);
            logger.LogInformation($"结果:{response.ToJson()}");
            return response;
        }