C'est l'un des problèmes les plus vitaux que j'ai trouvés depuis que j'ai commencé à tester Magento pour mon magasin Web. C'est une sorte de no-évidence qu'il est absolument inutile et nocif pour les ventes à vider le panier Si l'utilisateur sélectionne PayPal (standard de sites Web) pour la méthode de paiement et pour une raison quelconque, cliquez sur "Retour à xxxx" (votre nom d'entreprise à PayPal) sur la page de paiement PayPal Je pense que cela devrait être après la confirmation de paiement / PayPal IPN que le panier soit vide, au lieu de tout point avant cela. P>
Même si l'utilisateur veut continuer à nouveau, il serait ennuyé de rechercher et d'ajouter tous les produits à nouveau et serait probablement tout simplement parti. P>
Une idée de la façon dont je peux travailler autour de cela? p>
5 Réponses :
Votre problème est avec la façon dont plus spécifique: Ouvrir mage_checkout_onepagecontroller :: SauvegarderAgtion () code> se comporte.
App / Code / Core / Commander / Commander / Commanders / OnePagecontroller.php P>
if (isset($redirectUrl)) {
$result['redirect'] = $redirectUrl;
$this->getOnepage()->getQuote()->setIsActive(1) ;
}
$this->getOnepage()->getQuote()->save();
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
Sur quel fichier est-ce?
@Aryeharmon, j'ai inséré le chemin de ce fichier. Vérifiez une fois.
Ceci a fonctionné pour moi:
Fichier: avec celui-ci: p> ~ / App / Code / Core / Mage / Commandation / Contrôleurs / OnePagecontroller.php Code> P> P> Remplacez ceci: P> >
Les fichiers principaux ne doivent pas être modifiés. Vous devez toujours remplacer le contrôleur.
J'utilise l'IWD Onepage Checkout. Ce code n'a pas fonctionné pour moi. Plz dit comment faire taht?
Veuillez vérifier une fois magento.stackexchange.com/questions/130941/...
Cette solution crée la commande avant d'essayer le paiement. Mais si vous annulez plusieurs fois, puis allez à MyAccount / Myorders, vous verrez tous les essais, toutes les commandes. Je veux juste garder la citation mais pas les ordres. N'a pas fonctionné pour moi ...
Pour PayPal, j'ai trouvé l'action Annuler à l'intérieur de l'application / Code / Core / Mage / PayPal / Controlers / StandardController.php AnnulerContact
J'ai changé le code comme celui pour annuler Action P>
public function cancelAction() { $session = Mage::getSingleton('checkout/session'); $cart = Mage::getSingleton('checkout/cart'); $session->setQuoteId($session->getPaypalStandardQuoteId(true)); if ($session->getLastRealOrderId()) { $incrementId = $session->getLastRealOrderId(); if (empty($incrementId)) { $session->addError($this->__('Your payment failed, Please try again later')); $this->_redirect('checkout/cart'); return; } $order = Mage::getModel('sales/order')->loadByIncrementId($session->getLastRealOrderId()); $session->getQuote()->setIsActive(false)->save(); $session->clear(); try { $order->setActionFlag(Mage_Sales_Model_Order::ACTION_FLAG_CANCEL, true); $order->cancel()->save(); } catch (Mage_Core_Exception $e) { Mage::logException($e); } $items = $order->getItemsCollection(); foreach ($items as $item) { try { $cart->addOrderItem($item); } catch (Mage_Core_Exception $e) { $session->addError($this->__($e->getMessage())); Mage::logException($e); continue; } } $cart->save(); $session->addError($this->__('Your payment failed. Please try again later')); } $this->_redirect('checkout/cart'); }
Depuis la version 1.6.0.0 (JULI 2011), vous pouvez activer Sous P> Enable Persistence = Yes
Persistence Lifetime (seconds) = 31536000
Enable "Remember Me" = Yes
"Remember Me" Default Value = Yes
Clear Persistence on Log Out = No
Persist Shopping Cart = Yes
Mais ce panier n'est-il pas aussi vidé sur la caisse? (cliquez sur Payer et accédez à la page PSP)
/app/code/core/mage/checkout/controls/onepagecontroller.php Ce fichier est le fichier de contrôleur réel, mais dépend des extensions de la méthode de paiement, il changera avec l'espace de noms / modulename / Commander / contrôleurs / Onepagecontroller.php
Rechercher la fonction Sauvegarde () P>
Trouver ces lignes P>
//$this->getOnepage()->getQuote()->save(); if (isset($redirectUrl)) { $result['redirect'] = $redirectUrl; $this->getOnepage()->getQuote()->setIsActive(1) ; } $this->getOnepage()->getQuote()->save(); $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
Hé, pouvez-vous s'il vous plaît confirmer lequel de la solution ci-dessous a fonctionné pour vous depuis que cela aidera les autres comme moi de tester et d'obtenir la solution de contournement. Merci
@echoashu, essayé tous, mais rien n'a fonctionné pour moi.
@echoashu, pour moi aussi n'a pas fonctionné. J'utilise le checkout d'onepage.