Erfolgsseite Kundenname und Bestellnummer abrufen


7

Ich möchte den Kundennamen und die Bestellnummer auf der Erfolgsseite der Kaufabwicklung wiedergeben.

Ich benutze derzeit diese Zeile, um den Kundennamen anzuzeigen:

<?php $order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId()); echo $order->getCustomerName(); ?>

Aber das gibt den Wert "Gast Gast" wieder.

Und um die Bestellnummer zu laden, benutze ich diese, aber das funktioniert auch nicht:

<p><?php echo $this->__('Your order ID is <strong> %s.</strong>', $this->escapeHtml($this->getOrderId())) ?> </p>

Wie kann ich dieses Problem beheben?


machst du bei success.phtml
Amit Bera

@AmitBera Ja, ich mache es auf success.phtml
JGeer

Ist ($ this-> getOrderId () die Bestellinkrement-ID angegeben?
Amit Bera

Haben Sie die Lösung gefunden? Benötigen Sie weitere Informationen?
Adarsh ​​Khatri

Antworten:


8

Verwenden Sie diese Option, um die Bestelldetails auf der Checkout-Erfolgsseite abzurufen

$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());

und rufen Sie dann die Kundeninformationen wie folgt aus dem Bestellobjekt ab

//If they have no customer id, they're a guest.
if($order->getCustomerId() === NULL){
    echo $order->getBillingAddress()->getFirstname();
    echo "<br/>";
    echo $order->getBillingAddress()->getLastname();
} else {
    //else, they're a normal registered user.
    $customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
    echo $customer->getDefaultBillingAddress()->getFirstname();
    echo "<br/>";
    echo $customer->getDefaultBillingAddress()->getLastname();
}

Seltsam. Es arbeitet für mich. Suchen Sie nach Gastkunden?
Manashvi Birla

Danke, es funktioniert! Aber wie kann ich die Bestellnummer wiedergeben?
JGeer

Mage::getSingleton('checkout/session')->getLastOrderId();
Dadurch

1
Bitte akzeptieren Sie und stimmen Sie ab, wenn es geholfen hat
Manashvi Birla

Ich habe versucht, die Bestellnummer abzurufen, aber wenn ich diese Zeile überschreite, wird die Bestellnummer nicht wiedergegeben.
JGeer

4

Versuche dies:

<?php echo $this->getOrder()->getBillingAddress()->getName();?>

Dadurch wird der Name des Kunden aus dem Abschnitt "Rechnungsinformationen" wiedergegeben.

Wenn Sie den Kundennamen vom registrierten Kunden anstelle der Rechnungsadresse erhalten möchten, versuchen Sie Folgendes:

<?php $order = Mage::getModel('sales/order')->load($this->getOrderId());
if($order->getCustomerIsGuest()){ //if order created as guest
   echo $order->getBillingAddress()->getName();
}
else //if order created by registered user
   echo $order->getCustomerName();
}
?>

Dies sollte Ihnen das gewünschte Ergebnis liefern.


1

Wenn Sie eine Bestellinkrement-ID angeben, können Sie den Kundennamen angeben.

Wann immer ein customer is placed an order as guestdamaliger Kundenname abgenommen wird billing address.

Versuchen Sie den folgenden Code:

$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
if($order->getId()):
    if($order->getCustomerIsGuest()):
    $name=$order->getBillingAddress()->getName();
    else:
    $name=$order->getCustomerName();
    endif;
    echo $name;
endif;

Ich habe versucht, Sie Code, um den Kundennamen zu laden, aber das funktioniert nur für Zahlungsgeldscheck. Denn das ist die Bestellung direkt. Wenn ich eine Zahlungsmethode verwende, die außerhalb unseres Magento-Shops bezahlt wird und nach Abschluss umleitet, wird der Name nicht angezeigt.
JGeer

Ist $ this-> getOrderId () mit der ID des Auftragsinkrements angegeben?
Amit Bera

Nein, es gibt mir nicht die
Bestellinkrement-

Dieses Problem tritt hier auf, wenn Sie eine Bestellung über ein anderes Zahlungsgateway mit Ausnahme des Geldschecks aufgeben. Grundsätzlich ist Magento die Übertragungsreihenfolge-ID der Checkout-Sitzungsvariablen Mage :: getSingleton ('checkout / session') -> getLastOrderId ();. kann es nicht gesetzt sein ..
Amit Bera

Wissen Sie, wie Sie dies überprüfen und beheben können?
JGeer

1

Hier finde ich den Gastbenutzer nach der Bestellung / aus einer Bestellinkrement-ID heraus. und als Gast identifiziert. Das habe ich auf der Seite success.phtml gemacht.

$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

    $customerData = Mage::getModel('customer/customer')->load($order->getCustomerId());
    $customer = Mage::getModel('customer/customer')->getCollection()
                ->addFieldToFilter('entity_id',$order->getCustomerId())
                ->addAttributeToSelect('*')
                ->getFirstItem();
if($customer->getConfirmation()!=""){
  echo "Guest Checkout";
}

-1

Ändern Sie Ihren Code

echo $order->getCustomerName();

zu

 echo $order->getBillingAddress()->getName();

4
Genau das gleiche wurde bereits in einer anderen Antwort zusammen mit einer Erklärung vorgeschlagen. Bitte antworten Sie nur, wenn Sie einen Mehrwert schaffen können
Fabian Schmengler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.