ICheckoutManagerBase (Checkout)
CheckoutManagers
are used to manage the most aspects of the checkout workflow. Merchello's default CheckoutManager is the BasketCheckoutManager
which is intended to be used for basket checkout outs.
CheckoutManager supersede the SalePreparation in earlier versions.
Prior to Merchello 1.14.0, the SalePreparation class was used to manage the checkout workflow.
The CheckoutManager breaks down the checkout workflow into several logical areas which can be seen in the ICheckoutManagerBase
interface. Each area is managed by a specific lazy loaded area checkout manager.
/// <summary>
/// Defines the base checkout workflow.
/// </summary>
public interface ICheckoutManagerBase : ICheckoutContextManagerBase
{
/// <summary>
/// Gets the checkout manager for customer information.
/// </summary>
ICheckoutCustomerManager Customer { get; }
/// <summary>
/// Gets the checkout extended manager for custom invoicing.
/// </summary>
ICheckoutExtendedManager Extended { get; }
/// <summary>
/// Gets the checkout manager for marketing offers.
/// </summary>
ICheckoutOfferManager Offer { get; }
/// <summary>
/// Gets the checkout manager for shipping.
/// </summary>
ICheckoutShippingManager Shipping { get; }
/// <summary>
/// Gets the payment.
/// </summary>
ICheckoutPaymentManager Payment { get; }
}
Contextual information is shared between the managers via a CheckoutContext .
// IBasket extension method
var checkoutManager = CurrentCustomer.Basket().GetCheckoutManager([optional settings]);
ICheckoutCustomerManager
ICheckoutCustomerManager(s) are responsible for temporarily saving and retrieving previously saved customer information during the course of a checkout workflow.
// ICheckoutCustomerManager of type BasketCheckoutCustomerManager
var customerManager = CurrentCustomer.Basket().GetCheckoutManager().Customer;
Name | Description |
---|---|
SaveBillToAddress(IAddress billToAddress) | Saves the bill to address |
SaveShipToAddress(IAddress shipToAddress) | Saves the ship to address |
IAddress GetBillToAddress() | Gets the bill to address |
IAddress GetShipToAddress() | Gets the bill to address |
CheckoutContext.ChangeSettings.ResetCustomerManagerDataOnVersionChange = true;
Default context behavior for BasketCheckoutCustomerManager
When the
CheckoutContext
resets to a new version, the default behavior for theBasketCheckoutCustomerManager
is to purge any previously saved billing and shipping addresses.
ICheckoutExtendedManager
ICheckoutExtendedManager(s) are responsible for handling optional bits of a checkout workflow, such as adding custom line items and adding notes to an invoice.
var checkoutExtendedManager = CurrentCustomer.Basket().GetCheckoutManager([optional settings]).Extended;
Name | Description |
---|---|
AddItem(ILineItem lineItem) | Adds a to the collection of items. Intended for custom line item types. |
RemoveItem(ILineItem lineItem) | Removes a line item from the collection of items. The line item to be removed. |
ClearNotes() | Clears all notes |
SaveNotes(IEnumerable messages) | Saves a list of messages for creating individual invoice notes |
AddNote(string message) | Adds to get associated with the invoice as a note on invoice creation. |
IEnumerable GetNotes() | Gets any previously added notes. |
CheckoutContext.ChangeSettings.ResetExtendedManagerDataOnVersionChange = true;
Default context behavior for BasketCheckoutExtendedManager
When the
CheckoutContext
resets to a new version, the default behavior for theBasketCheckoutExtendedManager
is to purge any previously saved notes.
ICheckoutOfferManager
ICheckoutOfferManager(s) are responsible for temporarily saving, retrieving and applying marketing offers, coupon offers by default, respective to a sale during the course of a checkout workflow.
var checkoutOfferManager = CurrentCustomer.Basket().GetCheckoutManager([optional settings]).Offer;
Name | Description |
---|---|
OfferCodes | Gets the collection of previously saved offer codes. |
RemoveOfferCode(string offerCode) | Removes an offer code from the OfferCodes collection. |
ClearOfferCodes() | Clears the offer codes collection |
RedeemCouponOffer(string offerCode) | Attempts to redeem an offer to the sale. Returns IOfferRedemptionResult where a successful result containing a discount line item. |
CheckoutContext.ChangeSettings.ResetOfferManagerDataOnVersionChange = true;
Default context behavior for BasketCheckoutOfferManager
When the
CheckoutContext
resets to a new version, the default behavior for theBasketCheckoutOfferManager
is to purge any previously saved offer codes.
ICheckoutShippingManager
ICheckoutShippingManager(s) are responsible for saving and retrieving shipping rate quotes during the course of a checkout workflow.
var checkoutShippingManager = CurrentCustomer.Basket().GetCheckoutManager([optional settings]).Shipping;
Name | Description |
---|---|
SaveShipmentRateQuote(IShipmentRateQuote approvedShipmentRateQuote) | Saves a IShipmentRateQuote as a shipment line item |
SaveShipmentRateQuote(IEnumerable approvedShipmentRateQuotes) | Saves a collection of IShipmentRateQuote s as shipment line items |
ClearShipmentRateQuotes() | Clears all IShipmentRateQuote s previously saved |
CheckoutContext.ChangeSettings.ResetShippingManagerDataOnVersionChange = true;
Default context behavior for BasketCheckoutShippingManager
When the
CheckoutContext
resets to a new version, the default behavior for theBasketCheckoutShippingManager
is to purge any previously saved shipping rate quotes.
ICheckoutPaymentManager
ICheckoutShippingManager(s) are responsible for saving and retrieving payment methods during the course of a checkout workflow.
Name | Description |
---|---|
IsReadyToInvoice() | True/false indicating whether or not the ICheckoutPaymentManager is ready to prepare an IInvoice |
PrepareInvoice() | Generates an IInvoice |
PrepareInvoice(IBuilderChain invoiceBuilder) | Generates an IInvoice representing the bill for the current "checkout order" |
ClearPaymentMethod() | Removes a previously saved payment method |
SavePaymentMethod(IPaymentMethod paymentMethod) | Saves a IPaymentMethod |
GetPaymentGatewayMethods() | Gets a list of all possible Payment Methods |
GetPaymentMethod() | Gets the previously saved IPaymentMethod |
AuthorizePayment(IPaymentGatewayMethod paymentGatewayMethod, ProcessorArgumentCollection args) | Attempts to process a payment |
AuthorizePayment(IPaymentGatewayMethod paymentGatewayMethod) | Attempts to process a payment |
AuthorizePayment(Guid paymentMethodKey, ProcessorArgumentCollection args) | Attempts to process a payment |
AuthorizePayment(Guid paymentMethodKey) | Attempts to process a payment |
AuthorizeCapturePayment(IPaymentGatewayMethod paymentGatewayMethod, ProcessorArgumentCollection args) | Attempts to Authorize and Capture a Payment |
AuthorizeCapturePayment(IPaymentGatewayMethod paymentGatewayMethod) | Attempts to Authorize and Capture a Payment |
AuthorizeCapturePayment(Guid paymentMethodKey, ProcessorArgumentCollection args) | Attempts to Authorize and Capture a Payment |
AuthorizeCapturePayment(Guid paymentMethodKey) | Attempts to Authorize and Capture a Payment |
CheckoutContext.ChangeSettings.ResetPaymentManagerDataOnVersionChange = true;
Default context behavior for BasketCheckoutPaymentManager
When the
CheckoutContext
resets to a new version, the default behavior for theBasketCheckoutPaymentManager
is to purge any previously saved payment methods.
Replacing the default CheckoutManager(s)
Developers can write their own area managers to augment the default behavior and provide additional application specific functionality by implementing the following
Checkout area | Base class |
---|---|
Customer | CheckoutCustomerManagerBase |
Extended | CheckoutExtendedManagerBase |
Offer | CheckoutOfferManagerBase |
Payment | CheckoutPaymentManagerBase |
Shipping | CheckoutShippingManagerBase |
After you've created your class, you can then modify the type reference in the Merchello.config
<pluggable>
<object alias="CustomerContext" type="Merchello.Web.CustomerContext, Merchello.Web" />
<object alias="BasketCheckoutCustomerManager" type="Merchello.Web.Workflow.Checkout.BasketCheckoutCustomerManager, Merchello.Web" />
<object alias="BasketCheckoutOfferManager" type="Merchello.Web.Workflow.Checkout.BasketCheckoutOfferManager, Merchello.Web" />
<object alias="BasketCheckoutShippingManager" type="Merchello.Web.Workflow.Checkout.BasketCheckoutShippingManager, Merchello.Web" />
<object alias="BasketCheckoutExtendedManager" type="Merchello.Web.Workflow.Checkout.BasketCheckoutExtendedManager, Merchello.Web" />
<object alias="BasketCheckoutPaymentManager" type="Merchello.Web.Workflow.Checkout.BasketCheckoutPaymentManager, Merchello.Web" />
</pluggable>
Updated less than a minute ago