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(); } }
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 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 void Subscription_Can_Update_Payment_FirstLast() { // Arrange var client = this.Chargify; var subscription = client.GetSubscriptionList().FirstOrDefault(s => s.Value.State == ChargifyNET.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(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 (!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 = user.ProviderUserKey.ToString(); 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"; try { ISubscription newSubscription = Chargify.CreateSubscription(id, cInfo, ccAttr); FormsService.SignIn(model.Username, false /* createPersistentCookie */); 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("Subscribe"); } else { return RedirectToAction("Subscribe", new { id = id }); } }