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?

JGeer
quelle
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();
}
Manashvi Birla
quelle
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.

Adarsh ​​Khatri
quelle
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;
Amit Bera
quelle
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";
}
Naveenbos
quelle
-1

Ändern Sie Ihren Code

echo $order->getCustomerName();

zu

 echo $order->getBillingAddress()->getName();
Asish Hira
quelle
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