2011-04-25 2 views
1

J'ai réussi à modifier une partie du code de magento pour implémenter notre propre passerelle 3ème partie, mais j'ai des problèmes avec le nombre "acheté" incorrect sur l'affaire quand quelqu'un fait la commande, le nombre augmente directement lorsque saveOrderAction s'exécute (avant la réussite ou l'échec de la page, le compte est de nouveau décroissant, ce qui est juste - mais je ne veux pas qu'il augmente avant la page de succès) à ce stade, la commande est sauvegardée « traitement » dans le systèmemagento "X acheté" comptez sur les offres

le code je n'est fondamentalement: dans le « saveOrderAction » J'ai une condition qui vérifie le mode de paiement choisi,

s'il s'agit de notre 3ème partie, il redirige vers la page 3ème partie, puis je passe certains paramètres de la page 3ème partie à magento à la «successAction» ou «failureAction» (selon le cas),

puis enregistrez en conséquence l'ordre, définir son état aussi complet, et ainsi de suite ...

ce que je veux faire est d'augmenter seulement le « acheté » count après paiement est réussie, si quelqu'un peut me donner un aperçu de la Je sais que cela se produit dans la fonction saveOrder() dans le modèle mage \ checkout \ model \ type \ onepage.php: 01 la logique de comment le 'acheté' est implémenté dans magento

$service = Mage::getModel('sales/service_quote', $this->getQuote()); 
$service->submitAll(); 

mais je ne peux pas savoir où il est en submitAll ... INTERVENUES Je suppose peut-être tout d'abord je ne devrais pas enregistrer l'ordre, ou un ensemble peut-être à un autre état où il est pas pris en compte ou Je ne sais pas quoi?

toute aide/suggestion serait grandement appréciée! merci :)

Répondre

0

Une façon de faire cela, qui pourrait sauver des problèmes, serait d'ajouter un observateur à un événement qui correspond à vos besoins. En particulier, il y a plusieurs événements pour Mage_Sales_Model_Order_Payment qui pourraient être appropriées:

sales_order_payment_save_after 
sales_order_payment_capture 
sales_order_payment_pay 
... several more ... 

Si vous jetez un oeil à ces événements, vous pouvez constater que l'un d'eux est un délai raisonnable pour ajouter à votre nombre vendu. De même, il existe des événements sur cet objet pour l'annulation ou le remboursement des commandes, que vous pouvez utiliser pour réduire les ventes si nécessaire.

J'évite en général de m'impliquer dans les actions du contrôleur pour ce type de comportement car je ne peux pas garantir que Magento utilisera toujours cette action comme je le suppose. En tout cas, laissez-moi savoir si cela a été utile ou si vous avez toujours la même question. J'espère que cela pourra aider!

Merci, Joe

+0

aha ok grand merci beaucoup, qui m'a donné un bon aperçu ... creuseront dans les choses plus BTW, avez-vous une idée de comment puis-je obtenir le SKU - Je voudrais pour envoyer le SKU en tant que paramètre du contrôleur onepage dans l'action save order), Je reçois actuellement l'identifiant de la dernière commande en tant que tel: Mage :: getSingleton ('checkout/session') -> getLastRealOrderId() –

+0

nevermind, j'étais capable de le comprendre :) merci –