//Billing public ActionResult CreateStripeCustomer(string token) { var email = Session["Email"].ToString(); var subscription = new StripeSubscription(); var customerDetails = new StripeCustomer(); var userInfo = new UpdateUserInfo(); string msg = ""; var cardStatus = 0; DataTable userData; StripeCharge charge = null; try { if (token != null) { var ds = new AccountData().ValidateEmailAndGetUserinfo(email); userData = ds.Tables[0]; var custID = Convert.ToString(userData.Rows[0]["stp_custId"]); if (userData.Rows.Count > 0 && !string.IsNullOrWhiteSpace(custID)) //update { var customerUpdateOptions = new StripeCustomerUpdateOptions { Email = email, Description = Session["FirstName"] + " " + Session["LastName"], SourceToken = token }; //updated customer customerDetails = StripeHelper.UpdateCustomer(custID, customerUpdateOptions); //add a test charge for $1 var makeTestCharge = new StripeChargeCreateOptions { CustomerId = customerDetails.Id, Amount = 100, Currency = "usd", Description = "Card verification charge", SourceTokenOrExistingSourceId = customerDetails.DefaultSourceId }; charge = StripeHelper.MakePayment(makeTestCharge); if (charge != null) { var refund = StripeHelper.RefundCharge(charge.Id); cardStatus = 1; userInfo.CustId = customerDetails.Id; userInfo.CardId = customerDetails.DefaultSourceId; userInfo.UserId = Convert.ToInt32(Session["UserID"]); AccountData.UpdateStripeCardData(userInfo); if ((SessionData.PlanID == 1 && SessionData.TrialEndOn < DateTime.Now) || SessionData.PlanStatus == 0) //When trail was expired || Unsubscribed and adding a card since payments are not succesfull { msg = StripeServices.SubscribePlan(SessionData.StripeCustId, userInfo.CardId); } if (String.IsNullOrWhiteSpace(msg)) { SessionData.PlanStatus = 1; //Default subscription SessionData.StripeCustId = customerDetails.Id; SessionData.StripeCardId = customerDetails.DefaultSourceId; } } else { StripeHelper.DeleteCard(customerDetails.DefaultSourceId, custID); cardStatus = 0; } } customerDetails = StripeHelper.GetStripeCustomer(customerDetails.Id); } var respo = new { Status = cardStatus, Message = msg, CustomerDetails = customerDetails }; return(Json(respo, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { LogFile.WriteLog("CreateCustomer - " + ex.Message.ToString()); return(Json(null, JsonRequestBehavior.AllowGet)); } }
//[ValidateAntiForgeryToken] public ActionResult Login(LoginViewModel model, String returnUrl) { String msg = ""; Int32 UserID = 0; DataSet ds; DataTable dt, dtbl; DataRow dr = null, dr1 = null; if (ModelState.IsValid) { String email = model.Email.Trim(); ds = userregistrationData.ValidateEmailAndGetUserinfo(email); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { dt = ds.Tables[0]; dr = dt.Rows[0]; UserID = Convert.ToInt32(dr["MppUserID"]); msg = userregistrationData.CheckUserLogin(UserID, model.Password); if (msg == "") { dtbl = ds.Tables[1]; dr1 = dtbl.Rows[0]; String CustmId, CardId; SessionData.UserID = UserID; String FirstName = Convert.ToString(dr["FirstName"]); SessionData.LastName = Convert.ToString(dr["LastName"]); String PlanDate = Convert.ToString(dr1["PlanDate"]); DateTime?Today, NextPlanDate = DateTime.MaxValue; Today = DateTime.Now; DateTime StartDate = Convert.ToDateTime(dr["StartDate"]); if (!String.IsNullOrWhiteSpace(PlanDate)) { NextPlanDate = Convert.ToDateTime(PlanDate); } SessionData.StartDate = StartDate.ToString("yyyy/MM/dd hh:mm:ss tt"); SessionData.PlanStatus = Convert.ToInt32(dr["PlanStatus"]); SessionData.PlanID = Convert.ToInt32(dr["PlanID"]); SessionData.FormulaAccess = Convert.ToInt16(dr["IsSetFormula"]); SessionData.TrialEndOn = Convert.ToDateTime(dr["TrailEndDate"]); SessionData.Email = email; SessionData.IsAgreementAccept = Convert.ToInt16(dr["IsAgreementConfirm"]); SessionData.ProfileAccess = Convert.ToInt16(dr["ProfileAccess"]); SessionData.AlertCount = Convert.ToInt32(dr1["total_alerts"]); CustmId = Convert.ToString(dr["stp_custId"]); CardId = Convert.ToString(dr["stp_cardId"]); if (!String.IsNullOrWhiteSpace(CustmId)) { FormsAuthentication.SetAuthCookie(FirstName, false); var custm = StripeHelper.GetStripeCustomer(CustmId); if (!String.IsNullOrWhiteSpace(custm.DefaultSourceId) && String.IsNullOrWhiteSpace(CardId)) { StripeHelper.DeleteCard(custm.DefaultSourceId, CustmId); } SessionData.StripeCardId = CardId; SessionData.StripeCustId = CustmId; if (((SessionData.PlanID == 1 && SessionData.TrialEndOn < Today && !String.IsNullOrWhiteSpace(CardId)) || NextPlanDate < Today) && SessionData.PlanStatus == 1) // When plan was expired { if (String.IsNullOrWhiteSpace(CardId)) { return(RedirectToAction("Plan", "Settings")); } else { msg = StripeServices.SubscribePlan(CustmId, CardId); } if (!String.IsNullOrWhiteSpace(msg)) { TempData["IsValid"] = msg; return(RedirectToAction("Login", "UserAccount")); } } if (SessionData.PlanID != 1) { if (SessionData.PlanStatus == 0) // handles unsubscribed status after trial period { return(RedirectToAction("Plan", "Settings")); } else if (String.IsNullOrWhiteSpace(CardId) && SessionData.PlanStatus == 1) // When CardId was not found and Plan was not trail { return(RedirectToAction("Cards", "Settings")); } } } else { return(View("Error")); } if (Url.IsLocalUrl(returnUrl)) { return(Redirect(returnUrl)); } else { return(RedirectToAction("Dashboard", "Main")); } } } else { msg = "Invalid login attempt!"; } TempData["IsValid"] = msg; return(RedirectToAction("Login", "UserAccount")); } return(View(model)); }