0

I am trying to get authorize.net transaction id on magento's success page. Here's the code I am using:

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

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

As a result, $transactionId is an empty string.

Thank you

4

1 回答 1

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>';
}
?>
于 2013-05-14T20:48:13.657 回答