コード例 #1
0
        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);
        }
コード例 #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  = Faker.Address.StreetAddress(false),
                BillingCity     = Faker.Address.City(),
                BillingCountry  = "US",
                BillingState    = Faker.Address.StateAbbr(),
                BillingZip      = Faker.Address.ZipCode()
            };

            return(retVal);
        }
コード例 #3
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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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));
        }
コード例 #6
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 (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"));
        }
コード例 #7
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));
            //    }
            //}
        }
コード例 #8
0
        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);
        }
コード例 #9
0
ファイル: ChargifyProvider.cs プロジェクト: jy4618272/Common
        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);
        }
コード例 #10
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());
            }
        }