Trang thành công có được tên khách hàng và id đơn hàng


7

Tôi muốn lặp lại tên khách hàng và id đơn hàng trên trang thanh toán thành công.

Tôi hiện đang sử dụng dòng này để hiển thị tên khách hàng:

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

Nhưng điều đó lặp lại giá trị "Khách mời".

Và để tải ID đơn hàng tôi sử dụng cái này, nhưng nó cũng không hoạt động:

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

Làm thế nào tôi có thể khắc phục vấn đề này?


bạn đang làm tại thành công. Tml
Amit Bera

@AmitBera Có, tôi làm điều đó trên thành
công.phtml

là ($ this-> getOrderId () được cung cấp id tăng đơn hàng?
Amit Bera

Bạn đã tìm ra giải pháp? Bạn cần thêm thông tin không?
Adarsh ​​Khatri

Câu trả lời:


8

Để có được các chi tiết đặt hàng trên trang thành công thanh toán, sử dụng này

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

và sau đó lấy thông tin khách hàng từ đối tượng đặt hàng như thế này

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

Strange. Tôi làm việc cho tôi. bạn đang kiểm tra cho khách hàng.?
Manashvi Birla

Cảm ơn nó đang làm việc! Nhưng làm thế nào để tôi lặp lại id thứ tự?
JGeer

Mage::getSingleton('checkout/session')->getLastOrderId();cái này sẽ in id thứ tự
Manashvi Birla

1
vui lòng chấp nhận và nâng cấp nếu điều đó có ích
Manashvi Birla

Tôi đã cố gắng để có được ID đơn hàng, nhưng khi tôi vượt qua dòng đó, nó không lặp lại id đơn hàng.
JGeer

4

Thử cái này:

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

Điều này sẽ lặp lại Tên của khách hàng từ phần Thông tin thanh toán.

Nếu bạn muốn lấy tên Khách hàng từ khách hàng đăng ký thay vì địa chỉ thanh toán thì hãy thử điều này:

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

Điều này sẽ cung cấp cho bạn kết quả mong muốn.


1

Nếu đưa ra id tăng đơn hàng thì bạn có thể đặt tên khách hàng.

Bất cứ khi nào một customer is placed an order as guestthời gian đó tên khách hàng được lấy từ billing address.

Hãy thử mã dưới đây:

$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;

Tôi đã thử mã của bạn để tải tên khách hàng, nhưng điều đó chỉ hoạt động để kiểm tra tiền thanh toán. Bởi vì đó là đặt hàng trực tiếp. Khi tôi sử dụng phương thức thanh toán được thanh toán bên ngoài cửa hàng magento của chúng tôi và chuyển hướng khi hoàn thành, nó không hiển thị tên.
JGeer

là $ this-> getOrderId () đã cho id gia tăng đơn hàng?
Amit Bera

Không, nó không cho tôi id tăng đơn hàng
JGeer

vấn đề là ở đây .... bất cứ khi nào bạn có lệnh đặt hàng bằng cổng thanh toán khác ngoại trừ kiểm tra tiền. Về cơ bản magento được thực hiện id đơn hàng bằng cách kiểm tra biến phiên Mage :: getSingleton ('thanh toán / phiên') -> getLastOrderId ();. có thể nó không được đặt ..
Amit Bera

Bạn có biết làm thế nào để kiểm tra và sửa lỗi này?
JGeer

1

Ở đây tôi tìm ra người dùng khách sau khi đặt hàng / từ id tăng đơn hàng. và được xác định là khách. đây là tôi đã thực hiện trong trang thành công.

$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

Thay đổi mã của bạn

echo $order->getCustomerName();

đến

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

4
Chính xác như vậy đã được đề xuất trong một câu trả lời khác, cùng với một lời giải thích. Vui lòng chỉ trả lời nếu bạn có thể thêm giá trị bổ sung
Fabian Schmengler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.