Beispiel #1
0
        protected void SignUp_Click(object sender, EventArgs e)
        {
            int month = Int32.Parse(getValue(CreditCardExpirationMonth));
            int year = Int32.Parse(getValue(CreditCardExpirationYear));
            String ccType = CreditCardType.Items[CreditCardType.SelectedIndex].Value;

            ProductRatePlanCharge[] charges = new ProductRatePlanCharge[_chargeIds.Length];
            for (int i = 0; i < _chargeIds.Length; i++)
            {
                ProductRatePlanCharge charge = new ProductRatePlanCharge();
                charge.Id = _chargeIds[i];
                charge.ProductRatePlanId = _prpId;
                charges[i] = charge;
            }

            String subscriptionName = Name.Value + " New Signup (" + DateTime.Now.Ticks + ")";

            SubscribeResult result = zuora.subscribe(
                subscriptionName,
                charges,
                Name.Value,
                FirstName.Value,
                LastName.Value,
                WorkEmail.Value,
                WorkPhone.Value,
                Address1.Value,
                Address2.Value,
                City.Value,
                State.Value,
                Country.Value,
                PostalCode.Value,
                CreditCardType.Value,
                CreditCardNumber.Value,
                CreditCardHolderName.Value,
                month,
                year
            );

            String message = ZuoraInterface.createMessage(result);

            if (status != null)
            {
                status.Text = message;
            }
            else
            {
                Response.Write(message);
            }
        }
 public ProductRatePlanCharge MakeTestTieredProductRatePlanCharge(String prpid)
 {
     ProductRatePlanCharge prpc = new ProductRatePlanCharge();
     prpc.Name = "ApiTestRatePlanCharge";
     prpc.TriggerEvent = "ContractEffective";
     prpc.ProductRatePlanId = prpid;
     prpc.BillingPeriod = "Month";
     prpc.BillCycleDaySpecified = true;
     prpc.BillCycleDay = 1;
     prpc.BillingPeriodAlignment = "AlignToCharge";
     prpc.ProductRatePlanChargeTierData = MakeTestTieredProductRatePlanChargeTierData();
     prpc.ChargeType = "Recurring";
     prpc.ChargeModel = "Volume Pricing";
     prpc.UOM = "Each";
     return prpc;
 }
        protected RatePlanData[] makeRatePlanData(ProductRatePlanCharge[] charges)
        {
            RatePlanData[] data = new RatePlanData[charges.Length];

            for (int i = 0; i < charges.Length; i++)
            {
                ProductRatePlanCharge charge = charges[i];
                RatePlanData ratePlanData = new RatePlanData();

                RatePlan ratePlan = new RatePlan();
                ratePlanData.RatePlan = ratePlan;
                ratePlan.AmendmentType = "NewProduct";
                ratePlan.ProductRatePlanId = charge.ProductRatePlanId;

                RatePlanChargeData ratePlanChargeData = new RatePlanChargeData();
                ratePlanData.RatePlanChargeData = new RatePlanChargeData[] { ratePlanChargeData };

                RatePlanCharge ratePlanCharge = new RatePlanCharge();
                ratePlanChargeData.RatePlanCharge = ratePlanCharge;

                ratePlanCharge.ProductRatePlanChargeId = charge.Id;
                // if it has a default quantity, default to 1
                if (charge.DefaultQuantitySpecified)
                {
                    ratePlanCharge.Quantity = 1;
                }
                ratePlanCharge.QuantitySpecified = true;
                ratePlanCharge.TriggerEvent = "ServiceActivation";

                data[i] = ratePlanData;
            }

            return data;
        }
        internal SubscribeResult subscribe(
            String SubscriptionName,
            ProductRatePlanCharge[] charges,
            string Name, 
            string FirstName, 
            string LastName, 
            string WorkEmail, 
            string WorkPhone, 
            string Address1, 
            string Address2, 
            string City, 
            string State, 
            string Country, 
            string PostalCode, 
            string CreditCardType, 
            string CreditCardNumber, 
            string CreditCardHolderName, 
            int CreditCardExpirationMonth,
            int CreditCardExpirationYear)
        {
            Account acc = makeAccount(Name, "USD");
            Contact con = makeContact(FirstName, LastName, WorkEmail, WorkPhone, Address1, Address2, City, State, Country, PostalCode);

            PaymentMethod pm = makePaymentMethod(CreditCardHolderName, Address1, City, State, Country, PostalCode, CreditCardType, CreditCardNumber, CreditCardExpirationMonth, CreditCardExpirationYear);
            Subscription subscription = makeSubscription(SubscriptionName, null);

            SubscriptionData sd = new SubscriptionData();
            sd.Subscription = subscription;

            RatePlanData[] subscriptionRatePlanDataArray = makeRatePlanData(charges);
            sd.RatePlanData = subscriptionRatePlanDataArray;

            SubscribeOptions options = new SubscribeOptions();
            options.GenerateInvoice = GENERATE_INVOICE;
            options.ProcessPayments = PROCESS_PAYMENTS;

            SubscribeRequest sub = new SubscribeRequest();
            sub.Account = acc;
            sub.BillToContact = con;
            sub.PaymentMethod = pm;
            sub.SubscriptionData = sd;
            sub.SubscribeOptions = options;

            SubscribeRequest[] subscribes = new SubscribeRequest[1];
            subscribes[0] = sub;

            SubscribeResult[] result = binding.subscribe(subscribes);

            return result[0];
        }
        // BUGBUG: deal with expiration later
        public ProductRatePlanCharge[] queryChargesByProductRatePlan(String prpId)
        {
            QueryResult result = binding.query("select "+CHARGE_SELECT_LIST+" from ProductRatePlanCharge where ProductRatePlanId = '" + prpId + "'");
            zObject[] recs = (zObject[])result.records;
            ProductRatePlanCharge[] res = null;
            if (result.size > 0 && recs != null && recs.Length > 0)
            {
                res = new ProductRatePlanCharge[recs.Length];
                for (int i = 0; i < recs.Length; i++)
                {
                    res[i] = (ProductRatePlanCharge)recs[i];
                }

            }
            return res;
        }
        public ProductRatePlanHolder CreateRatePlanWithOneTimeCharge(Product product, string ratePlanName, decimal price)
        {
            var existingRatePlan = GetProductRatePlanByName(product.Id, ratePlanName);
            if (existingRatePlan != null)
            {
                throw ZuoraException.ProductPlanAlreadyExists(product, ratePlanName);
            }
            var prp = new ProductRatePlan()
                          {
                              ProductId = product.Id,
                              Name = ratePlanName,
                              EffectiveStartDate = DateTime.Now
                          };
            var r = zs.Create(prp);
            if (!r.Success)
            {
                throw ZuoraException.RatePlanCreationError(product, ratePlanName).WithZuoraError(r);
            }
            var prpId = r.Id;

            var prpc = new ProductRatePlanCharge()
                           {
                               ProductRatePlanId = prpId,
                               ChargeModel = Constants.PRODUCT_RATE_PLAN_CHARGE_MODEL_FLAT_FEE,
                               ChargeType = Constants.PRODUCT_RATE_PLAN_CHARGE_TYPE_ONE_TIME,
                               Name = Constants.PRODUCT_RATE_PLAN_CHARGE_DEFAULT_NAME,
                               TriggerEvent = Constants.PRODUCT_RATE_PLAN_CHARGE_TRIGGER_EVENT_CONTRACT_EFFECTIVE,
                               ProductRatePlanChargeTierData = new ProductRatePlanChargeTier[]
            {
                                                                       new ProductRatePlanChargeTier()
                {
                                                                               Active = true,
                                                                               Currency = Constants.CURRENCY_USD,
                                                                               Price = price,
                                                                               PriceSpecified = true, // BUGBUGBUG (maxm): shouldn't need to be included
                                                                           }
                                                                   }
                           };

            r = zs.Create(prpc);
            if (!r.Success)
                    {
                DeleteRatePlan(prpId);
                throw ZuoraException.RatePlanCreationError(product, ratePlanName).WithZuoraError(r);
                    }
            var prpcId = r.Id;
            ClearCache();
            return GetRatePlan(prpId);
        }
        private RatePlanData[] makeRatePlanData(ProductRatePlanCharge charge)
        {
            var ratePlanData = new RatePlanData();

            var ratePlan = new RatePlan();
            ratePlanData.RatePlan = ratePlan;
            ratePlan.AmendmentType = "NewProduct";
            ratePlan.ProductRatePlanId = charge.ProductRatePlanId;

            var ratePlanChargeData = new RatePlanChargeData();
            ratePlanData.RatePlanChargeData = new[] {ratePlanChargeData};

            var ratePlanCharge = new RatePlanCharge();
            ratePlanChargeData.RatePlanCharge = ratePlanCharge;

            ratePlanCharge.ProductRatePlanChargeId = charge.Id;
            ratePlanCharge.Quantity = 1;
            ratePlanCharge.QuantitySpecified = true;
            ratePlanCharge.TriggerEvent = "ServiceActivation";

            return new[] {ratePlanData};
        }