public ActionResult OnAuthorizedPayment(string data, string paymentID, string payerID)
        {
            try
            {
                Context db = new Context();
                JavaScriptSerializer jss = new JavaScriptSerializer();
                Student model            = jss.Deserialize <Student>(data);
                var     payment          = PaypalService.ExecutePayment(paymentID, payerID);
                if (payment.state == "approved")
                {
                    int StudentID = SaveRegistration(model);

                    StudentPayment pay = new StudentPayment();
                    pay.PaymentID     = 0;
                    pay.PaymentDate   = DateTime.Now.Date;
                    pay.TransactionID = payment.id;
                    pay.type          = "Paypal";
                    pay.StudentID     = StudentID;
                    pay.Detail        = "";
                    pay.Amount        = (model.TotalClassPrice - model.DiscountPrice);
                    db.StudentPayment.Add(pay);
                    db.SaveChanges();

                    Utilities.AssignKeycodesToCourseAddons(model.SelectedOptions, model.FirstName, model.LastName, model.Email, model.ClassID, StudentID);
                    Utilities.SendClassRegistrationConfirmationToStudent(model);

                    return(RedirectToAction("RegistrationConfirmed", new { id = StudentID }));
                }
                else
                {
                    FlashMessage.Warning("Paypal Transaction Fail");
                    return(RedirectToAction("RegistrationError"));
                }
            }
            catch (Exception ex)
            {
                FlashMessage.Warning(ex.Message);
                return(RedirectToAction("RegistrationError"));
            }
        }