Esempio n. 1
0
        public Order(AutoGen.MerchantCalculationCallback Callback)
        {
            _ShoppingCart = Callback.shoppingcart;

            _OrderLines = new ArrayList();
            for (int i = 0; i < Callback.shoppingcart.items.Length; i++)
            {
                AutoGen.Item ThisItem = Callback.shoppingcart.items[i];

                XmlNode[] merchantItemPrivateDataNodes = new XmlNode[] {};

                if (ThisItem.merchantprivateitemdata != null &&
                    ThisItem.merchantprivateitemdata.Any != null &&
                    ThisItem.merchantprivateitemdata.Any.Length > 0)
                {
                    merchantItemPrivateDataNodes = ThisItem.merchantprivateitemdata.Any;
                }
                _OrderLines.Add(
                    new OrderLine(ThisItem.itemname, ThisItem.itemdescription,
                                  ThisItem.quantity, ThisItem.unitprice.Value,
                                  ThisItem.taxtableselector,
                                  merchantItemPrivateDataNodes));
            }

            if (Callback.shoppingcart.merchantprivatedata != null &&
                Callback.shoppingcart.merchantprivatedata.Any != null &&
                Callback.shoppingcart.merchantprivatedata.Any.Length > 0)
            {
                _MerchantPrivateDataNodes = Callback.shoppingcart.merchantprivatedata.Any;
            }
        }
Esempio n. 2
0
 public Order(AutoGen.MerchantCalculationCallback Callback)
 {
     _OrderLines = new ArrayList();
     for (int i = 0; i < Callback.shoppingcart.items.Length; i++)
     {
         AutoGen.Item ThisItem = Callback.shoppingcart.items[i];
         _OrderLines.Add(
             new OrderLine(ThisItem.itemname, ThisItem.itemdescription,
                           ThisItem.quantity, ThisItem.unitprice.Value,
                           ThisItem.taxtableselector));
     }
 }
        /// <summary>
        /// Convert the item to an auto gen item.
        /// </summary>
        /// <param name="item">The item to convert</param>
        /// <param name="currency">The currency</param>
        /// <returns></returns>
        public static AutoGen.Item CreateAutoGenItem(IShoppingCartItem item,
            string currency)
        {
            GCheckout.AutoGen.Item currentItem = new AutoGen.Item();

              currentItem.itemname = EncodeHelper.EscapeXmlChars(item.Name);
              currentItem.itemdescription =
            EncodeHelper.EscapeXmlChars(item.Description);
              currentItem.quantity = item.Quantity;

              //if there is a subscription, you may not have a unit price

              if (item.Subscription != null && item.Price > 0) {
            throw new ApplicationException(
              "The unit price must be 0 if you are using a subscription item.");
              }

              currentItem.unitprice = new AutoGen.Money();
              currentItem.unitprice.currency = currency;
              currentItem.unitprice.Value = item.Price;

              //TODO determine if we should try to catch if a UK customer tries to
              //use this value.
              if (item.Weight > 0) {
            currentItem.itemweight = new AutoGen.ItemWeight();
            currentItem.itemweight.unit = "LB"; //this is the only option.
            currentItem.itemweight.value = item.Weight;
              }

              if (item.MerchantItemID != null
            && item.MerchantItemID.Length > 0) {
            currentItem.merchantitemid = item.MerchantItemID;
              }

              if (item.MerchantPrivateItemDataNodes != null
            && item.MerchantPrivateItemDataNodes.Length > 0) {
            AutoGen.anyMultiple any = new AutoGen.anyMultiple();

            any.Any = item.MerchantPrivateItemDataNodes;
            currentItem.merchantprivateitemdata = any;
              }

              if (item.TaxTable != null &&
            item.TaxTable != AlternateTaxTable.Empty) {
            currentItem.taxtableselector = item.TaxTable.Name;
              }

              //if we have a digital item then we need to append the information
              if (item.DigitalContent != null) {
            currentItem.digitalcontent = new GCheckout.AutoGen.DigitalContent();
            //we have one of two types, email or key/url
            if (item.DigitalContent.EmailDelivery) {
              currentItem.digitalcontent.emaildelivery = true;
              currentItem.digitalcontent.emaildeliverySpecified = true;
            }
            else {
              if (item.DigitalContent.Description.Length > 0) {
            currentItem.digitalcontent.description =
              item.DigitalContent.Description;
              }
              if (item.DigitalContent.Key.Length > 0) {
            currentItem.digitalcontent.key =
              item.DigitalContent.Key;
              }
              if (item.DigitalContent.Url.Length > 0) {
            currentItem.digitalcontent.url =
              item.DigitalContent.Url;
              }
              currentItem.digitalcontent.displaydisposition
            = item.DigitalContent.GetSerializedDisposition();
            }
              }

              //see if we have subscription information
              if (item.Subscription != null) {
            if (item.Subscription.RecurrentItem == null) {
              throw new ApplicationException(
            "You must set a RecurrentItem for a subscription.");
            }
            Subscription sub = item.Subscription;
            //we have to assume the item was validated
            currentItem.subscription = new GCheckout.AutoGen.Subscription();
            GCheckout.AutoGen.Subscription autoSub = currentItem.subscription;
            if (sub.NoChargeAfter.HasValue) {
              autoSub.nochargeafter = sub.NoChargeAfter.Value;
              autoSub.nochargeafterSpecified = true;
            }
            autoSub.payments
              = new GCheckout.AutoGen.SubscriptionPayment[sub.Payments.Count];
            for (int sp = 0; sp < sub.Payments.Count; sp++) {
              SubscriptionPayment payment = sub.Payments[sp];
              autoSub.payments[sp] = new GCheckout.AutoGen.SubscriptionPayment();
              autoSub.payments[sp].maximumcharge
            = EncodeHelper.Money(currency, payment.MaximumCharge);
              if (payment.Times > 0) {
            autoSub.payments[sp].times = payment.Times;
            autoSub.payments[sp].timesSpecified = true;
              }
              autoSub.period = sub.Period;
              if (sub.RecurrentItem != null
            && sub.RecurrentItem.Subscription != null) {
            throw new ApplicationException(
              "A RecurrentItem may not contain a subscription.");
              }
              //call this method to create the recurrent item.
              autoSub.recurrentitem
            = ShoppingCartItem.CreateAutoGenItem(sub.RecurrentItem, currency);
              if (sub.StartDate.HasValue) {
            autoSub.startdate = sub.StartDate.Value;
            autoSub.startdateSpecified = true;
              }
              autoSub.type = sub.Type.ToString();
            }
              }
              return currentItem;
        }
        /// <summary>
        /// Convert the item to an auto gen item.
        /// </summary>
        /// <param name="item">The item to convert</param>
        /// <param name="currency">The currency</param>
        /// <returns></returns>
        public static AutoGen.Item CreateAutoGenItem(IShoppingCartItem item,
                                                     string currency)
        {
            GCheckout.AutoGen.Item currentItem = new AutoGen.Item();

            currentItem.itemname        = EncodeHelper.EscapeXmlChars(item.Name);
            currentItem.itemdescription =
                EncodeHelper.EscapeXmlChars(item.Description);
            currentItem.quantity = item.Quantity;

            //if there is a subscription, you may not have a unit price

            if (item.Subscription != null && item.Price > 0)
            {
                throw new ApplicationException(
                          "The unit price must be 0 if you are using a subscription item.");
            }

            currentItem.unitprice          = new AutoGen.Money();
            currentItem.unitprice.currency = currency;
            currentItem.unitprice.Value    = item.Price;

            //TODO determine if we should try to catch if a UK customer tries to
            //use this value.
            if (item.Weight > 0)
            {
                currentItem.itemweight       = new AutoGen.ItemWeight();
                currentItem.itemweight.unit  = "LB"; //this is the only option.
                currentItem.itemweight.value = item.Weight;
            }

            if (item.MerchantItemID != null &&
                item.MerchantItemID.Length > 0)
            {
                currentItem.merchantitemid = item.MerchantItemID;
            }

            if (item.MerchantPrivateItemDataNodes != null &&
                item.MerchantPrivateItemDataNodes.Length > 0)
            {
                AutoGen.anyMultiple any = new AutoGen.anyMultiple();

                any.Any = item.MerchantPrivateItemDataNodes;
                currentItem.merchantprivateitemdata = any;
            }

            if (item.TaxTable != null &&
                item.TaxTable != AlternateTaxTable.Empty)
            {
                currentItem.taxtableselector = item.TaxTable.Name;
            }

            //if we have a digital item then we need to append the information
            if (item.DigitalContent != null)
            {
                currentItem.digitalcontent = new GCheckout.AutoGen.DigitalContent();
                //we have one of two types, email or key/url
                if (item.DigitalContent.EmailDelivery)
                {
                    currentItem.digitalcontent.emaildelivery          = true;
                    currentItem.digitalcontent.emaildeliverySpecified = true;
                }
                else
                {
                    if (item.DigitalContent.Description.Length > 0)
                    {
                        currentItem.digitalcontent.description =
                            item.DigitalContent.Description;
                    }
                    if (item.DigitalContent.Key.Length > 0)
                    {
                        currentItem.digitalcontent.key =
                            item.DigitalContent.Key;
                    }
                    if (item.DigitalContent.Url.Length > 0)
                    {
                        currentItem.digitalcontent.url =
                            item.DigitalContent.Url;
                    }
                    currentItem.digitalcontent.displaydisposition
                        = item.DigitalContent.GetSerializedDisposition();
                }
            }

            //see if we have subscription information
            if (item.Subscription != null)
            {
                if (item.Subscription.RecurrentItem == null)
                {
                    throw new ApplicationException(
                              "You must set a RecurrentItem for a subscription.");
                }
                Subscription sub = item.Subscription;
                //we have to assume the item was validated
                currentItem.subscription = new GCheckout.AutoGen.Subscription();
                GCheckout.AutoGen.Subscription autoSub = currentItem.subscription;
                if (sub.NoChargeAfter.HasValue)
                {
                    autoSub.nochargeafter          = sub.NoChargeAfter.Value;
                    autoSub.nochargeafterSpecified = true;
                }
                autoSub.payments
                    = new GCheckout.AutoGen.SubscriptionPayment[sub.Payments.Count];
                for (int sp = 0; sp < sub.Payments.Count; sp++)
                {
                    SubscriptionPayment payment = sub.Payments[sp];
                    autoSub.payments[sp] = new GCheckout.AutoGen.SubscriptionPayment();
                    autoSub.payments[sp].maximumcharge
                        = EncodeHelper.Money(currency, payment.MaximumCharge);
                    if (payment.Times > 0)
                    {
                        autoSub.payments[sp].times          = payment.Times;
                        autoSub.payments[sp].timesSpecified = true;
                    }
                    autoSub.period = sub.Period;
                    if (sub.RecurrentItem != null &&
                        sub.RecurrentItem.Subscription != null)
                    {
                        throw new ApplicationException(
                                  "A RecurrentItem may not contain a subscription.");
                    }
                    //call this method to create the recurrent item.
                    autoSub.recurrentitem
                        = ShoppingCartItem.CreateAutoGenItem(sub.RecurrentItem, currency);
                    if (sub.StartDate.HasValue)
                    {
                        autoSub.startdate          = sub.StartDate.Value;
                        autoSub.startdateSpecified = true;
                    }
                    autoSub.type = sub.Type.ToString();
                }
            }
            return(currentItem);
        }