Si observa el controlador del carrito app/code/core/Mage/Checkout/controllers/CartController.php
, encontrará la función _goBack
. Aquí es donde Magento decide la URL de retorno.
protected function _goBack()
{
$returnUrl = $this->getRequest()->getParam('return_url');
if ($returnUrl) {
if (!$this->_isUrlInternal($returnUrl)) {
throw new Mage_Exception('External urls redirect to "' . $returnUrl . '" denied!');
}
$this->_getSession()->getMessages(true);
$this->getResponse()->setRedirect($returnUrl);
} elseif (!Mage::getStoreConfig('checkout/cart/redirect_to_cart')
&& !$this->getRequest()->getParam('in_cart')
&& $backUrl = $this->_getRefererUrl()
) {
$this->getResponse()->setRedirect($backUrl);
} else {
if (($this->getRequest()->getActionName() == 'add') && !$this->getRequest()->getParam('in_cart')) {
$this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl());
}
$this->_redirect('checkout/cart');
}
return $this;
}
La sección que está buscando es la llamada a que _getRefererUrl
esto suceda cuando no está configurando la URL de retorno como un parámetro y no está utilizando la opción de redireccionamiento predeterminado al carrito.
Dentro de la función, _getRefererUrl
se verifica la url de referencia para ver si es una url interna, cuando no es interna, se utiliza la url base.
Sugeriría que su URL de referencia sea externa o que haya algún problema con el cheque.
Eche un vistazo Mage_Core_Controller_Varien_Action::_isUrlInternal
para depurar si la url es interna o no.
El problema era que _isUrlInternal fallaba por tener el puerto en la url base