Magento 付款发票中没有交易记录ID

Magento 付款发票中没有交易记录ID,magento,payment-gateway,invoices,Magento,Payment Gateway,Invoices,我为Magento开发了一个付款方式扩展。在此扩展中,我添加了: protected $_canRefund = true; 但是,当我单击发票并选择信用备忘录时,我只能看到“离线退款”,而不能看到“退款”。我遵循的所有教程都坚持我只需将该值更改为true即可激活按钮(显然,我仍然需要实现退款方法和实际的退款过程),但我找不到实现这一点的方法 如果我在订单屏幕上的一个块内,执行这一行$order->getPayment()->getMethodInstance()->canReturn()它确

我为Magento开发了一个付款方式扩展。在此扩展中,我添加了:

protected $_canRefund = true;
但是,当我单击发票并选择信用备忘录时,我只能看到“离线退款”,而不能看到“退款”。我遵循的所有教程都坚持我只需将该值更改为true即可激活按钮(显然,我仍然需要实现退款方法和实际的退款过程),但我找不到实现这一点的方法

如果我在订单屏幕上的一个块内,执行这一行
$order->getPayment()->getMethodInstance()->canReturn()它确实返回true,但对于实际的信用备忘录仍然没有运气

编辑

我更改了问题的标题以反映我的新发现。
基本上,它没有出现的原因是我的发票没有使用事务ID创建-我不知道为什么,但这是我在生成发票时运行的捕获付款方法:

public function capturePayment($order) {
    try {
        if (!$order->canInvoice()) {
            Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));
        }
        $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
        if (!$invoice->getTotalQty()) {
            Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
        }
        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
        $invoice->register();
        $transactionSave = Mage::getModel('core/resource_transaction')
               ->addObject($invoice)
               ->addObject($invoice->getOrder());
        $transactionSave->save();
        $order->setState('processing', 'payment_received', "Payment has been received", false);
        $order->save();
    } catch (Mage_Core_Exception $e) {
        Mage::throwException("Error Taking Payment, Please Try Again:\n" . $e);
    }
}
为什么没有为我的捕获分配事务ID?

检查下面的url


希望这对你有所帮助

我已经发现了原因,但仍然无法解决。请检查对该问题的最新编辑。请将模块(在模型中)中的原始
capture()
放在您将从网关成功捕获付款的位置。您将在那里获得捕获的付款的参考id(交易id)。我的尝试已经成功,现在可以使用了。我会发布解决方案的,shortlybump你是说你找到了解决方案@DanHanly?@DougMcLean我很乐意帮你,但这是一年多以前的事了,我不知道解决方案是什么。抱歉,我也有同样的问题:(