public ActionResult ProcessPaymentNPS(ReservationModel reservation) { try { var npsBLL = new NpsBLL(); var dto = npsBLL.GuardarPagoNPS(new PagoNPSDTO { ReservationId = long.Parse(SessionData.Reservation.ReservationId), IdEstadoNPS = (int)EstadoNPS.Iniciada, FechaGeneracion = DateTime.Now }); using (var dc = new TurismoDataContext()) { var formaPago = dc.FormaPagos.SingleOrDefault(fp => fp.IDFORMAPAGO == Guid.Parse(reservation.PaymentMethodId)); var moneda = dc.MonedaDBs.SingleOrDefault(m => m.DESCRIPCION == MapCurrencyFromNPS(SessionData.Reservation.LodgingCurrencyCode)); var response = npsBLL.ObtenerDatosPostTC(dto.IdPagoNPS.ToString(), SessionData.Reservation.ReservationId, (float)SessionData.Reservation.TotalAmount * moneda.COTIZACION, 1, "032", //currencyDb.CODIGO_NPS, formaPago.DESCRIPCION.Trim(), false, 0, SessionData.Reservation.ReservationOwner.TravelerId, SessionData.Reservation.ReservationOwner.TravelerEmail); dto.IdTransaccionNPS = response.TransactionId; dto.ResponseCod = response.ResponseCod; dto.ResponseMsg = response.ResponseMsg; dto.ResponseExtended = response.ResponseExtended; npsBLL.GuardarPagoNPS(dto); if (response.ResponseCod == (int)EstadoNPS.AprobadaAutorizada) { SessionData.Reservation.PaymentMethodId = reservation.PaymentMethodId; SessionData.Reservation.IdTransaccionNPS = dto.IdTransaccionNPS.Value.ToString(); return(View(new NPSRedirectionModel { FrontPSP_URL = response.FrontPSP_URL })); } else { return(View("PaymentError", new ErrorModel { Mensaje = dto.ResponseMsg })); } } } catch (Exception e) { return(RedirectToAction("PaymentError", new ErrorModel { Mensaje = e.Message })); } }
public ActionResult ProcessResultPaymentNPS(NPSPaymentModel model) { var npsBLL = new NpsBLL(); string idTransaccion = string.Empty; float importe; try{ var rpta = npsBLL.ActualizarEstadoPago(model.psp_MerchTxRef); if (string.IsNullOrEmpty(rpta)) { using (var dc = new TurismoDataContext()) { var moneda = dc.MonedaDBs.SingleOrDefault(m => m.DESCRIPCION == MapCurrencyFromNPS(SessionData.Reservation.LodgingCurrencyCode)); importe = (float)SessionData.Reservation.TotalAmount * moneda.COTIZACION; } if (new ServiceController().CompleteReservation(ref idTransaccion)) { if (!string.IsNullOrEmpty(idTransaccion)) { var response = npsBLL.CapturarTrx(model.psp_MerchTxRef, SessionData.Reservation.IdTransaccionNPS, idTransaccion, importe); if (string.IsNullOrEmpty(response)) { return(RedirectToAction("PaymentSuccess")); } else { return(View("PaymentError", new ErrorModel { Mensaje = response })); } } else { return(View("PaymentError", new ErrorModel { Mensaje = "La reserva no pudo completarse" })); } } else { return(View("PaymentError", new ErrorModel { Mensaje = "La reserva no pudo completarse" })); } } else { return(View("PaymentError", new ErrorModel { Mensaje = "La reserva no pudo completarse. Operación no autorizada" })); } } catch (Exception e) { return(RedirectToAction("PaymentError", new ErrorModel { Mensaje = e.Message })); } }