For a decade of online selling, the 'flow' through the checkout has been as follows:
Several years ago, with the introduction of the One Page Checkout, AspDotNetStorefront removed the 'registration page', since it was proved to be a conversion-killer.
Still, the shopping cart page remained - on every eCommerce platform in the land ... and it has always held a puzzle ...
By the time a shopper arrives at the shopping cart page, he/she is (in principle) ready to checkout and pay.
So, if this shopper wants to use a third party checkout where his addresses and payment details are already on file, (typically, this is PayPal Express Checkout, or Amazon Checkout) ... then he or she does NOT want to head into the store's own checkout where he will have to re-type his billing address and his shipping address.
And yet, until now, the shopper was pretty much forced to head to PayPal/Amazon at this point, even though he still did not know the full cost of his shopping bag (promotions, shipping and taxes were still to be accurately calculated). Alternatively, the shopper could go to additional and un-necessary work of heading into the store's checkout, typing his billing address and shipping address in order to learn his full cost, and THEN divert off to a third party checkout.
Neither option is ideal.
And so we introduce the All-In-One Checkout.
The shopper adds to the cart and is shown a (cumulative) list of items he has set aside for the checkout:
He can keep shopping until he chooses the 'checkout' button, when he is taken straight to the All-In-One Checkout.
Once he is at the All-In-One Checkout, the shopper can calculate shipping costs (with or without typing his full address), change his shopping cart contents, apply promos, pay (including with PayPal or Amazon) and ALL IN ANY ORDER HE CHOOSES.