using Apimanager_backend.Data; using Apimanager_backend.Dtos; using Apimanager_backend.Exceptions; using Apimanager_backend.Models; using Apimanager_backend.Tools; using AutoMapper; using Microsoft.EntityFrameworkCore; namespace Apimanager_backend.Services { public class PayService : IPayService { private IMapper _mapper; private ILogger _logger; private ApiContext _context; public PayService(IMapper mapper,ILogger logger,ApiContext apiContext) { _mapper = mapper; _logger = logger; _context = apiContext; } public async Task CreateEpay(Order order, PaymentConfig paymentConfig,string returnUrl) { try { var param = new Dictionary(); param["pid"] = paymentConfig.AppId; param["type"] = order.PaymentType.ToString().ToLower(); param["out_trade_no"] = order.OrderNumber; param["notify_url"] = paymentConfig.NotifyUrl ?? ""; param["return_url"] = returnUrl; param["name"] = "余额充值"; param["money"] = order.Amount.ToString(); param["clientip"] = "192.168.5.1"; param["device"] = "pc"; var res = await EpayHelper.ApiPayAsync(param, paymentConfig.SecretKey, paymentConfig.Url); order.ThirdPartyOrderId = res.trade_no; _context.Orders.Update(order); await _context.SaveChangesAsync(); return _mapper.Map(res); }catch(Exception e) { _logger.LogError(e.Message); throw new BaseException(4001,"支付请求无效"); } } } }