Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at

  • Frans Lammers 34 posts 297 karma points c-trib
    May 23, 2017 @ 09:01
    Frans Lammers

    Problem with Merchello checkout


    We're building a shop using Merchello using FastTrack as an example.

    I installed Merchello without the fasttrack and I am able to call most steps in the process. I can add and remove products to the basket. For example adding products to the basket I do by using the next line in my view:

    @Html.Action("AddProductToBasketForm", "StoreBasket", new { area = "Merchello", model = Model })

    But when I try to implement the checkout I run into a problem. In my view I use:

    @Html.Action("BillingAddressForm", "CheckoutAddress", new { area = "Merchello" })

    but when I run it I get the yellow screen saying "No route in the route table matches the supplied values."

    Do I call the wrong method or do I forget something?

  • Frans Lammers 34 posts 297 karma points c-trib
    May 24, 2017 @ 14:20
    Frans Lammers

    Since I didn't find the answer yet, I tried to make a very simple Surfacecontroller to test like so:

    public class TestCheckoutController : MerchelloSurfaceController
        public ActionResult Checkout()
            var currentCustomer = new CustomerContext(Umbraco.UmbracoContext).CurrentCustomer;
            if (!currentCustomer.IsAnonymous)
                var basket = currentCustomer.Basket();
                var checkoutManager = basket.GetCheckoutManager();
                var billingAddress = checkoutManager.Customer.GetBillToAddress();
                var shippingAddress = checkoutManager.Customer.GetShipToAddress();
            return View();

    After the shippingAddress I put a breakpoint. When I reach this breakpoint I can see that both currentCustomer and checkoutManager.Customer contain the addresses I entered in the backoffice.

    But: both billingAddress and shippingAddress are empty, the GetBillToAddress() and GetShipToAddress() methods return null.

    I have not found any example of how to make a simple checkout procedure. In an old forum-topic I found a reference to but that leads to an errorpage.

    How do I have to setup the checkout in Merchello?

  • Lee 1123 posts 3059 karma points
    May 30, 2017 @ 08:35

    You have the wrong route for the billing address. It should be in the fasttrack

    @Html.Action("BillingAddressForm", "CheckoutAddress", new { area = "FastTrack" })

    Not area = Merchello.

  • Lee 1123 posts 3059 karma points
    May 30, 2017 @ 08:43

    Sorry, I've just re-read that. You will need FastTrack to use that action as FastTrack is the implementation of our starter kit.

    I realise it's a bit confusing with some using the area = merchello and some using the area = fasttrack.

    But have a read of this post for more info:

    You can pull in the fasttrack binaries using the nuget package

    It won't create all the FastTrack site but it will enable you to use the Actions you are trying to use, such as these

    Basket Summary

    @Html.Action("BasketSummary", "CheckoutSummary", new { area = "FastTrack" })

    Render the Invoice Summary

    @Html.Action("InvoiceSummary", "CheckoutSummary", new { area = "FastTrack" })

    Render the SalesReceipt

    @Html.Action("SalesReceipt", "CheckoutSummary" ,new { area = "FastTrack" })

    Render the Billing Address Form

    @Html.Action("BillingAddressForm", "CheckoutAddress", new { area = "FastTrack" });

    Render the ShippingAddressForm

    @Html.Action("ShippingAddressForm", "CheckoutAddress", new { area = "FastTrack" })

    Render the Shipping Rate Quote form

    @Html.Action("ShipRateQuoteForm", "CheckoutShipRateQuote", new { area = "FastTrack" })

    Render the PaymentMethodForm

    @Html.Action("PaymentMethodForm", "CheckoutPaymentMethod", new { area = "FastTrack" })

    Render the ResolvePayment

    @Html.Action("ResolvePayment", "CheckoutPaymentMethod", new { area = "FastTrack" })

    Render the LoginForm

    @Html.Action("LoginForm", "CustomerMembership", new { area = "FastTrack" })

    Render the RegisterForm

    @Html.Action("RegisterForm", "CustomerMembership", new { area = "FastTrack" })

    Render the CustomerSalesHistory

    @Html.Action("CustomerSalesHistory", "CustomerMembership", new { area = "FastTrack" })

    Render the CustomerBillingAddress

    @Html.Action("CustomerBillingAddress", "CustomerMembership", new { area = "FastTrack" })

    Render the CustomerShippingAddress

    @Html.Action("CustomerShippingAddress", "CustomerMembership", new { area = "FastTrack" })
  • Frans Lammers 34 posts 297 karma points c-trib
    May 30, 2017 @ 13:25
    Frans Lammers

    Hi Lee,

    Thanks for your answer!

    The project I am working on is in fact a very simple store: there is only one shipping and one payment method, all customers need to login before ordering and have a static billing address.

    At the moment I have got the custom surfacecontroller working and will go on with that one, but for future projects I will certainly use the fasttrack binaries and the overview of checkout-actions you have given here!

Please Sign in or register to post replies

Write your reply to: