我正在尝试在magento的成功页面上获取authorize.net事务ID。这是我正在使用的代码:
$orders = Mage::getModel('sales/order')->getCollection();
$order = $orders->getLastItem();
$transactionId = $order->getPayment()->getTransactionId();
因此,$ transactionId是一个空字符串。
谢谢
答案 0 :(得分:1)
首先,我想说你用来获取最后一个订单的引用的方法不是最有效或最准确的方法。这样做会更好:
$order = Mage::getModel('sales/order')
->load(Mage::getSingleton('checkout/session')->getLastOrderId());
截至目前的Magento版本(企业版1.13和社区1.8),获取交易ID(以及支付交易和卡中的其他字段)的最佳方式来自存储在'additional_information'内的'authorize_cards'字段付款对象上的字段(Mage_Sales_Model_Order_Payment或sales_flat_order_payment表)。
整个事情看起来像这样(你可以将这个代码添加到'app / design / frontend / base / default / template / checkout / 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>';
}
?>