Frage

Zunächst werde ich Sie über die Aktuall -Funktionalität erklären:

  1. Kunde kauft im Laden über PayPal
  2. Ladenbetreiber rufen die Bestellung von einer externen Software an (Wawi; wissen nicht in EN) und die Software legt den Bestellstatus ab, um sie abzuschließen
  3. Ladenbetreiber sammeln das Geld bei PayPal, basierend auf ihrem Verkäuferkonto von Kunden
  4. Danach sendet PayPal nach einiger Zeit eine automatische IPN

Die Sache ist, PayPal (oder IPN -Modell) daran zu hindern, die Reihenfolge aus dem Zustand zurück zu auszulegen.

Wir haben einige Modifikationen an der Klasse vorgenommen: mage_paypal_model_ipn in mage/paypal/model/ipn.php. Meiner Meinung nach gibt es den zuständigen Code in _registerPaymentCapture (). Hier sind unsere Änderungen (mit Bearbeitung gekennzeichnet):

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

Das Problem ist immer noch da und ich weiß nicht, wo ich die Datei bearbeiten soll, um Änderungen der Bestellstatus zu verhindern.

Begrüßung & danke im Voraus

War es hilfreich?

Lösung

Wir haben es geschafft. Das Problem war, dass die ERP -Software, die der Bestellstatus nicht festgelegt hatte, nur den Status festgelegt hat, sodass die Bedingung nicht wokierte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top