public ActionResult ConfirmDuePaid(int?id, string TransactionID, decimal Amount) { if (!id.HasValue) { return(View("Unknown")); } if (!TransactionID.HasValue()) { return(Content("error no transaction")); } var ti = DbUtil.Db.Transactions.SingleOrDefault(tt => tt.Id == id); if (ti == null) { return(Content("no pending transaction")); } #if DEBUG ti.Testing = true; #endif if (OnlineRegModel.GetTransactionGateway() == "serviceu") { ti = PaymentForm.CreateTransaction(DbUtil.Db, ti, Amount); } ConfirmDuePaidTransaction(ti, TransactionID, sendmail: true); SetHeaders(ti.OrgId ?? 0); ViewData["timeout"] = INT_timeout; ViewData["Url"] = ti.Url; return(View(ti)); }
public ActionResult ConfirmDuePaid(int?id, string transactionId, decimal amount) { if (!id.HasValue) { return(View("Unknown")); } if (!transactionId.HasValue()) { return(Message("error no transaction")); } var ti = DbUtil.Db.Transactions.SingleOrDefault(tt => tt.Id == id); if (ti == null) { return(Message("no pending transaction")); } #if DEBUG ti.Testing = true; #endif if (OnlineRegModel.GetTransactionGateway() == "serviceu") { ti = PaymentForm.CreateTransaction(DbUtil.Db, ti, amount); } ConfirmDuePaidTransaction(ti, transactionId, sendmail: true); ViewBag.amtdue = PaymentForm.AmountDueTrans(DbUtil.Db, ti).ToString("C"); SetHeaders(ti.OrgId ?? 0); return(View("PayAmtDue/Confirm", ti)); }
// reached by the paylink in the confirmation email // which is produced in EnrollAndConfirm public ActionResult PayAmtDue(string q) { if (!q.HasValue()) { return(Content("unknown")); } var id = Util.Decrypt(q).ToInt2(); var qq = from t in DbUtil.Db.Transactions where t.OriginalId == id || t.Id == id orderby t.Id descending select t; var ti = qq.FirstOrDefault(); if (ti == null || ti.Amtdue == 0) { return(Content("no outstanding transaction")); } #if DEBUG ti.Testing = true; if (!ti.Address.HasValue()) { ti.Address = "235 Riveredge"; ti.City = "Cordova"; ti.Zip = "38018"; ti.State = "TN"; } #endif var pf = PaymentForm.CreatePaymentFormForBalanceDue(ti); SetHeaders(pf.OrgId ?? 0); ViewBag.Url = pf.Url; ViewBag.timeout = INT_timeout; if (OnlineRegModel.GetTransactionGateway() != "serviceu") { return(View("ProcessPayment", pf)); } ViewBag.TranId = ti.Id; return(View(pf)); }
public ActionResult CompleteRegistration() { Response.NoCache(); var s = (string)TempData["onlineregmodel"]; if (s == null) { return(Message("Registration cannot be completed after a page refresh.")); } var m = Util.DeSerialize <OnlineRegModel>(s); m.HistoryAdd("CompleteRegistration"); if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.SpecialJavascript) { var p = m.List[0]; if (p.IsNew) { p.AddPerson(null, p.org.EntryPointId ?? 0); } SpecialRegModel.SaveResults(m.Orgid ?? 0, m.List[0].PeopleId ?? 0, m.List[0].SpecialTest); return(View("SpecialRegistrationResults")); } if (m.AskDonation() && !m.donor.HasValue && m.donation > 0) { SetHeaders(m); ModelState.AddModelError("donation", "Please indicate a donor or clear the donation amount"); return(View("AskDonation", m)); } if (m.List.Count == 0) { return(Message("Can't find any registrants")); } RemoveLastRegistrantIfEmpty(m); m.UpdateDatum(); DbUtil.LogActivity("Online Registration: {0} ({1})".Fmt(m.Header, m.DatumId)); if (m.PayAmount() == 0 && (m.donation ?? 0) == 0 && !m.Terms.HasValue()) { return(RedirectToAction("Confirm", new { id = m.DatumId, TransactionID = "zero due", })); } var terms = Util.PickFirst(m.Terms, ""); if (terms.HasValue()) { ViewData["Terms"] = terms; } SetHeaders(m); if (m.PayAmount() == 0 && m.Terms.HasValue()) { return(View("Terms", new PaymentModel { Terms = m.Terms, _URL = m.URL, PostbackURL = DbUtil.Db.ServerLink("/OnlineReg/Confirm/" + m.DatumId), _timeout = m.TimeOut })); } var om = DbUtil.Db.OrganizationMembers.SingleOrDefault( mm => mm.OrganizationId == m.Orgid && mm.PeopleId == m.List[0].PeopleId); m.ParseSettings(); if (om != null && m.settings[om.OrganizationId].AllowReRegister == false && !m.SupportMissionTrip) { return(Message("You are already registered it appears")); } var pf = PaymentForm.CreatePaymentForm(m); if (OnlineRegModel.GetTransactionGateway() == "serviceu") { return(View("Payment/ServiceU", pf)); } ModelState.Clear(); return(View("Payment/Process", pf)); }
public ActionResult CompleteRegistration(OnlineRegModel m) { if (m.AskDonation() && !m.donor.HasValue && m.donation > 0) { SetHeaders(m); ModelState.AddModelError("donation", "Please indicate a donor or clear the donation amount"); return(View("AskDonation", m)); } if (m.List.Count == 0) { return(Content("Can't find any registrants")); } RemmoveLastRegistrantIfEmpty(m); var d = new ExtraDatum { Stamp = Util.Now }; d.Data = Util.Serialize <OnlineRegModel>(m); DbUtil.Db.ExtraDatas.InsertOnSubmit(d); DbUtil.Db.SubmitChanges(); DbUtil.LogActivity("Online Registration: {0} ({1})".Fmt(m.Header, d.Id)); if (m.PayAmount() == 0 && (m.donation ?? 0) == 0 && !m.Terms.HasValue()) { return(RedirectToAction("Confirm", new { id = d.Id, TransactionID = "zero due", })); } var terms = Util.PickFirst(m.Terms, ""); if (terms.HasValue()) { ViewData["Terms"] = terms; } SetHeaders(m); if (m.PayAmount() == 0 && m.Terms.HasValue()) { return(View("Terms", new PaymentModel { Terms = m.Terms, _URL = m.URL, _timeout = INT_timeout, PostbackURL = Util.ServerLink("/OnlineReg/Confirm/" + d.Id), })); } ViewBag.timeout = INT_timeout; ViewBag.Url = m.URL; var om = DbUtil.Db.OrganizationMembers.SingleOrDefault( mm => mm.OrganizationId == m.orgid && mm.PeopleId == m.List[0].PeopleId); m.ParseSettings(); if (om != null && m.settings[m.orgid.Value].AllowReRegister == false) { return(Content("You are already registered it appears")); } var pf = PaymentForm.CreatePaymentForm(m); pf.DatumId = d.Id; pf.FormId = Guid.NewGuid(); if (OnlineRegModel.GetTransactionGateway() == "serviceu") { return(View("Payment", pf)); } return(View("ProcessPayment", pf)); }
private int CreateFakeTransaction(OnlineRegModel m, decimal?amount = null) { PaymentForm pf = PaymentForm.CreatePaymentForm(m); if (!amount.HasValue) { amount = pf.AmtToPay; } decimal?amtdue = null; if (pf.Amtdue > 0) { amtdue = pf.Amtdue - (amount ?? 0); } var ti = new Transaction { First = "Oscar", MiddleInitial = "D", Last = "Baez", Suffix = "db", Donate = pf.Donate, Regfees = pf.AmtToPay, Amt = amount, Amtdue = amtdue, Emails = "*****@*****.**", Testing = true, Description = pf.Description, OrgId = pf.OrgId, Url = pf.URL, TransactionGateway = OnlineRegModel.GetTransactionGateway(CurrentDatabase, pf.ProcessType)?.GatewayAccountName, Address = "Street1", Address2 = "123", City = "My City", State = "My State", Country = "My Country", Zip = "03600", DatumId = pf.DatumId, Phone = "5547946830", OriginalId = pf.OriginalId, Financeonly = pf.FinanceOnly, TransactionDate = Util.Now, PaymentType = "C", LastFourCC = "1234", LastFourACH = "", Approved = true }; CurrentDatabase.Transactions.InsertOnSubmit(ti); CurrentDatabase.SubmitChanges(); if (pf.OriginalId == null) // first transaction { ti.OriginalId = ti.Id; } ti.TransactionId = $"(fakePushpay){ti.Id}"; CurrentDatabase.SubmitChanges(); return(ti.Id); }
public ActionResult PayAmtDue(string q) { Response.NoCache(); if (!q.HasValue()) { return(Message("unknown")); } var id = Util.Decrypt(q).ToInt2(); var qq = from t in DbUtil.Db.Transactions where t.OriginalId == id || t.Id == id orderby t.Id descending select new { t, email = t.TransactionPeople.FirstOrDefault().Person.EmailAddress }; var i = qq.FirstOrDefault(); if (i == null) { return(Message("no outstanding transaction")); } var ti = i.t; var email = i.email; var amtdue = PaymentForm.AmountDueTrans(DbUtil.Db, ti); if (amtdue == 0) { return(Message("no outstanding transaction")); } #if DEBUG ti.Testing = true; if (!ti.Address.HasValue()) { ti.Address = "235 Riveredge"; ti.City = "Cordova"; ti.Zip = "38018"; ti.State = "TN"; } #endif var pf = PaymentForm.CreatePaymentFormForBalanceDue(ti, amtdue, email); SetHeaders(pf.OrgId ?? 0); if (OnlineRegModel.GetTransactionGateway() != "serviceu") { return(View("Payment/Process", pf)); } ViewBag.TranId = ti.Id; var pm = new PaymentModel { NameOnAccount = pf.FullName(), Address = pf.Address, Amount = pf.Amtdue, City = pf.City, Email = pf.Email, Phone = pf.Phone.FmtFone(), State = pf.State, PostalCode = pf.Zip, testing = pf.testing, PostbackURL = DbUtil.Db.ServerLink("/OnlineReg/ConfirmServiceU/" + id), Misc2 = pf.Description, Misc1 = pf.FullName(), _URL = pf.URL, _timeout = new PaymentForm().TimeOut, }; return(View("PayAmtDue/ServiceU", pm)); }
public ActionResult ProcessPayment(PaymentForm pf) { #if DEBUG #else if (Session["FormId"] != null) { if ((Guid)Session["FormId"] == pf.FormId) { return(Content("Already submitted")); } } #endif OnlineRegModel m = null; var ed = DbUtil.Db.RegistrationDatas.SingleOrDefault(e => e.Id == pf.DatumId); if (ed != null) { m = Util.DeSerialize <OnlineRegModel>(ed.Data); } #if DEBUG #else if (m != null && m.History.Contains("ProcessPayment") && !pf.PayBalance) { return(Content("Already submitted")); } #endif if (pf.AmtToPay < 0) { pf.AmtToPay = 0; } if (pf.Donate < 0) { pf.Donate = 0; } pf.AllowCoupon = false; SetHeaders(pf.OrgId ?? 0); if ((pf.AmtToPay ?? 0) <= 0 && (pf.Donate ?? 0) <= 0) { DbUtil.Db.SubmitChanges(); ModelState.AddModelError("form", "amount zero"); return(View("Payment/Process", pf)); } try { if (pf.Type == "B") { Payments.ValidateBankAccountInfo(ModelState, pf.Routing, pf.Account); } if (pf.Type == "C") { Payments.ValidateCreditCardInfo(ModelState, pf); } if (!ModelState.IsValid) { return(View("Payment/Process", pf)); } if (pf.IsLoggedIn == true && pf.SavePayInfo) { var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { var au = new AuthorizeNet(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { au.AddUpdateCustomerProfile(m.UserPeopleId.Value, pf.Type, pf.CreditCard, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account); } } else if (gateway == "sage") { var sg = new CmsData.SagePayments(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { sg.storeVault(m.UserPeopleId.Value, pf.Type, pf.CreditCard, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account, pf.IsGiving == true); } } else { throw new Exception("ServiceU not supported"); } } if (pf.UseBootstrap) { var r = AddressVerify.LookupAddress(pf.Address, "", "", "", pf.Zip); var z = DbUtil.Db.ZipCodes.SingleOrDefault(zc => zc.Zip == pf.Zip.Zip5()); if (z != null && !z.State.HasValue()) { pf.State = r.State = z.State; pf.City = r.City = z.City; } if (r.Line1 != "error" && r.Line1.HasValue()) { if (r.found == false) { ModelState.AddModelError("Zip", r.address + ", to skip address check, Change the country to USA, Not Validated"); return(View("Payment/Process", pf)); } if (r.Line1 != pf.Address) { pf.Address = r.Line1; } if (r.City != (pf.City ?? "")) { pf.City = r.City; } if (r.State != (pf.State ?? "")) { pf.State = r.State; } if (r.Zip != (pf.Zip ?? "")) { pf.Zip = r.Zip; } } } var ti = ProcessPaymentTransaction(m, pf); if (ti.Approved == false) { ModelState.AddModelError("form", ti.Message); return(View("Payment/Process", pf)); } if (m != null) { m.TranId = ti.Id; m.History.Add("ProcessPayment"); ed.Data = Util.Serialize <OnlineRegModel>(m); ed.Completed = true; DbUtil.Db.SubmitChanges(); } Session["FormId"] = pf.FormId; if (pf.DatumId > 0) { try { var view = ConfirmTransaction(m, ti.TransactionId); switch (view) { case ConfirmEnum.Confirm: return(View("Confirm", m)); case ConfirmEnum.ConfirmAccount: return(View("ConfirmAccount")); } } catch (Exception ex) { TempData["error"] = ex.Message; return(Redirect("/Error")); } } ConfirmDuePaidTransaction(ti, ti.TransactionId, sendmail: true); ViewBag.amtdue = PaymentForm.AmountDueTrans(DbUtil.Db, ti).ToString("C"); return(View("PayAmtDue/Confirm", ti)); } catch (Exception ex) { ModelState.AddModelError("form", ex.Message); return(View("Payment/Process", pf)); } }
private Transaction ProcessPaymentTransaction(OnlineRegModel m, PaymentForm pf) { Transaction ti = null; if (m != null && m.Transaction != null) { ti = PaymentForm.CreateTransaction(DbUtil.Db, m.Transaction, pf.AmtToPay); } else { ti = pf.CreateTransaction(DbUtil.Db); } int?pid = null; if (m != null) { m.ParseSettings(); var terms = Util.PickFirst(m.Terms, ""); if (terms.HasValue()) { ViewData["Terms"] = terms; } pid = m.UserPeopleId; if (m.TranId == null) { m.TranId = ti.Id; } } if (!pid.HasValue) { var pds = DbUtil.Db.FindPerson(pf.First, pf.Last, null, pf.Email, pf.Phone); if (pds.Count() == 1) { pid = pds.Single().PeopleId.Value; } } TransactionResponse tinfo; var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { if (pf.SavePayInfo) { var anet = new AuthorizeNet(DbUtil.Db, pf.testing); tinfo = anet.createCustomerProfileTransactionRequest( pid ?? 0, pf.AmtToPay ?? 0, pf.Description, pf.TranId ?? 0); } else if (pf.Type == "B") { tinfo = OnlineRegModel.PostECheck( pf.Routing, pf.Account, pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.First, pf.Last, pf.Address, pf.City, pf.State, pf.Zip, pf.testing); } else { tinfo = OnlineRegModel.PostTransaction( pf.CreditCard, pf.CCV, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.Last, pf.Address, pf.City, pf.State, pf.Zip, pf.testing); } } else if (gateway == "sage") { if (pf.SavePayInfo) { var sage = new SagePayments(DbUtil.Db, pf.testing); tinfo = sage.createVaultTransactionRequest( pid ?? 0, pf.AmtToPay ?? 0, pf.Description, ti.Id, pf.Type); } else if (pf.Type == "B") { tinfo = OnlineRegModel.PostVirtualCheckTransactionSage( pf.Routing, pf.Account, pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.MiddleInitial, pf.Last, pf.Suffix, pf.Address, pf.City, pf.State, pf.Zip, pf.Phone, pf.testing); } else { tinfo = OnlineRegModel.PostTransactionSage( pf.CreditCard, pf.CCV, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.MiddleInitial, pf.Last, pf.Suffix, pf.Address, pf.City, pf.State, pf.Zip, pf.Phone, pf.testing); } } else { throw new Exception("unknown gateway " + gateway); } ti.TransactionId = tinfo.TransactionId; if (ti.Testing == true && !ti.TransactionId.Contains("(testing)")) { ti.TransactionId += "(testing)"; } ti.Approved = tinfo.Approved; if (ti.Approved == false) { ti.Amtdue += ti.Amt; if (m != null && m.OnlineGiving()) { ti.Amtdue = 0; } } ti.Message = tinfo.Message; ti.AuthCode = tinfo.AuthCode; ti.TransactionDate = DateTime.Now; DbUtil.Db.SubmitChanges(); return(ti); }
public ActionResult ManageGiving(ManageGivingModel m) { SetHeaders(m.orgid); RemoveNonDigitsIfNecessary(m); m.ValidateModel(ModelState); if (!ModelState.IsValid) { return(View(m)); } try { var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { var au = new AuthorizeNet(DbUtil.Db, m.testing); au.AddUpdateCustomerProfile(m.pid, m.Type, m.Cardnumber, m.Expires, m.Cardcode, m.Routing, m.Account); } else if (gateway == "sage") { var sg = new SagePayments(DbUtil.Db, m.testing); sg.storeVault(m.pid, m.Type, m.Cardnumber, m.Expires, m.Cardcode, m.Routing, m.Account, giving: true); } else { throw new Exception("ServiceU not supported"); } var mg = m.person.ManagedGiving(); if (mg == null) { mg = new ManagedGiving(); m.person.ManagedGivings.Add(mg); } mg.SemiEvery = m.SemiEvery; mg.Day1 = m.Day1; mg.Day2 = m.Day2; mg.EveryN = m.EveryN; mg.Period = m.Period; mg.StartWhen = m.StartWhen; mg.StopWhen = m.StopWhen; mg.NextDate = mg.FindNextDate(DateTime.Today); var pi = m.person.PaymentInfo(); pi.FirstName = m.firstname.Truncate(50); pi.MiddleInitial = m.middleinitial.Truncate(10); pi.LastName = m.lastname.Truncate(50); pi.Suffix = m.suffix.Truncate(10); pi.Address = m.address.Truncate(50); pi.City = m.city.Truncate(50); pi.State = m.state.Truncate(10); pi.Zip = m.zip.Truncate(15); pi.Phone = m.phone.Truncate(25); var q = from ra in DbUtil.Db.RecurringAmounts where ra.PeopleId == m.pid select ra; DbUtil.Db.RecurringAmounts.DeleteAllOnSubmit(q); DbUtil.Db.SubmitChanges(); foreach (var c in m.FundItemsChosen()) { var ra = new RecurringAmount { PeopleId = m.pid, FundId = c.fundid, Amt = c.amt }; DbUtil.Db.RecurringAmounts.InsertOnSubmit(ra); } DbUtil.Db.SubmitChanges(); } catch (Exception ex) { ModelState.AddModelError("form", ex.Message); } if (!ModelState.IsValid) { return(View(m)); } TempData["managegiving"] = m; return(Redirect("ConfirmRecurringGiving")); }
public ActionResult ProcessPayment(PaymentForm pf) { if (Session["FormId"] != null) { if ((Guid)Session["FormId"] == pf.FormId) { return(Content("Already submitted")); } } OnlineRegModel m = null; var ed = DbUtil.Db.ExtraDatas.SingleOrDefault(e => e.Id == pf.DatumId); if (ed != null) { m = Util.DeSerialize <OnlineRegModel>(ed.Data); } if (pf.AmtToPay < 0) { pf.AmtToPay = 0; } if (pf.Donate < 0) { pf.Donate = 0; } pf.AllowCoupon = false; SetHeaders(pf.OrgId ?? 0); ViewBag.Url = pf.Url; ViewBag.timeout = INT_timeout; if ((pf.AmtToPay ?? 0) <= 0 && (pf.Donate ?? 0) <= 0) { DbUtil.Db.SubmitChanges(); ModelState.AddModelError("form", "amount zero"); return(View("ProcessPayment", pf)); } try { if (pf.Type == "B") { Payments.ValidateBankAccountInfo(ModelState, pf.Routing, pf.Account); } if (pf.Type == "C") { Payments.ValidateCreditCardInfo(ModelState, pf.CreditCard, pf.Expires, pf.CCV); } if (!ModelState.IsValid) { return(View("ProcessPayment", pf)); } if (pf.IsLoggedIn == true && pf.SavePayInfo == true) { var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { var au = new AuthorizeNet(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { au.AddUpdateCustomerProfile(m.UserPeopleId.Value, pf.Type, pf.CreditCard, pf.Expires, pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account); } } else if (gateway == "sage") { var sg = new CmsData.SagePayments(DbUtil.Db, m.testing ?? false); if ((pf.Type == "B" && !pf.Routing.StartsWith("X") && !pf.Account.StartsWith("X")) || (pf.Type == "C" && !pf.CreditCard.StartsWith("X"))) { sg.storeVault(m.UserPeopleId.Value, pf.Type, pf.CreditCard, pf.Expires, pf.MaskedCCV != null && pf.MaskedCCV.StartsWith("X") ? pf.CCV : pf.MaskedCCV, pf.Routing, pf.Account, pf.IsGiving == true); } } else { throw new Exception("ServiceU not supported"); } } var ti = ProcessPaymentTransaction(m, pf); if (ti.Approved == false) { ModelState.AddModelError("form", ti.Message); return(View("ProcessPayment", pf)); } if (m != null) { m.TranId = ti.Id; ed.Data = Util.Serialize <OnlineRegModel>(m); DbUtil.Db.SubmitChanges(); } Session["FormId"] = pf.FormId; if (pf.DatumId > 0) { confirm = ConfirmTransaction(m, ti.TransactionId); if (confirm.StartsWith("error:")) { TempData["error"] = confirm.Substring(6); return(Redirect("/Error")); } return(View(confirm)); } ConfirmDuePaidTransaction(ti, ti.TransactionId, sendmail: true); return(View("ConfirmDuePaid", ti)); } catch (Exception ex) { ModelState.AddModelError("form", ex.Message); return(View("ProcessPayment", pf)); } }