sunpengfei
10 天以前 6a4fbf989fcdde0e4e379aba6d224737da3474eb
feat:开发
2个文件已修改
102 ■■■■ 已修改文件
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayUserAgreementPageSignNotifyCommand.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayUserAgreementPageSignNotifyCommand.cs
@@ -13,57 +13,36 @@
    [Resource([EnumResourceController.UserServerEnterpriseWallet], AllowAnonymous = true, IsFromForm = true)]
    public class AlipayUserAgreementPageSignNotifyCommand : IRequest<bool>
    {
        /// <summary>
        /// 协议产品码,商户和支付宝签约时确定,不同业务场景对应不同的签约产品码。
        /// </summary>
        public string personal_product_code { get; set; }
        /// <summary>
        /// 当前签约的协议场景。
        /// </summary>
        public string notify_id { get; set; }
        public string notify_time { get; set; }
        public string sign_type { get; set; }
        public string sign { get; set; }
        public string invalid_time { get; set; }
        public string sign_scene { get; set; }
        /// <summary>
        /// NORMAL    协议当前状态 1. TEMP:暂存,协议未生效过; 2. NORMAL:正常; 3. STOP:暂停
        /// </summary>
        public string status { get; set; }
        /// <summary>
        /// 用户签约的支付宝账号对应的支付宝唯一用户号。 以2088开头的16位纯数字组成。
        /// </summary>
        public string alipay_user_id { get; set; }
        /// <summary>
        /// 支付宝系统中用以唯一标识用户签约记录的编号。
        /// </summary>
        public string agreement_no { get; set; }
        /// <summary>
        /// 支付宝代扣协议的实际签约时间,格式为yyyy-MM-dd HH:mm:ss。
        /// </summary>
        public string sign_time { get; set; }
        /// <summary>
        /// 用户在商户网站的登录账号,如果商户接口中未传,则不会返回
        /// </summary>
        public string alipay_user_id { get; set; }
        public string status { get; set; }
        public string forex_eligible { get; set; }
        public string external_logon_id { get; set; }
        /// <summary>
        /// 支付宝分配给开发者的应用Id
        /// </summary>
        public string app_id { get; set; }
        /// <summary>
        /// 支付宝分配给商户的应用Id
        /// </summary>
        public string auth_app_id { get; set; }
        /// <summary>
        /// 代扣协议中标示用户的唯一签约号(确保在商户系统中唯一)。
        /// </summary>
        public string external_agreement_no { get; set; }
        /// <summary>
        /// 用户代扣协议的实际生效时间,格式为yyyy-MM-dd HH:mm:ss。
        /// </summary>
        public string personal_product_code { get; set; }
        public string valid_time { get; set; }
        /// <summary>
        /// 返回脱敏的支付宝账号。
        /// </summary>
        public string agreement_no { get; set; }
        public string zm_open_id { get; set; }
        public string alipay_open_id { get; set; }
        public string merchant_app_id { get; set; }
        public string alipay_logon_id { get; set; }
        /// <summary>
        /// 用户签约成功通知类型
        /// </summary>
        public string notify_type { get; set; }
        public string zm_score { get; set; }
        public string single_quota { get; set; }
        public string login_token { get; set; }
        public string device_id { get; set; }
        public string credit_auth_mode { get; set; }
        public string specified_sort_assets { get; set; }
        public string partner_id { get; set; }
        public string modify_type { get; set; }
        public string next_deduct_time { get; set; }
    }
}
FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs
@@ -1,7 +1,12 @@
using FlexJobApi.Core;
using Azure;
using FlexJobApi.Core;
using Furion;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using MediatR;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Org.BouncyCastle.Ocsp;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -14,12 +19,12 @@
    /// 支付宝通知回传
    /// </summary>
    public class GetAlipayNotifyCommandHandler(
            IHttpContextAccessor httpContextAccessor
            IRepository<EnterpriseWallet> rep
        ) :
        IRequestHandler<GetAlipayNotifyCommand, bool>,
        IRequestHandler<AlipayUserAgreementPageSignNotifyCommand, bool>
    {
        private readonly IHttpContextAccessor httpContextAccessor = httpContextAccessor;
        private readonly IRepository<EnterpriseWallet> rep = rep;
        /// <summary>
        /// 支付宝通知回传
@@ -38,10 +43,30 @@
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<bool> Handle(AlipayUserAgreementPageSignNotifyCommand request, CancellationToken cancellationToken)
        public async Task<bool> Handle(AlipayUserAgreementPageSignNotifyCommand request, CancellationToken cancellationToken)
        {
            Console.WriteLine(httpContextAccessor.HttpContext.Request.QueryString);
            return Task.FromResult(true);
            var entity = await rep.AsQueryable()
                .Where(it => it.Code == request.external_agreement_no)
                .FirstOrDefaultAsync();
            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "企业钱包");
            entity.AgreementNo = request.agreement_no;
            entity.SignTime = request.sign_time.ToDateTime();
            entity.ValidTime = request.valid_time.ToDateTime();
            entity.InvalidTime = request.invalid_time.ToDateTime();
            entity.SignStatus = request.status == "TEMP"
                ? EnumEnterpriseWalletSignStatus.Apply
                : request.status == "NORMAL"
                ? EnumEnterpriseWalletSignStatus.Normal
                : request.status == "STOP"
                ? EnumEnterpriseWalletSignStatus.Stop
                : throw Oops.Oh(EnumErrorCodeType.s510, "状态异常");
            entity.AlipayLogonId = request.alipay_logon_id;
            entity.PrincipalId = request.alipay_user_id;
            entity.PrincipalOpenId = request.alipay_open_id;
            entity.ZmOpenId = request.zm_open_id;
            entity.CreditAuthMode = request.credit_auth_mode;
            await rep.UpdateAsync(entity);
            return true;
        }
    }
}