This is a javascript problem. If you view the source of checkout/cart/ (difficult, I know, it tries to redirect quite quickly) you might find this in it.
var checkout = new Checkout(accordion,{
progress: 'http://metrotemplate.com/checkout/cart/progress/',
review: 'http://metrotemplate.com/checkout/cart/review/',
saveMethod: 'http://metrotemplate.com/checkout/cart/saveMethod/',
failure: 'http://metrotemplate.com/checkout/'}
);
Basically it tries to POST an update to checkout/cart/saveMethod/
which is equivalent to the first step of onepage checkout. Unfortunately that URL doesn't exist, it should be POSTing to checkout/onepage/saveMethod/
in the background, instead it gets a 404 error which triggers the page to reload as the "failure" URL.
The final step is checkout/
redirects automatically to checkout/onepage/
.
I cannot tell why the extension has started outputting URLs that begin with checkout/cart/*
rather than checkout/onepage/*
. Perhaps there is an admin setting somewhere? Maybe some over-enthusiastic template editing 'corrected' the file "template/checkout/onepage.phtml"? Or maybe Simple Checkout depends on overriding Mage_Checkout_CheckoutController
and another, recent extension has it's own override which is conflicting..?