Sistemde kiralama işlemi yapmak için ilk önce ödeme alınması gerekiyor. Ödemeyi iyzico entegrasyonu ile yaptım ve sorunsuz ödeme alıyorum.Ödeme yapıldıysa kiralama işlemini yapacak şekilde bir sistem yazmak istiyorum. Görseldeki gibi bir form mevcut yani 1 form içerisinde hem araç kiralamaya ait bilgiler mevcut hemde ödeme için gerekli bilgiler mevcut.
İlk önce ödeme yapacağım için formu ben PaymentController içerisindeki action a post ediyorum ödemeyi alıyorum fakat daha sonra RentalController içerisindeki RentAction ına redirect ettiğim zaman kiralama işlemi gerçekleşmiyor bunu anlayamadım yardımcı olursanız çok sevinirim. Kodlarım aşağıdaki gibidir.

Payment Controller içerisindeki actionıma ait
Payment payment = Payment.Create(request, options);
if (payment.Status == "success")
{
return RedirectToAction("Rent", "Rental", new {carId=Id});
}
else
{
// ödeme başarısız
var errorMessage = "Ödeme işlemi başarısız. Lütfen tekrar deneyin.";
if (payment.ErrorMessage != null)
{
errorMessage = payment.ErrorMessage;
}
TempData["RentError"] = errorMessage;
}
return RedirectToAction("Detail", "Car", new { CarId = car.Id });RentalController içerisindeki Rent action ına ait kodlarım. [HttpPost]
[Authorize(Roles = "User")]
public async Task<IActionResult> Rent(DateTime RentACar,DateTime EndTime, string TotalPrice, Guid carId)
{
var userId = userService.GetUserId();
var car = await rentalService.GetCarById(carId);
var rent = new CarRentalDto
{
CarId = carId,
RentDate = RentACar,
ReturnDate = EndTime,
UserId=Guid.Parse(userId),
TotalPrice=Convert.ToInt32(TotalPrice),
Car=car,
};
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
await rentalService.Rent(rent);
return View(rent);
}
catch (Exception ex)
{
var errorMessage = ex.Message;
TempData["RentError"] = errorMessage;
return RedirectToAction("Detail", "Car", new { CarId = rent.CarId });
}
}