コード例 #1
0
        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();
            }
        }
コード例 #2
0
 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;
 }
コード例 #3
0
        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));
            //    }
            //}
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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 });
            }
        }