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);
        }
Example #7
0
        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());
            }
        }
Example #8
0
 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;
     }
 }
Example #10
0
        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));
        }