Add additional information
This section explains how to add additional information to an order using checkout flow.
Additional information can be added to the order, the delivery or the payment. Usually the information common to the entire order is added as AdditionalOrderInfo, and information that is specific to deliveries are added as AdditionalDeliveryInfo. AdditionalPaymentInfo is usually added by the payment provider plugins.
The following code demonstrates how to add addtiional payment info.
using System;
using Litium.Foundation.Modules.ECommerce;
using Litium.Foundation.Modules.ECommerce.Carriers;
using Litium.Foundation.Security;
using Litium.Foundation.Modules.CMS;
using Litium.Foundation.Modules.CMS.GUI.Templates;
public partial class Site_Samples_Checkout_CheckoutAddAdditionalInfo : BaseTemplate
{
protected void Page_Load(object sender, EventArgs e)
{
}
void AddAdditionalInfo()
{
var currentOrderCarrier = CurrentState.Current.ShoppingCart.OrderCarrier;
//add some sample additional payment info to all payments.
currentOrderCarrier.PaymentInfo.ForEach
(x => CreateOrUpdateAdditionalPaymentInfo(x, "SampleAdditionalInfo", "SampleValue", CurrentState.Current.Token));
}
/// <summary>
/// Creates or updates additional payment info.
/// </summary>
/// <param name="paymentInfoCarrier"></param>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="token"></param>
public void CreateOrUpdateAdditionalPaymentInfo(PaymentInfoCarrier paymentInfoCarrier, string key, string value, SecurityToken token)
{
AdditionalPaymentInfoCarrier additionalInfo = paymentInfoCarrier.AdditionalPaymentInfo.Find(x => x.Key == key);
if (additionalInfo == null)
{
additionalInfo = new AdditionalPaymentInfoCarrier(key, paymentInfoCarrier.ID,value);
paymentInfoCarrier.AdditionalPaymentInfo.Add(additionalInfo);
}
else
additionalInfo.Value = value;
}
}
Adding additional order info and addtional delivery info follows the same pattern as above.