ql_apimanager_backend/Apimanager_backend/Services/PayService.cs

49 lines
1.8 KiB
C#

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<PayService> _logger;
private ApiContext _context;
public PayService(IMapper mapper,ILogger<PayService> logger,ApiContext apiContext)
{
_mapper = mapper;
_logger = logger;
_context = apiContext;
}
public async Task<PayReturnData> CreateEpay(Order order, PaymentConfig paymentConfig,string returnUrl)
{
try
{
var param = new Dictionary<string, string>();
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<PayReturnData>(res);
}catch(Exception e)
{
_logger.LogError(e.Message);
throw new BaseException(4001,"支付请求无效");
}
}
}
}