96 lines
3.3 KiB
C#
96 lines
3.3 KiB
C#
using AyCode.Core.Loggers;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Cors;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Text.Json;
|
|
using TIAM.Database.DataLayers.Admins;
|
|
using TIAM.Entities.Emails;
|
|
using TIAM.Entities.Transfers;
|
|
using TIAMWebApp.Server.Services;
|
|
using TIAMWebApp.Shared.Application.Models;
|
|
using TIAMWebApp.Shared.Application.Models.ClientSide.Payment;
|
|
|
|
namespace TIAMWebApp.Server.Controllers
|
|
{
|
|
[Authorize]
|
|
[ApiController]
|
|
[EnableCors("_myAllowSpecificOrigins")]
|
|
[Route("api/v1/[controller]")]
|
|
public class PaymentAPIController : ControllerBase
|
|
{
|
|
|
|
|
|
private AdminDal _adminDal;
|
|
private SumupService _sumupService;
|
|
private readonly TIAM.Core.Loggers.ILogger _logger;
|
|
private readonly IMessageSenderService _messageSenderService;
|
|
private readonly ExchangeRateService _exchangeRateService;
|
|
|
|
public PaymentAPIController(AdminDal adminDal, SumupService sumupService, IMessageSenderService messageSenderService, IEnumerable<IAcLogWriterBase> logWriters, ExchangeRateService exchangeRateService)
|
|
{
|
|
|
|
|
|
_adminDal = adminDal;
|
|
_sumupService = sumupService;
|
|
_messageSenderService = messageSenderService;
|
|
_exchangeRateService = exchangeRateService;
|
|
_logger = new TIAM.Core.Loggers.Logger<PaymentAPIController>(logWriters.ToArray());
|
|
}
|
|
|
|
|
|
[AllowAnonymous]
|
|
[HttpPost]
|
|
[Route(APIUrls.CreatePaymentRouteName)]
|
|
public async Task<string> CreatePayment([FromBody] JsonElement paymentItem)
|
|
{
|
|
|
|
_logger.Detail($"CreatePayment called! {paymentItem.ToString()}");
|
|
var transferToPay = JObject.Parse(paymentItem.GetRawText()).ToObject<Transfer>();
|
|
if (transferToPay == null)
|
|
{
|
|
return("error");
|
|
}
|
|
if (transferToPay.Price == null)
|
|
{
|
|
transferToPay.Price = 1000;
|
|
}
|
|
var exchangeRate = await _exchangeRateService.GetExchangeRateAsync();
|
|
var price = transferToPay.Price * Convert.ToDouble(exchangeRate.EURtoHUF);
|
|
|
|
var paymentRequest = new SumupPaymentRequest
|
|
{
|
|
CheckoutReference = transferToPay.OrderId.ToString(),
|
|
|
|
Amount = price.ToString(),
|
|
Currency = "HUF",
|
|
PayToEmail = "6befaf69f97f4320bff2b9adf1a3894d@developer.sumup.com",
|
|
Description = "Test transfer payment"
|
|
};
|
|
var result = await _sumupService.CreateCheckout(paymentRequest);
|
|
_logger.Detail($"CreatePayment result: {result}");
|
|
var checkoutId = result.Id.ToString();
|
|
return checkoutId;
|
|
}
|
|
|
|
[AllowAnonymous]
|
|
[HttpGet]
|
|
[Route(APIUrls.GetPaymentRouteName+"/{checkoutId}")]
|
|
public async Task<ActionResult<string>> GetPaymentById(string checkoutId)
|
|
{
|
|
_logger.Detail($"GetPayment called! {checkoutId.ToString()}");
|
|
var result = await _sumupService.GetPayment(checkoutId);
|
|
if (result == null)
|
|
{
|
|
return BadRequest();
|
|
}
|
|
else
|
|
{
|
|
return Ok(result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
} |