public void Subscription_Does_PartialUpdate_Fail() { // Arrange var client = Chargify; var subscription = client.GetSubscriptionList().FirstOrDefault(s => s.Value.State == SubscriptionState.Active).Value; // Check that the card isn't expired var expDate = new DateTime(subscription.PaymentProfile.ExpirationYear, subscription.PaymentProfile.ExpirationMonth, 1); if (expDate < DateTime.Now) { subscription = client.UpdateSubscriptionCreditCard(subscription.SubscriptionID, "1", DateTime.Now.AddMonths(1).Month, DateTime.Now.AddYears(1).Year, "123", subscription.PaymentProfile.BillingAddress, subscription.PaymentProfile.BillingCity, subscription.PaymentProfile.BillingState, subscription.PaymentProfile.BillingZip, subscription.PaymentProfile.BillingCountry); } string oldAddress = subscription.PaymentProfile.BillingAddress, oldAddress2 = subscription.PaymentProfile.BillingAddress2, oldCity = subscription.PaymentProfile.BillingCity, oldState = subscription.PaymentProfile.BillingState, oldZip = subscription.PaymentProfile.BillingZip; var newAttributes = new CreditCardAttributes() { BillingAddress = GetNewRandomValue(oldAddress, Faker.Address.StreetAddress), BillingAddress2 = GetNewRandomValue(oldAddress2, Faker.Address.SecondaryAddress), BillingCity = GetNewRandomValue(oldCity, Faker.Address.City), BillingState = GetNewRandomValue(oldState, Faker.Address.UsState), BillingZip = GetNewRandomValue(oldZip, Faker.Address.ZipCode), BillingCountry = "US" }; // Act var result = client.UpdateSubscriptionCreditCard(subscription.SubscriptionID, newAttributes); }
private CreditCardAttributes GetTestPaymentMethod(CustomerAttributes customer) { var retVal = new CreditCardAttributes() { FirstName = customer.FirstName, LastName = customer.LastName, ExpirationMonth = 1, ExpirationYear = 2020, FullNumber = "1", CVV = "123", BillingAddress = Faker.Address.StreetAddress(false), BillingCity = Faker.Address.City(), BillingCountry = "US", BillingState = Faker.Address.StateAbbr(), BillingZip = Faker.Address.ZipCode() }; return(retVal); }
private CreditCardAttributes GetTestPaymentMethod(CustomerAttributes customer) { var retVal = new CreditCardAttributes() { FirstName = customer.FirstName, LastName = customer.LastName, ExpirationMonth = 1, ExpirationYear = 2020, FullNumber = "1", CVV = "123", BillingAddress = "123 Main St.", BillingCity = "New York", BillingCountry = "US", BillingState = "New York", BillingZip = "10001" }; return(retVal); }
public void Subscription_Can_Update_Payment_FirstLast() { // Arrange var client = Chargify; var subscription = client.GetSubscriptionList().FirstOrDefault(s => s.Value.State == SubscriptionState.Active).Value; var oldFirst = subscription.PaymentProfile.FirstName; var oldLast = subscription.PaymentProfile.LastName; var newFirst = Guid.NewGuid().ToString(); var newLast = Guid.NewGuid().ToString(); var oldAttributes = new CreditCardAttributes(oldFirst, oldLast, "1", subscription.PaymentProfile.ExpirationYear, subscription.PaymentProfile.ExpirationMonth, "123", subscription.PaymentProfile.BillingAddress, subscription.PaymentProfile.BillingCity, subscription.PaymentProfile.BillingState, subscription.PaymentProfile.BillingZip, subscription.PaymentProfile.BillingCountry); var newAttributes = new CreditCardAttributes(newFirst, newLast, "1", subscription.PaymentProfile.ExpirationYear, subscription.PaymentProfile.ExpirationMonth, "123", subscription.PaymentProfile.BillingAddress, subscription.PaymentProfile.BillingCity, subscription.PaymentProfile.BillingState, subscription.PaymentProfile.BillingZip, subscription.PaymentProfile.BillingCountry); // Act var updatedSubscription = client.UpdateSubscriptionCreditCard(subscription.SubscriptionID, newAttributes); // Assert Assert.IsNotNull(updatedSubscription); //Assert.IsInstanceOfType(updatedSubscription, typeof(Subscription)); Assert.AreEqual(newFirst, updatedSubscription.PaymentProfile.FirstName); Assert.AreEqual(newLast, updatedSubscription.PaymentProfile.LastName); Assert.AreEqual(subscription.PaymentProfile.ExpirationYear, updatedSubscription.PaymentProfile.ExpirationYear); Assert.AreEqual(subscription.PaymentProfile.ExpirationMonth, updatedSubscription.PaymentProfile.ExpirationMonth); Assert.AreEqual(subscription.PaymentProfile.BillingAddress, updatedSubscription.PaymentProfile.BillingAddress); Assert.AreEqual(subscription.PaymentProfile.BillingCity, updatedSubscription.PaymentProfile.BillingCity); Assert.AreEqual(subscription.PaymentProfile.BillingState, updatedSubscription.PaymentProfile.BillingState); Assert.AreEqual(subscription.PaymentProfile.BillingZip, updatedSubscription.PaymentProfile.BillingZip); Assert.AreEqual(subscription.PaymentProfile.BillingCountry, updatedSubscription.PaymentProfile.BillingCountry); // Cleanup var replacedSubscription = client.UpdateSubscriptionCreditCard(subscription.SubscriptionID, oldAttributes); Assert.IsNotNull(replacedSubscription); Assert.AreEqual(oldFirst, replacedSubscription.PaymentProfile.FirstName); Assert.AreEqual(oldLast, replacedSubscription.PaymentProfile.LastName); }
public ActionResult Subscribe(TestProject.Models.Subscribe subscribe, string confirmKey) { ChargifyConnect chargify = ChargifyTools.Chargify; string plan = subscribe.plan; bool isCredit = subscribe.hasCreditCard || subscribe.creditcard.requireCredit;//ChargifyTools.RequireCreditCard(subscribe.plan); try { if (ChargifyTools.IsChargifyProduct(subscribe.plan)) { ViewBag.confirmKey = confirmKey; ViewBag.plan = subscribe.plan; if (ValidatePassword(subscribe.password) == false) { //ViewBag.contactGenderId = new SelectList(db.contactGender.ToList(), "contactGenderId", "name"); ViewBag.Message = "Error password, you need a format that contains capital letters and numbers, example: Michael7."; ViewBag.plan = subscribe.plan; return(View(subscribe)); } userLogin user = new userLogin(); contact cont = new contact(); tenant tnt = new tenant(); //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- tnt.tenantSubscriptionPlanId = (from pl in db.tenantSubscriptionPlan where pl.code.ToLower().Equals(plan.ToLower()) select pl.tenantSubscriptionPlanId).FirstOrDefault(); tnt.active = true; tnt.allocatedUsers = 1; //cantidad de usuarios asignados tnt.billingRefNumber = Guid.NewGuid().ToString(); tnt.companyName = subscribe.company; tnt.companyURL = "N/A"; tnt.database = "TestProject"; tnt.tenantStatusId = 2; tnt.tenantSourceId = 2; if (isCredit) { tnt.tenentBillingTypeId = 1; } else { tnt.tenentBillingTypeId = 2; } /****** Valores quemados de campos auditoria*****/ tnt.updatedById = 0; tnt.createdById = TntIdTestProject; // Id tenant TestProject tnt.modifyDateTime = new DateTime(1900, 1, 1, 0, 0, 0); tnt.insertDateTime = DateTime.Now; /****** Valores quemados de campos auditoria*****/ db.tenant.Add(tnt); db.SaveChanges(); var city = db.genCity .Include(x => x.genState.genContry) .SingleOrDefault(x => x.genCityId == Convert.ToInt32(subscribe.genCityId)); if (isCredit) { contactPhone phone = new contactPhone { active = true, number = subscribe.phoneNumber, contactId = cont.contactId, contactPhoneTypeId = 1, tenantId = tnt.tenantId, updatedById = 0, createdById = TntIdTestProject, // Id tenant TestProject modifyDateTime = new DateTime(1900, 1, 1, 0, 0, 0), insertDateTime = DateTime.Now }; db.contactPhone.Add(phone); db.SaveChanges(); cont.preferredBillAddressId = address.contactAddressId; cont.preferredPhoneId = phone.contactPhoneId; db.Entry(cont).State = EntityState.Modified; db.SaveChanges(); } /*** cosas de chargify!!!*/ CustomerAttributes customerInformation = new CustomerAttributes(); customerInformation.FirstName = subscribe.firstName; customerInformation.LastName = subscribe.lastName; customerInformation.Organization = subscribe.company; customerInformation.Email = subscribe.email; // Create a new guid, this would be the Membership UserID if we were creating a new user simultaneously customerInformation.SystemID = tnt.billingRefNumber; ISubscription newSubscription = null; string productHandle = plan; if (isCredit) { CreditCardAttributes creditCardInfo = new CreditCardAttributes(); creditCardInfo.FullNumber = subscribe.creditcard.creditCardNumber; creditCardInfo.CVV = subscribe.creditcard.cvv; creditCardInfo.ExpirationMonth = subscribe.creditcard.ExpireMonth; creditCardInfo.ExpirationYear = subscribe.creditcard.ExpireYear; creditCardInfo.BillingAddress = subscribe.street; creditCardInfo.BillingCity = city.City;//subscribe.city; creditCardInfo.BillingState = city.genState.State; creditCardInfo.BillingZip = subscribe.postalCode; creditCardInfo.BillingCountry = city.genState.genContry.contry; newSubscription = chargify.CreateSubscription(productHandle, customerInformation, creditCardInfo); } else { newSubscription = chargify.CreateSubscription(productHandle, customerInformation); } } } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } catch (Exception e) { return(View(subscribe)); } return(View(subscribe)); }
public ActionResult Subscribe(string id, LocalSubscriptionViewModel model) { // if (ModelState.IsValid) //{ // Attempt to register the user //MembershipCreateStatus createStatus; //MembershipUser user = MembershipService.CreateUser(model.Username, model.Password, model.Email, model.Question, model.Answer, out createStatus); //if (createStatus == MembershipCreateStatus.Success) if (true) { //if (!RoleService.RoleExists("user")) //{ // RoleService.CreateRole("user"); //} //RoleService.AddUsersToRoles(new string[] { user.UserName }, new string[] { "User" }); // Now that the user is created, attempt to create the corresponding subscription CustomerAttributes cInfo = new CustomerAttributes(); cInfo.FirstName = model.FirstName; cInfo.LastName = model.LastName; cInfo.Email = model.Email; cInfo.SystemID = Guid.NewGuid().ToString(); ///Convert.ToInt32(Session["userId"]).ToString(); if (Convert.ToBoolean(Session["RequireCreditCard"])) { CreditCardAttributes ccAttr = new CreditCardAttributes(); ccAttr.FullNumber = model.CardNumber.Trim(); ccAttr.CVV = model.CVV; ccAttr.ExpirationMonth = model.ExpMonth; ccAttr.ExpirationYear = model.ExpYear; ccAttr.BillingAddress = model.Address; ccAttr.BillingCity = model.City; ccAttr.BillingZip = model.PostalCode; ccAttr.BillingState = model.Province; ccAttr.BillingCountry = "CA"; ISubscription newSubscription = Chargify.CreateSubscription(id, cInfo, ccAttr); } else { ISubscription newSubscription = Chargify.CreateSubscription(id, cInfo); } try { //FormsService.SignIn(model.Username, false /* createPersistentCookie */); return(RedirectToAction("Index", "Chargify")); } catch (ChargifyException ex) { if (ex.ErrorMessages.Count > 0) { ModelState.AddModelError("", ex.ErrorMessages.FirstOrDefault().Message); } else { ModelState.AddModelError("", ex.ToString()); } } } else { //ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); } return(RedirectToAction("Subscribe")); }
public void DoSampleCode() { ChargifyConnect chargify = new ChargifyConnect(); chargify.apiKey = ConfigurationManager.AppSettings["CHARGIFY_API_KEY"]; chargify.Password = ConfigurationManager.AppSettings["CHARGIFY_API_PASSWORD"]; chargify.URL = ConfigurationManager.AppSettings["CHARGIFY_URL"]; // Create a new customer and a subscription for him ICustomerAttributes scottPilgrim = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", Guid.NewGuid().ToString()); ICreditCardAttributes scottsPaymentInfo = new CreditCardAttributes(); scottsPaymentInfo.FirstName = scottPilgrim.FirstName; scottsPaymentInfo.LastName = scottPilgrim.LastName; scottsPaymentInfo.ExpirationMonth = 1; scottsPaymentInfo.ExpirationYear = 2020; scottsPaymentInfo.FullNumber = "1"; scottsPaymentInfo.CVV = "123"; scottsPaymentInfo.BillingAddress = "123 Main St."; scottsPaymentInfo.BillingCity = "New York"; scottsPaymentInfo.BillingCountry = "US"; scottsPaymentInfo.BillingState = "New York"; scottsPaymentInfo.BillingZip = "10001"; ISubscription newSubscription = chargify.CreateSubscription("basic", scottPilgrim, scottsPaymentInfo); if (newSubscription != null) { // subscription success. Console.WriteLine("Subscription succeeded."); } else { // subscription failure. Console.WriteLine("Update customer failed with response: ", chargify.LastResponse.ToString()); } ICharge oneTimeChargeResults = chargify.CreateCharge(newSubscription.SubscriptionID, 123.45m, "Testing One-Time Charge"); if (oneTimeChargeResults != null) { // one-time charge success. Console.WriteLine(string.Format("Charge succeeded: {0}", oneTimeChargeResults.Success.ToString())); } else { // one time charge failure. Console.WriteLine("One-time charge failed with response: ", chargify.LastResponse.ToString()); } IDictionary <int, ITransaction> transactions = chargify.GetTransactionsForSubscription(newSubscription.SubscriptionID, new List <TransactionType>() { TransactionType.Payment }); // Grab the last payment transaction, which we will refund (will be the one-time charge we just assessed) ITransaction firstTransaction = transactions.First().Value; IRefund chargeRefund = chargify.CreateRefund(newSubscription.SubscriptionID, firstTransaction.ID, firstTransaction.AmountInCents, "Test Refund"); if (chargeRefund != null) { Console.WriteLine("Refund was: " + (chargeRefund.Success ? "successful" : "unsuccessful")); } bool result = chargify.DeleteSubscription(newSubscription.SubscriptionID, "Testing Reactivation"); if (result) { ISubscription reactivatedSubscription = chargify.ReactivateSubscription(newSubscription.SubscriptionID); if (reactivatedSubscription != null) { Console.WriteLine("Reactivation succeeded!"); } else { Console.WriteLine("Reactivation failed with response: ", chargify.LastResponse.ToString()); } // Currently a bug if you say "true" for the last two parameters. Being worked on. reactivatedSubscription = chargify.MigrateSubscriptionProduct(reactivatedSubscription.SubscriptionID, "ultimate", true, true); if (reactivatedSubscription != null) { Console.WriteLine("Migration succeeded!"); } else { } } else { Console.WriteLine("Cancellation failed with response: ", chargify.LastResponse.ToString()); } //IDictionary<int, ITransaction> transactions = chargify.GetTransactionsForSubscription(newSubscription.SubscriptionID); //if ((transactions != null) && (transactions.Count > 0)) //{ // foreach (ITransaction transaction in transactions.Values) // { // Console.WriteLine(string.Format("Date: {0}, Who: {1}, Type: {2}, Memo: {3}, Amount: {4}", transaction.CreatedAt, transaction.SubscriptionID, transaction.ProductID, transaction.Memo, transaction.Amount)); // } //} }
public bool PostOrder(int orderId) { bool result = false; Order orderItem = new OrderManager().GetBatchProcessOrder(orderId); orderItem.LoadAttributeValues(); ChargifyConnect chargify = new ChargifyConnect(); chargify.apiKey = config.Attributes["APIKey"].Value; chargify.Password = config.Attributes["Password"].Value; chargify.URL = config.Attributes["site"].Value; // Retrieve a list of all your products //IDictionary<int, IProduct> products = chargify.GetProductList(); // Create a new customer ICustomer newCustomer = chargify.CreateCustomer(orderItem.CustomerInfo.ShippingAddress.FirstName, orderItem.CustomerInfo.ShippingAddress.LastName, orderItem.Email, "ConversionSystems", "CS_" + "DC_" + orderItem.OrderId.ToString()); newCustomer.Email = orderItem.Email; newCustomer.ShippingAddress = orderItem.CustomerInfo.ShippingAddress.Address1 + "," + orderItem.CustomerInfo.ShippingAddress.Address2; newCustomer.ShippingCity = orderItem.CustomerInfo.ShippingAddress.City; newCustomer.ShippingCountry = orderItem.CustomerInfo.ShippingAddress.CountryCode; newCustomer.ShippingState = orderItem.CustomerInfo.ShippingAddress.StateProvinceName; newCustomer.ShippingZip = orderItem.CustomerInfo.ShippingAddress.ZipPostalCode; // Create a new customer and subscription //ICustomerAttributes charlie = new CustomerAttributes(orderItem.CustomerInfo.BillingAddress.FirstName, orderItem.CustomerInfo.BillingAddress.LastName, orderItem.Email, "", "CS_" + "DC_" + orderItem.OrderId.ToString()); //charlie.ShippingAddress = orderItem.CustomerInfo.ShippingAddress.Address1 + "," + orderItem.CustomerInfo.ShippingAddress.Address2; //charlie.ShippingCity = orderItem.CustomerInfo.ShippingAddress.City; //charlie.ShippingCountry = orderItem.CustomerInfo.ShippingAddress.CountryCode; //charlie.ShippingState = orderItem.CustomerInfo.ShippingAddress.StateProvinceName; //charlie.ShippingZip = orderItem.CustomerInfo.ShippingAddress.ZipPostalCode; ICreditCardAttributes charliesPaymentInfo = new CreditCardAttributes(); charliesPaymentInfo.FirstName = orderItem.CustomerInfo.BillingAddress.FirstName; charliesPaymentInfo.LastName = orderItem.CustomerInfo.BillingAddress.LastName; charliesPaymentInfo.ExpirationMonth = Convert.ToInt32(orderItem.CreditInfo.CreditCardExpired.ToString("MM")); charliesPaymentInfo.ExpirationYear = Convert.ToInt32(orderItem.CreditInfo.CreditCardExpired.ToString("yyyy")); charliesPaymentInfo.FullNumber = orderItem.CreditInfo.CreditCardNumber; charliesPaymentInfo.CVV = orderItem.CreditInfo.CreditCardCSC; charliesPaymentInfo.BillingAddress = orderItem.CustomerInfo.BillingAddress.Address1 + "," + orderItem.CustomerInfo.BillingAddress.Address2; charliesPaymentInfo.BillingCity = orderItem.CustomerInfo.BillingAddress.City; charliesPaymentInfo.BillingCountry = orderItem.CustomerInfo.BillingAddress.CountryCode; charliesPaymentInfo.BillingState = orderItem.CustomerInfo.BillingAddress.StateProvinceName; charliesPaymentInfo.BillingZip = orderItem.CustomerInfo.BillingAddress.ZipPostalCode; ISubscription newSubscription; Dictionary <string, AttributeValue> orderAttributes = new Dictionary <string, AttributeValue>(); foreach (Sku Item in orderItem.SkuItems) { try { newSubscription = chargify.CreateSubscription(Item.SkuCode.ToLower(), newCustomer.ChargifyID, charliesPaymentInfo); if (newSubscription == null) { orderAttributes.Add("ChargifyCustomerId", new CSBusiness.Attributes.AttributeValue(newCustomer.ChargifyID.ToString())); orderAttributes.Add("ChargifySubscriptionId", new CSBusiness.Attributes.AttributeValue(newSubscription.SubscriptionID.ToString())); result = true; } else { result = false; } } catch { } } if (result) { CSResolve.Resolve <IOrderService>().UpdateOrderAttributes(orderId, orderAttributes, 2); } else { CSResolve.Resolve <IOrderService>().UpdateOrderAttributes(orderId, orderAttributes, 7); } return(result); }
public static bool RegisterCreditCard(ChargifyConnect chargify, Guid OrgId, Guid InstId, string OrgName, string InstName, string UserEmail, string UserFirstName, string UserLastName, string CardNumber, string CardExprMonth, string CardExprYear, int GraceDays, out string errorMessage) { errorMessage = string.Empty; string _CustSystemId = OrgId.ToString() + "," + InstId.ToString(); ICustomer _cust = chargify.LoadCustomer(_CustSystemId); ISubscription _subscr = null; try { if (_cust == null) { errorMessage = "Can't create Chargify Customer!"; _cust = new Customer(); _cust.SystemID = _CustSystemId; _cust.Organization = OrgName + " " + InstName; _cust.Email = UserEmail; _cust.FirstName = UserFirstName; _cust.LastName = UserLastName; _cust = chargify.CreateCustomer(_cust); } else if (_cust.Organization != OrgName + " " + InstName || _cust.Email != UserEmail || _cust.FirstName != UserFirstName || _cust.LastName != UserLastName) { errorMessage = "Can't update Chargify Customer!"; _cust.Organization = OrgName + " " + InstName; _cust.Email = UserEmail; _cust.FirstName = UserFirstName; _cust.LastName = UserLastName; _cust = chargify.UpdateCustomer(_cust); errorMessage = "Can't get Chargify Customer Substriction!"; _subscr = ChargifyProvider.GetCustomerSubscription(chargify, _cust.ChargifyID); } else { errorMessage = "Can't get Chargify Customer Substriction!"; _subscr = ChargifyProvider.GetCustomerSubscription(chargify, _cust.ChargifyID); } } catch (ChargifyException cex) { if ((int)cex.StatusCode != 422) { errorMessage += " " + cex.Message; } return(false); } catch (Exception ex) { errorMessage += " " + ex.Message; return(false); } errorMessage = string.Empty; if (CardNumber.Contains("XXXX")) { if (_subscr != null && _subscr.CreditCard != null && _subscr.State != SubscriptionState.Active) { try { chargify.ReactivateSubscription(_subscr.SubscriptionID); } catch (Exception ex) { errorMessage = "Can't reactivate Customer Subscription! " + ex.Message; return(false); } return(true); } errorMessage = "Invalid Credit Card Information!"; return(false); } CreditCardAttributes _ccattr = new CreditCardAttributes(_cust.FirstName, _cust.LastName, CardNumber, 2000 + int.Parse(CardExprYear), int.Parse(CardExprMonth), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty); try { if (_subscr == null) { errorMessage = "Can't create Chargify Subscription!"; _subscr = chargify.CreateSubscription(ChargifyProvider.GetProductHandle(), _cust.ChargifyID, _ccattr); chargify.UpdateBillingDateForSubscription(_subscr.SubscriptionID, DateTime.UtcNow.AddDays(GraceDays)); } else { errorMessage = "Can't update Chargify Subscription!"; chargify.UpdateSubscriptionCreditCard(_subscr, _ccattr); if (_subscr.State != SubscriptionState.Active) { chargify.ReactivateSubscription(_subscr.SubscriptionID); } } } catch (ChargifyException cex) { if ((int)cex.StatusCode == 422) { errorMessage += " Invalid Credit Card Information!"; } else { errorMessage += " " + cex.Message; } return(false); } catch (Exception ex) { errorMessage += " " + ex.Message; return(false); } errorMessage = string.Empty; return(true); }
public ActionResult Local(LocalSignup model, string id) { try { if (ModelState.IsValid) { // Attempt to register the user Guid userId = Guid.NewGuid(); var newUser = WebSecurity.CreateUserAndAccount(model.User.UserName, model.User.Password, new { Email = model.UserContact.EmailAddress, UserId = userId }); if (newUser != null) { if (!Roles.RoleExists("user")) { Roles.CreateRole("user"); } Roles.AddUsersToRoles(new string[] { model.User.UserName }, new string[] { "User" }); // Now that the user is created, attempt to create the corresponding subscription var customerInfo = new CustomerAttributes() { FirstName = model.UserContact.FirstName, LastName = model.UserContact.LastName, Email = model.UserContact.EmailAddress, SystemID = userId.ToString() }; var paymentAttributes = new CreditCardAttributes() { FullNumber = model.UserPayment.CardNumber.Trim(), CVV = model.UserPayment.CVV, ExpirationMonth = model.UserPayment.ExpirationMonth, ExpirationYear = model.UserPayment.ExpirationYear, BillingAddress = model.UserAddress.Address, BillingCity = model.UserAddress.City, BillingZip = model.UserAddress.Zip, BillingState = model.UserAddress.State, BillingCountry = model.UserAddress.Country }; try { var newSubscription = Chargify.CreateSubscription(id, customerInfo, paymentAttributes); WebSecurity.Login(model.User.UserName, model.User.Password, false); return(RedirectToAction("Index", "Site")); } catch (ChargifyException ex) { if (ex.ErrorMessages.Count > 0) { ModelState.AddModelError("", ex.ErrorMessages.FirstOrDefault().Message); } else { ModelState.AddModelError("", ex.ToString()); } } } else { //ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); } } return(RedirectToAction("Index")); } catch { return(View()); } }