public void AddPayment(string userId, Data.Models.Plan plan, string subId, string payerId, string paymentId, string token) { try { Data.Models.Payment payment1 = new Data.Models.Payment() { UserID = userId, SubscriptionID = subId, Type = 1, Amount = plan.Price, Source = (int)PaymentSource.Paypal, CreationDate = DateTime.Now, Status = 1, PaypalToken = token, PayerId = payerId, PayPaymentId = paymentId }; UnitOfWork uow = new UnitOfWork(); uow.Payments.Insert(payment1); uow.Save(); } catch (Exception ex) { throw; } }
public void AddStudentCredits(string studentId, Data.Models.Plan plan) { try { UnitOfWork uow = new UnitOfWork(); StudentCredit studentCredit = uow.StudentCredits.Get(a => a.StudentID == studentId).FirstOrDefault(); if (studentCredit != null) { studentCredit.TotalCredits = studentCredit.TotalCredits + plan.Hours; studentCredit.LastUpdates = DateTime.Now; uow.StudentCredits.Update(studentCredit); } else { StudentCredit credit = new StudentCredit { StudentID = studentId, LastUpdates = DateTime.Now, TotalCredits = plan.Hours, UsedCredits = 0 }; uow.StudentCredits.Insert(credit); } uow.Save(); } catch (Exception ex) { throw; } }
public ActionResult Pricing(Data.Models.Plan model) { UnitOfWork uow = new UnitOfWork(); Data.Models.Plan plan = uow.Plans.Get(a => a.PlanID == model.PlanID).FirstOrDefault(); return(BuyNow(plan)); }
public ActionResult PlanDetail(string id) { UnitOfWork uow = new UnitOfWork(); Data.Models.Plan plan = uow.Plans.Get(a => a.PlanID == id).FirstOrDefault(); return(View(plan)); }
public ActionResult BuyNow(Data.Models.Plan plan) { if (Session["UserId"] != null) { APIContext apiContext = PaypalConfiguration.GetAPIContext(); try { string payerId = Request.Params["PayerID"]; if (string.IsNullOrEmpty(payerId)) { string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/home/paypaldetail?pd=" + plan.PlanID + "&"; var guid = Convert.ToString(new Random().Next(100000)); var createdPayment = CreatePayment(apiContext, baseURI + "guid=" + guid, plan); var links = createdPayment.links.GetEnumerator(); string paypalRedirectUrl = string.Empty; while (links.MoveNext()) { Links link = links.Current; if (link.rel.ToLower().Trim().Equals("approval_url")) { paypalRedirectUrl = link.href; } } Session.Add(guid, createdPayment.id); Session["guid"] = createdPayment.id; return(Redirect(paypalRedirectUrl)); } else { //var guid = Request.Params["guid"]; PayPal.Api.Payment executePayment = ExecutePayment(apiContext, payerId, Session["guid"] as string); if (executePayment.state.ToLower() != "approved") { return(View("Failure")); } else { string planId = Request.Params["pd"]; string token = Request.Params["token"]; AddPaymentDetail(planId, payerId, Session["guid"] as string, token); } } } catch (Exception ex) { return(View("Failure")); } } else { return(RedirectToAction("Login", "Account", new { plan_id = plan.PlanID })); } return(View()); }
public void AddPaymentDetail(string planId, string payerId, string paymentId, string token) { UnitOfWork uow = new UnitOfWork(); string userId = Session["UserId"] as string; Data.Models.Plan plan = uow.Plans.Get(a => a.PlanID == planId).FirstOrDefault(); AddStudentCredits(userId, plan); string subId = AddSubscriptions(userId, plan); AddPayment(userId, plan, subId, payerId, paymentId, token); }
public ActionResult paymentcomplete() { APIContext apiContext = PaypalConfiguration.GetAPIContext(); try { string payerId = Request.Params["PayerID"]; if (string.IsNullOrEmpty(payerId)) { return(RedirectToAction("plans")); } else { PayPal.Api.Payment executePayment = ExecutePayment(apiContext, payerId, Session["guid"] as string); if (executePayment.state.ToLower() == "approved") { string planId = Request.Params["pd"]; string token = Request.Params["token"]; UnitOfWork uow = new UnitOfWork(); string userId = Session["UserId"] as string; Data.Models.Plan plan = uow.Plans.Get(a => a.PlanID == planId).FirstOrDefault(); AddStudentCredits(userId, plan); string subId = AddSubscriptions(userId, plan); AddPayment(userId, plan, subId, payerId, Session["guid"] as string, token); ModelState.AddModelError("success", Resources.Resources.TxtSuccessfullyPurchased); return(View()); } else { ModelState.AddModelError("error", Resources.Resources.TxtFailedPurchased + Resources.Resources.TxtContactSupport); return(View()); } } } catch (Exception) { ModelState.AddModelError("error", Resources.Resources.MsgErrorTryAgain); return(View()); } }
public ActionResult Plans(Data.Models.Plan model) { if (Session["UserId"] != null) { try { UnitOfWork uow = new UnitOfWork(); Data.Models.Plan plan = uow.Plans.Get(a => a.PlanID == model.PlanID).FirstOrDefault(); APIContext apiContext = PaypalConfiguration.GetAPIContext(); string payerId = Request.Params["PayerID"]; var guid = Convert.ToString(new Random().Next(100000)); string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/student/paymentcomplete?pd=" + plan.PlanID + "&guid=" + guid; var createdPayment = CreatePayment(apiContext, baseURI, plan); var links = createdPayment.links.GetEnumerator(); string paypalRedirectUrl = string.Empty; while (links.MoveNext()) { Links link = links.Current; if (link.rel.ToLower().Trim().Equals("approval_url")) { paypalRedirectUrl = link.href; } } Session.Add(guid, createdPayment.id); Session["guid"] = createdPayment.id; return(Redirect(paypalRedirectUrl)); } catch (Exception) { ModelState.AddModelError("error", Resources.Resources.MsgErrorTryAgain); return(View()); } } else { return(RedirectToAction("login", "account")); } }
public string AddSubscriptions(string studentId, Data.Models.Plan plan) { try { Subscription subscription = new Subscription() { SubscriptionID = Guid.NewGuid().ToString(), PlanID = plan.PlanID, Hours = plan.Hours, UserID = studentId, CreationDate = DateTime.Now, Status = 1 }; UnitOfWork uow = new UnitOfWork(); uow.Subscriptions.Insert(subscription); uow.Save(); return(subscription.SubscriptionID); } catch (Exception ex) { throw; } }
private PayPal.Api.Payment CreatePayment(APIContext apiContext, string redirectUrl, Data.Models.Plan plan) { //var plan = new Data.Models.Plan(); var listItems = new ItemList() { items = new List <Item>() }; listItems.items.Add(new Item() { name = plan.PlanName, currency = "USD", price = plan.Price.ToString(), quantity = "1", }); var payer = new Payer() { payment_method = "paypal" }; var redirUrls = new RedirectUrls() { cancel_url = redirectUrl, return_url = redirectUrl }; var details = new Details() { tax = "0", shipping = "0", subtotal = plan.Price.ToString() }; var amount = new Amount() { currency = "USD", total = plan.Price.ToString(), details = details }; var transactionList = new List <Transaction>(); transactionList.Add(new Transaction() { description = plan.PlanName + " Plan Payment Description", invoice_number = Convert.ToString(new Random().Next(100000)), amount = amount, item_list = listItems, }); payment = new PayPal.Api.Payment() { intent = "sale", payer = payer, transactions = transactionList, redirect_urls = redirUrls }; return(payment.Create(apiContext)); }