/// <summary> /// Creates placeholder credit card payment/transaction and sends the user to TouchNet to process the payment /// </summary> /// <param name="ID">Reservation ID</param> /// <returns>Redirect ActionResult</returns> public ActionResult CreditPayment(int ID) { tblReservation Reservation = _ODB.tblReservations.Where(e => e.ID == ID).SingleOrDefault(); if (Reservation != null) { bool HasExistingPayments = Reservation.tblPayments.Where(e => e.Amount > 0).Count() > 0; bool IsStudentPayment = Reservation.tblInvitation.ENumber == Current.User.ENumber; if (Reservation.tblInvitation.ENumber == Current.User.ENumber || Current.User.IsAdmin || Current.User.IsStaff) { if (Reservation.CurrentAmountDue > 0) { if (Reservation.tblEventDate.HasOpenSlots || (Reservation.IsConfirmed && Reservation.CountUnpaidGuests > 0)) { // create placeholder payment to store data on upay postback tblPayment Payment = new tblPayment(); Payment.tblReservation = Reservation; Payment.IsSupplemental = HasExistingPayments; Payment.PaidBy = IsStudentPayment ? "Student" : "Staff"; Payment.PaymentType = DataConstants.PaymentTypes.CreditOrDebitCard; Payment.Amount = 0; // don't set amount until received Payment.PaymentDate = DateTime.Now; _ODB.tblPayments.AddObject(Payment); _ODB.SaveChanges(); Current.User.BookmarkReservationID = Reservation.ID; // remember which reservation we're using so we can return the user to the correct page. // Create a placeholder transaction to store credit card data tblUPayTransaction transaction = Upay.CreateTouchnetTransaction(Payment); SecureAccess.Utilities.Logging.Log(SecureAccess.Utilities.Logging.LogType.Audit, string.Format("Redirecting user {0} to {1} UPay site.", Current.User.Username, Reservation.tblInvitation.tblEvent.MarketplaceSite), SecureAccess.Utilities.Logging.Severity.Information); Upay.PostToTouchnet(transaction, Reservation.CurrentAmountDue, HasExistingPayments, Payment.PaidBy); return(null); } else { this.ShowPageError(string.Format("The selected event date '{0}' no longer has an open slot for event '{1}'. Please select another event date.", Reservation.tblEventDate.DateOfEvent.ToShortDateString(), Reservation.tblEventDate.tblEvent.Name)); } } else { this.ShowPageError(String.Format("You cannot submit a credit card payment. The Current Amount Due is {0}", Reservation.CurrentAmountDue)); } return(this.RedirectToAction <StudentController>(c => c.Reservation(ID))); } else { this.ShowPageError("You are not authorized to submit credit payments for this Reservation"); } } else { this.ShowPageError("Could not find a reservation for the given ID"); } return(this.RedirectToAction <StudentController>(c => c.Index())); }
internal string ejecutaLlamada(trnRequestValues requestValues) { //_logger.Info("Karen -> ejecutaLlamada"); Upay u = new Upay(); availableOperatives operacion = new availableOperatives(); bool exists = Enum.IsDefined(typeof(availableOperatives), requestValues.dcs_form); if (exists) { operacion = (availableOperatives)System.Enum.Parse(typeof(availableOperatives), requestValues.dcs_form); } else { operacion = availableOperatives.error; } string result = string.Empty; switch (operacion) { case availableOperatives.PRINT: #region reimpresion result = u.opspreimp(requestValues.trn_orig_id); break; #endregion case availableOperatives.INIKEY: #region inicializacion result = u.opcpiniciallave(); break; #endregion case availableOperatives.T060S000: #region venta result = u.opcpventa(requestValues.trn_amount, requestValues.trn_qty_pay); break; #endregion case availableOperatives.T040S000: #region devolucion result = u.opcpdevolucion(requestValues.trn_orig_id, requestValues.trn_auth_code, requestValues.trn_amount); break; #endregion case availableOperatives.T120S001: #region ajuste result = u.opspajuste(requestValues.trn_orig_id, requestValues.trn_amount); break; #endregion case availableOperatives.T120S000: #region cancelación result = u.opspcancel(requestValues.trn_orig_id); break; #endregion case availableOperatives.SHOWCONF: #region showConflocal result = u.opspconf(); break; #endregion case availableOperatives.UPDATECONF: #region updateConflocal result = u.opspupdateconf(requestValues.HOST, requestValues.PORT, requestValues.hostStunnel, requestValues.portStunnel, requestValues.TIMEOUT, requestValues.llave, requestValues.mer_id, requestValues.ter_id, requestValues.merUSD_id, requestValues.terUSD_id, requestValues.puertoCom); break; #endregion default: result = "|trn_internal_respcode=-2|trn_msg_host=Operativa No Existe|dcs_status=ERROR|"; break; } result = "|Respuesta=" + result + "|dcs_form=" + operacion.ToString() + "|"; return(result); }