modèle PayPal IPN et automatiquement les changements d'état de la commande
-
22-10-2019 - |
Question
Tout d'abord je vous expliquer au sujet de la fonctionnalité actuall:
- client achète dans la boutique via PayPal
- les opérateurs Boutique appellent l'ordre d'un logiciel externe (wawi, ne savent pas en) et le logiciel définit l'état complet pour
- Boutique opérateurs collectent l'argent à paypal, en fonction de leur compte vendeur, du client
- Une fois que, Paypal envoie après un certain temps un retour de demande automatique IPN magento et réglez le dos de l'ordre à l'attente
La chose est d'empêcher paypal (ou Ipn Model) de définir l'ordre de l'état fini de retour en attente.
Nous allready avons apporté quelques modifications à la classe: Mage_Paypal_Model_Ipn en Mage / Paypal / Modèle / ipn.php. À mon avis est-il le code responsable _registerPaymentCapture (). Voici nos modifications (marqués Edit):
if ($this->getRequestData('transaction_entity') == 'auth') {
return;
}
$this->_importPaymentInformation();
$payment = $this->_order->getPayment();
/* Edit: check if order state is complete */
$orderStateComplete = (Mage_Sales_Model_Order::STATE_COMPLETE == $this->_order->getState());
$orderStatusBefore = $this->_order->getStatus();
$payment->setTransactionId($this->getRequestData('txn_id'))
->setPreparedMessage($this->_createIpnComment(''))
->setParentTransactionId($this->getRequestData('parent_txn_id'))
->setShouldCloseParentTransaction('Completed' === $this->getRequestData('auth_status'))
->setIsTransactionClosed(0)
->registerCaptureNotification($this->getRequestData('mc_gross'));
/* Edit: reset state and status, if order was already complete before */
if ($orderStateComplete) {
$this->_order->setState(Mage_Sales_Model_Order::STATE_COMPLETE)
->setStatus($orderStatusBefore);
}
$this->_order->save();
// notify customer
$invoice = $payment->getCreatedInvoice();
if ($invoice && !$this->_order->getEmailSent()) {
$this->_order->sendNewOrderEmail()->addStatusHistoryComment(
Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId())
)
->setIsCustomerNotified(true)
->save();
}
Le problème est toujours là et je ne sais pas où éditer le fichier afin d'éviter les changements d'état de la commande.
greetz et merci à l'avance
La solution
Nous y sommes arrivés. Le problème est que le logiciel ERP de l'état de la commande n'a pas défini, tout l'état, de sorte que la condition n'a pas woked.
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange