2012-08-22 39 views
0

我想在magento的成功頁面上獲取authorize.net事務ID。下面是我使用的代碼:如何在magento成功頁面上獲取交易ID?

$orders = Mage::getModel('sales/order')->getCollection(); 
$order = $orders->getLastItem(); 

$transactionId = $order->getPayment()->getTransactionId(); 

結果,$ transactionId的是一個空字符串。

謝謝

+0

嘗試$命令 - > getPayment() - >的getData();看什麼來 – Guerra

+0

我看到這在從$命令 - 獲得的數據> getPayment() - >的getData(): [ 「last_trans_id」] =>串(1)爲 「0」 這是正確的用於測試帳戶 – petermk

回答

1

首先,我想說的是方法,你用得到的最後次序的參考是不是最有效的或準確的方法。這將是更好地做到這一點:

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

由於目前的Magento版本(企業版1.13和社區1.8),以獲得交易ID(和其他方面的支付交易和卡)的最佳途徑是來自存儲在支付對象(Mage_Sales_Model_Order_Payment或sales_flat_order_payment表)的'additional_information'字段內的'authorize_cards'字段。

整個事情會是這個樣子(你可以將此代碼添加到「應用程序/設計/前端/基/默認/模板/結算/ success.phtml」):

<?php 
$order = Mage::getModel('sales/order') 
    ->load(Mage::getSingleton('checkout/session')->getLastOrderId()); 
$cardsStorage = Mage::getModel('paygate/authorizenet_cards') 
    ->setPayment($order->getPayment()); 
foreach ($cardsStorage->getCards() as $card) { 
    $lastTransId = $card->getLastTransId(); 
    echo '<p>' . $lastTransId . '</p>'; 
} 
?> 
相關問題