72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
using Marco.Pms.Model.Dtos.PaymentGetway;
|
|
using Marco.Pms.Model.Utilities;
|
|
using Marco.Pms.Services.Helpers;
|
|
using MarcoBMS.Services.Helpers;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Marco.Pms.Services.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class PaymentController : ControllerBase
|
|
{
|
|
private readonly UserHelper _userHelper;
|
|
private readonly PaymentHelper _paymentHelper;
|
|
private readonly Guid tenantId;
|
|
private readonly Guid organizaionId;
|
|
public PaymentController(UserHelper userHelper, PaymentHelper paymentHelper)
|
|
{
|
|
_userHelper = userHelper;
|
|
_paymentHelper = paymentHelper;
|
|
tenantId = userHelper.GetTenantId();
|
|
organizaionId = userHelper.GetCurrentOrganizationId();
|
|
}
|
|
|
|
[HttpPost("create-order")]
|
|
public async Task<IActionResult> CreateOrder([FromBody] CreateOrderDto model)
|
|
{
|
|
var loggedInEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
|
try
|
|
{
|
|
var response = _paymentHelper.CreateOrder(model.Amount, loggedInEmployee, tenantId);
|
|
return Ok(ApiResponse<object>.SuccessResponse(response, "Payment created successfully", 200));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, ApiResponse<object>.ErrorResponse("Error occured While creating the payment", new
|
|
{
|
|
Message = ex.Message,
|
|
StackTrace = ex.StackTrace,
|
|
Source = ex.Source,
|
|
InnerException = new
|
|
{
|
|
Message = ex.InnerException?.Message,
|
|
StackTrace = ex.InnerException?.StackTrace,
|
|
Source = ex.InnerException?.Source,
|
|
}
|
|
}, 500));
|
|
}
|
|
}
|
|
|
|
[HttpPost("verify-payment")]
|
|
public IActionResult VerifyPayment([FromBody] PaymentVerificationRequest request)
|
|
{
|
|
string payload = request.OrderId + "|" + request.PaymentId;
|
|
string actualSignature = request.Signature ?? "";
|
|
string expectedSignature = _paymentHelper.GetExpectedSignature(payload);
|
|
|
|
if (actualSignature == expectedSignature)
|
|
{
|
|
// Payment is verified, process accordingly e.g. update tenant payment details
|
|
return Ok(new { status = "success" });
|
|
}
|
|
else
|
|
{
|
|
return BadRequest(new { status = "failure", message = "Invalid signature" });
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|