Recientemente me encuentro inmerso en un proyecto bastante chulo por la temática del mismo. Entre todos los problemas a resolver se encontraba este.
Trabajamos con un entorno de Magento con versión 1.9.2
Y la versión del modulo de Redsys para Magento es la 2.8.4
Esta es la problemática:
Esto es debido a lo siguiente:
Para evitar esto, debemos poner el carrito como activo aun habiendolo convertido en pedido.
Después, en el callback de «Pago correcto, metodo(successAction)» eliminamos el carrito. Para hacer esto tenemos que hacer tres modificaciones.
$miObj->setParameter("DS_MERCHANT_URLOK",$urltienda); $miObj->setParameter("DS_MERCHANT_URLKO",$urltienda);
//$this->getOnepage()->getQuote()->save(); Comentamos esta linea. if (isset($redirectUrl)) { $result['redirect'] = $redirectUrl; $this->getOnepage()->getQuote()->setIsActive(1) ;//AÑADIMOS ESTA LINEA AQUÍ } $this->getOnepage()->getQuote()->save(); //Añadimos esta linea aquí.
/** * Order success action */ public function successAction() { Mage::log("Success Action", null, 'debug-david-escudero.log'); $session = $this->getOnepage()->getCheckout(); if (!$session->getLastSuccessQuoteId()) { $this->_redirect('checkout/cart'); return; } Mage::log("Success Action2", null, 'debug-david-escudero.log'); $lastQuoteId = $session->getLastQuoteId(); $lastOrderId = $session->getLastOrderId(); $lastRecurringProfiles = $session->getLastRecurringProfileIds(); if (!$lastQuoteId || (!$lastOrderId && empty($lastRecurringProfiles))) { $this->_redirect('checkout/cart'); return; } $this->getOnepage()->getQuote()->setIsActive(false) ; $this->getOnepage()->getQuote()->save(); Mage::getSingleton('checkout/cart')->truncate(); Mage::log("Success Action3", null, 'debug-david-escudero.log'); $session->clear(); $this->loadLayout(); $this->_initLayoutMessages('checkout/session'); Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId))); $this->renderLayout(); }
Con estos cambios ya os debería funcionar todo correctamente, el pedido se hace correctamente con Redsys, puedes ir hacia atrás cuando estás en el TPV y os funcionará el vaciado del carrito cuando finalizas el pago.
Y llegados a este punto, si no sabeis donde modifcar vuestra plantilla de finalización de pedido, os indico como debeis hacerlo.
Hay que modificar 2 ficheros «.phtml» que se encuentran en las siguientes rutas:
En estas plantillas podeis usar HTML y personalizarlas a vuestra imagen corporativa.
Modifica tu tienda en un solo sitio Si por algún motivo, no utilizas multitienda y…
En el proceso de compra no se muestran las opciones de pago Si te has…
/migrations#rm -rf ./* #php bin/console doctrine:migrations:generate #php bin/console doctrine:migrations:migrate #php bin/console doctrine:migrations:current #php bin/console doctrine:migrations:diff…
Pasos para inicializar un proyecto Symfony 5 y un panel de control de entidades Inicializando Symfony:…
MODULOS DE ODOO NECESARIOS PARA UN ECOMMERCE Enlaces de OCA de interes: En el siguiente…
Migración de un prestashop 1.7 de un dominio a otro. Copiamos la BBDD del antiguo…