/// <summary> /// Processes the specified arguments. /// </summary> /// <param name="args">The arguments.</param> public virtual void Process(PipelineArgs args) { Assert.ArgumentNotNull(args, "args"); ShoppingCart shoppingCart = Context.Entity.GetInstance <ShoppingCart>(); PaymentProvider paymentProvider = Context.Entity.Resolve <PaymentProvider>(shoppingCart.PaymentSystem.Code); PaymentUrlResolver paymentUrlResolver = new PaymentUrlResolver(); PaymentArgs paymentArgs = new PaymentArgs { ShoppingCart = shoppingCart, PaymentUrls = paymentUrlResolver.Resolve(), }; StringBuilder description = new StringBuilder(); foreach (ShoppingCartLine shoppingCartLine in shoppingCart.ShoppingCartLines) { description.Append(shoppingCartLine.Product.Title); description.Append(", "); } paymentArgs.Description = description.ToString().Trim().TrimEnd(','); paymentProvider.Invoke(shoppingCart.PaymentSystem, paymentArgs); args.AbortPipeline(); }