| | |
| | | AlipayUtils alipayUtils |
| | | ) : |
| | | IRequestHandler<OpenEnterpriseWalletCommand, OpenEnterpriseWalletCommandResult>, |
| | | IRequestHandler<CloseEnterpriseWalletCommand, Guid> |
| | | IRequestHandler<CloseEnterpriseWalletCommand, Guid>, |
| | | IRequestHandler<RechargeEnterpriseWalletCommand, Guid>, |
| | | IRequestHandler<AlipayTransferCommand, Guid> |
| | | { |
| | | private readonly IRepository<EnterpriseWallet> rep = rep; |
| | | private readonly IRepository<Enterprise> repEnterprise = repEnterprise; |
| | |
| | | { |
| | | Channel = "QRCODE" |
| | | }; |
| | | var response = alipayUtils.UserAgreementPageSign(model, $"/api/user/enterpriseWallet/getAlipayUserAgreementPageSignNotify"); |
| | | var response = alipayUtils.UserAgreementPageSign(model, $"/api/user/enterpriseWallet/alipayUserAgreementPageSignNotify"); |
| | | if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg); |
| | | var result = new OpenEnterpriseWalletCommandResult(); |
| | | result.SignUrl = response.PageRedirectionData; |
| | | result.SignUrl = response.Body; |
| | | return result; |
| | | } |
| | | |
| | |
| | | return entity.Id; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 企业钱包充值 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="NotImplementedException"></exception> |
| | | public async Task<Guid> Handle(RechargeEnterpriseWalletCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var entity = await rep.AsQueryable() |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == request.Access) |
| | | .FirstOrDefaultAsync(); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "企业钱包"); |
| | | if (entity.SignStatus != EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "未签约"); |
| | | if (entity.AccountBookStatus != EnumEnterpriseWalletAccountBookStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "未开通记账本"); |
| | | var order = new EnterpriseWalletTransaction(); |
| | | order.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; |
| | | order.WalletId = entity.Id; |
| | | order.Amount = request.Amount; |
| | | var response = alipayUtils.FundTransPagePay(new AlipayFundTransPagePayModel |
| | | { |
| | | OutBizNo = order.Code, |
| | | TransAmount = order.Amount.ToString(), |
| | | ProductCode = "FUND_ACCOUNT_BOOK", |
| | | BizScene = "SATF_DEPOSIT", |
| | | Remark = "记账本充值", |
| | | OrderTitle = "记账本充值", |
| | | TimeExpire = DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | PayeeInfo = new Participant |
| | | { |
| | | IdentityType = "ACCOUNT_BOOK_ID", |
| | | Identity = entity.AccountBookId, |
| | | ExtInfo = new |
| | | { |
| | | agreement_no = entity.AgreementNo, |
| | | }.ToJson(), |
| | | }, |
| | | }); |
| | | if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg); |
| | | order.OrderId = response.OrderId; |
| | | return order.Id; |
| | | } |
| | | |
| | | public async Task<Guid> Handle(AlipayTransferCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var entity = await rep.AsQueryable() |
| | | .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == EnumEnterpriseWalletAccess.Alipay) |
| | | .FirstOrDefaultAsync(); |
| | | if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "企业钱包"); |
| | | var response = alipayUtils.FundTransUniTransfer(new AlipayFundTransUniTransferModel |
| | | { |
| | | OutBizNo = $"Test{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}", |
| | | TransAmount = "0.01", |
| | | ProductCode = "TRANS_ACCOUNT_NO_PWD", |
| | | PayeeInfo = new Participant |
| | | { |
| | | IdentityType = "BANKCARD_ACCOUNT", |
| | | Identity = "6214180000016351382", |
| | | Name = "孙鹏飞", |
| | | BankcardExtInfo = new BankcardExtInfo |
| | | { |
| | | AccountType = "2", |
| | | InstName = "宁波银行" |
| | | } |
| | | }, |
| | | PayerInfo = new Participant |
| | | { |
| | | IdentityType = "ALIPAY_OPEN_ID", |
| | | Identity = entity.PrincipalOpenId, |
| | | Name = "孙鹏飞" |
| | | }, |
| | | BizScene = "CAE_TRANSFER", |
| | | OrderTitle = "测试代扣", |
| | | Remark = "测试代扣备注" |
| | | }); |
| | | if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg); |
| | | return entity.Id; |
| | | } |
| | | |
| | | private async Task SetCode(EnterpriseWallet entity) |
| | | { |
| | | entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}"; |