0

Magento の成功ページで authorize.net トランザクション ID を取得しようとしています。私が使用しているコードは次のとおりです。

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

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

その結果、$transactionId は空の文字列になります。

ありがとうございました

4

1 に答える 1

1

まず、最後の注文への参照を取得するために使用する方法は、最も効率的でも正確でもありません。これを行う方が良いでしょう:

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

現在の Magento バージョン (Enterprise Edition 1.13 および Community 1.8) の時点で、トランザクション ID (および支払いトランザクションとカードからの他のフィールド) を取得する最良の方法は、支払いオブジェクト (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 に答える