TourIAm/TIAMWebApp/Server/Controllers/PaymentAPIController.cs

70 lines
2.5 KiB
C#

using AyCode.Core.Consts;
using AyCode.Core.Loggers;
using AyCode.Core.Server.Loggers;
using AyCode.Entities;
using AyCode.Entities.Server.LogItems;
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.Database.DataLayers.Users;
using TIAM.Entities.Emails;
using TIAM.Entities.Transfers;
using TIAM.Services.Server;
using TIAM.Services.Server.Logins;
using TIAMWebApp.Server.Services;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Models.ClientSide.Payment;
using TIAMWebApp.Shared.Application.Models.PageModels;
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;
public PaymentAPIController(AdminDal adminDal, SumupService sumupService, IMessageSenderService messageSenderService, IEnumerable<IAcLogWriterBase> logWriters)
{
_adminDal = adminDal;
_sumupService = sumupService;
_messageSenderService = messageSenderService;
_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>();
var paymentRequest = new SumupPaymentRequest
{
CheckoutReference = transferToPay.OrderId.ToString(),
Amount = transferToPay.Price.ToString(),
Currency = "HUF",
PayToEmail = "adam.g@aycode.com",
Description = "Test transfer payment"
};
var result = await _sumupService.CreateCheckout(paymentRequest);
_logger.Detail($"CreatePayment result: {result}");
var checkoutUrl = result.CheckoutUrl;
return checkoutUrl;
}
}
}