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; } } }