public ActionResult Payment() { var model = ShoppingViewModelFactory.Create <PaymentMethodsViewModel>(PropertyBag); model.PaymentMethods = Exigo.GetCustomerPaymentMethods(new GetCustomerPaymentMethodsRequest { CustomerID = Identity.Current.CustomerID, ExcludeIncompleteMethods = true, ExcludeInvalidMethods = true }); model.Addresses = Exigo.GetCustomerAddresses(Identity.Current.CustomerID) .Where(c => c.IsComplete) .Select(c => c as ShippingAddress); ViewBag.HasAutoOrderItems = ShoppingCart.Items.Count(c => c.Type == ShoppingCartItemType.AutoOrder) > 0; return(View("Payment", model)); }
public ActionResult ManageAddress(AddressType type) { var model = Exigo.GetCustomerAddresses(Identity.Current.CustomerID).Where(c => c.AddressType == type).FirstOrDefault(); return(View("ManageAddress", model)); }
public ActionResult AddressList() { var model = Exigo.GetCustomerAddresses(Identity.Current.CustomerID).Where(c => c.IsComplete).ToList(); return(View(model)); }
public ActionResult RenewSubscription(CreditCard creditcard) { var shipMethodID = OrderConfiguration.DefaultShipMethodID; // Will call or free option, since this is a virtual order var customerID = CurrentCustomerID; var requests = new List <ApiRequest>(); var items = new List <ShoppingCartItem>(); var paymonthly = true; var card = new CreditCard(); if (creditcard.Type != CreditCardType.New) { card = Exigo.GetCustomerPaymentMethods(new GetCustomerPaymentMethodsRequest { CustomerID = Identity.Current.CustomerID, ExcludeIncompleteMethods = true, ExcludeInvalidMethods = true }).Where(c => c is CreditCard && ((CreditCard)c).Type == creditcard.Type).FirstOrDefault().As <CreditCard>(); } else { card = creditcard; } try { // Determine which items we need to add to the order we are creating and assemble our order request if (paymonthly) { items.Add(new ShoppingCartItem { ItemCode = GlobalSettings.Backoffices.MonthlySubscriptionItemCode, Quantity = 1 }); } // We pull the customer's addresses first, if there are none we calculate with the corp address var customerAddresses = Exigo.GetCustomerAddresses(CurrentCustomerID); var address = (customerAddresses.Count() > 0 && customerAddresses.Where(c => c.IsComplete).Count() > 0) ? customerAddresses.Where(c => c.IsComplete).FirstOrDefault().As <ShippingAddress>() : new ShippingAddress(GlobalSettings.Company.Address); var OrderRequest = new CreateOrderRequest(OrderConfiguration, shipMethodID, items, address) { CustomerID = customerID }; requests.Add(OrderRequest); // Then next step is adding the credit card payment and account update request if (!card.IsTestCreditCard && !Request.IsLocal) { if (card.Type == CreditCardType.New) { requests.Add(new ChargeCreditCardTokenRequest(card)); requests.Add(new SetAccountCreditCardTokenRequest(card) { CustomerID = customerID, CreditCardAccountType = AccountCreditCardType.Primary }); } else { requests.Add(new ChargeCreditCardTokenOnFileRequest(card)); } } else { OrderRequest.OrderStatus = OrderStatusType.Shipped; } // Process the transaction var transactionRequest = new TransactionalRequest(); transactionRequest.TransactionRequests = requests.ToArray(); var transactionResponse = Exigo.WebService().ProcessTransaction(transactionRequest); if (transactionResponse.Result.Status != ResultStatus.Success) { //throw new Exception(transactionResponse.Result.Errors.ToString()); throw new Exception("Transaction failed"); } else { var httpContext = System.Web.HttpContext.Current; var cookie = httpContext.Request.Cookies[GlobalSettings.Backoffices.MonthlySubscriptionCookieName]; if (cookie != null) { cookie.Expires = DateTime.Now.AddMinutes(30); Response.Cookies.Set(cookie); } else { cookie = new HttpCookie(GlobalSettings.Backoffices.MonthlySubscriptionCookieName); cookie.Value = "true"; cookie.Expires = DateTime.Now.AddMinutes(30); Response.Cookies.Add(cookie); httpContext.Response.Cookies.Add(cookie); //Invalidate the customer subscription cache HttpRuntime.Cache.Remove(string.Format("exigo.customersubscriptions.{0}-{1}", customerID, Subscriptions.BackofficeFeatures)); } } return(new JsonNetResult(new { success = true })); } catch (Exception ex) { return(new JsonNetResult(new { success = false, message = ex.Message })); } }