Don't miss out Virtual Happy Hour this Friday (April 26).

Try our conversational search powered by Generative AI!

Loading...
Applies to versions: 14 and higher
Other versions:
ARCHIVED This content is retired and no longer maintained. See the version selector for other versions of this topic.

Shipping methods

Recommended reading 
Note: This documentation is for the preview version of the upcoming release of CMS 12/Commerce 14/Search & Navigation 14. Features included here might not be complete, and might be changed before becoming available in the public release. This documentation is provided for evaluation purposes only.

A shipping method manages information and rules that determine shipping cost and displays that information on the front-end site during checkout. The shipping cost is added to the total purchase price.

A shipping method is mapped to a Shipping Provider, visible to a back-end administrator in Commerce Manager. So, the public site can display friendly names (such as Ground Shipping), which are mapped to a provider, such as UPS. If a customer picks Ground Shipping, UPS is used.

See Shipping Gateways and Providers for information about creating gateways and providers.

Classes in this topic are available in the Mediachase.Commerce.Orders.Dto namespace.

Adding a shipping method

Go to Commerce Administration => Shippping Tab => Shipping Method to see all the existing shipping methods available per selected langauge.

Click Create to add a new shipping method and fill out details like name, friendly name, description, provider, language, base price, currency, active, and default. See the Optimizely User Guide how to work with shipping.

imagexyy2.png

Accessing shipping information

The following example shows how to display shipping methods to users and the respective rates for each, based on the current cart.

//Get the list of all shipping methods to be filtered 
ShippingMethodDto methods = ShippingManager.GetShippingMethods(SiteContext.Current.LanguageName);  

// filter the list for only methods that apply to this particular cart's shipping address 
List<ShippingMethodDto.ShippingMethodRow> shippingRows = new List<ShippingMethodDto.ShippingMethodRow>(); 

foreach (ShippingMethodDto.ShippingMethodRow method in methods.ShippingMethod.Rows) 
  {
    shippingRows.Add(method); 
  }

List<ShippingRate> list = new List<ShippingRate>(); 

foreach (ShippingMethodDto.ShippingMethodRow row in shippingRows) 
  { 
    Type type = Type.GetType(row.ShippingOptionRow.ClassName); 
    string message = String.Empty; 
    IShippingGateway provider = (IShippingGateway)Activator.CreateInstance(type); 

    List<LineItem> items = new List<LineItem>(); 

    foreach(LineItem lineItem in CartHelper.LineItems) 
      {
        items.Add(lineItem); 
      }

    if (items.Count > 0) 
      {
        list.Add(provider.GetRate(row.ShippingMethodId, items.ToArray(), ref message)); 
      }
  }

To store information for a selected shipping method, use the LineItemproperties. You do not need to create a shipment object, since the Cart Prepare workflow handles this.

ShippingMethodDto methods = ShippingManager.GetShippingMethods(SiteContext.Current.LanguageName); 

ShippingMethodDto.ShippingMethodRow row = methods.ShippingMethod.FindByShippingMethodId(new Guid(ShippingRatesList.SelectedValue)); 
foreach (LineItem lineItem in CartHelper.LineItems) 
  { 
    lineItem.ShippingMethodName = row.DisplayName; 
    lineItem.ShippingMethodId = row.ShippingMethodId; 
  }
Do you find this information helpful? Please log in to provide feedback.

Last updated: Jul 02, 2021

Recommended reading