11
votes

Arrêtez Magento de vider le panier avant la confirmation de paiement?

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 avant la confirmation de paiement , qui, malheureusement, Magento fait.

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 sans payer , PayPal serait redirect L'utilisateur retour à http://www.example.com/checkout/cart/ , lequel Maintenant est un panier vide.

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.

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.

Une idée de la façon dont je peux travailler autour de cela?


3 commentaires

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.


5 Réponses :


-1
votes

Votre problème est avec la façon dont mage_checkout_onepagecontroller :: SauvegarderAgtion () code> se comporte.

plus spécifique: Ouvrir 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));


2 commentaires

Sur quel fichier est-ce?


@Aryeharmon, j'ai inséré le chemin de ce fichier. Vérifiez une fois.



6
votes

Ceci a fonctionné pour moi:

Fichier: ~ / App / Code / Core / Mage / Commandation / Contrôleurs / OnePagecontroller.php Remplacez ceci: > xxx

avec celui-ci: xxx


4 commentaires

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 ...



4
votes

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');
}


0 commentaires

-1
votes

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


1 commentaires

Mais ce panier n'est-il pas aussi vidé sur la caisse? (cliquez sur Payer et accédez à la page PSP)



0
votes

/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));


0 commentaires