成功ページで顧客名と注文IDを取得


7

チェックアウト成功ページに顧客名と注文IDをエコーし​​たい。

現在、この行を使用して顧客名を表示しています。

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

しかし、それは「ゲストゲスト」という価値観を反映しています。

注文IDを読み込むには、これを使用しますが、これも機能しません。

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

この問題を解決するにはどうすればよいですか?


あなたはsuccess.phtmlでやっていますか
Amit Bera

@AmitBeraはい、私はsuccess.phtmlでそれを行います
JGeer

($ this-> getOrderId()に注文インクリメントIDが指定されていますか?)
Amit Bera

解決策は見つかりましたか?さらに情報が必要ですか?
Adarsh Khatri

回答:


8

チェックアウト成功ページで注文の詳細を取得するには、これを使用します

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

次に、このように注文オブジェクトから顧客情報を取得します

//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

ありがとうございます。しかし、注文IDをエコーするにはどうすればよいですか?
JGeer 2015年

Mage::getSingleton('checkout/session')->getLastOrderId();これにより注文IDが出力されます
Manashvi Birla 2015

1
問題が解決した場合は、同意して
賛成投票し

注文IDを取得しようとしましたが、その行を過ぎても注文IDがエコーされません。
JGeer 2015年

4

これを試して:

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

これにより、請求情報セクションから顧客の名前がエコーされます。

請求先住所ではなく登録顧客から顧客名を取得する場合は、次を試してください。

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

これにより、望ましい結果が得られます。


1

注文の増分IDを指定すると、顧客名を指定できます。

customer is placed an order as guestその時はいつでも、お客様の名前はから取られbilling addressます。

以下のコードを試してください:

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

私はあなたに顧客名をロードするようにコードを書いてみましたが、それは支払い金額のチェックでのみ機能します。それは直接注文するためです。magentoストア外で支払われた支払い方法を使用し、それが完了したときにリダイレクトすると、名前が表示されません。
JGeer 2015年

$ this-> getOrderId()に注文増分IDが指定されていますか?
アミットベラ

いいえ、注文の増分IDは提供されません
JGeer

その問題はここにあります...マネーチェック以外の他の支払いゲートウェイを使用して注文するときはいつでも。基本的に、magentoはチェックアウトセッション変数Mage :: getSingleton( 'checkout / session')-> getLastOrderId();によるキャリーオーダーIDです。それは...に設定されなくてもよい
アミットベラ

これをチェックして修正する方法を知っていますか?
JGeer 2015年

1

ここで私は注文後にゲストユーザーを見つけます/注文インクリメントIDから/。ゲストとして識別されます。これは、success.phtmlページで行いました。

$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

コードを変更する

echo $order->getCustomerName();

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

4
まったく同じことが、説明とともに別の回答ですでに提案されています。追加の値を追加できる場合にのみお答えください
Fabian Schmengler 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.