|
Er zit een bug in de iDEAL module. Ik weet alleen niet of deze door mijn wijziging is opgetreden of dat deze ook bij (bijvoorbeeld) de ING versie van iDEAL basic bestaat. Zodra de klant een order cancelled, zal deze worden teruggestuurd naar je Magento shop. De order bleef echter op processing staan.
Ik kwam erachter dat de volgende code aangepast moest worden.
<magentodir>\app\code\core\Mage\ideal\controllers\BasicController.php
Daarin zit een functie, die heet “_getOrder()” en als commentaar staat bij deze functie: “Return order instance for last real order ID (stored in session)”
Het vreemde was echter dat deze functie NIET naar de “LastRealOrderId()” keek in de session, maar naar “LastOrderId()”. Aangezien deze (in ieder geval door mijn implementatie) leeg was, heb ik eerst dit gedaan.
protected function _getOrder () { echo '<pre>'; $session = Mage::getSingleton('checkout/session'); var_dump($session);
... }
Hierdoor zag ik dat “lastOrderID” inderdaad leeg was, maar er wel een LastRealOrderId was. (wat het commentaar ook suggereert). Ik heb de functie dus aangepast, waardoor deze nu zo leest:
/** * Return order instance for last real order ID (stored in session) * * @param none * @return Mage_Sales_Model_Entity_Order object */ protected function _getOrder () { $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId()); return (!$order->getId()) ? false : $order; }
Dit werkt voor mijn winkeltje (1.1.3 gebaseerd). Graag hoor ik of meerdere van jullie problemen hiermee hebben, dat je bij een gecancelde iDEAL basic order de order status op processing blijft staan.
|