3

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

protected $_canRefund = true;

但是,当我单击发票并选择贷项凭证时,我只能看到“离线退款”而不是“退款”。我遵循的所有教程都坚持我只需将该值更改为 true 即可激活按钮(显然我仍然必须实现退款方法和实际的退款程序),但我看不到这样做的方法。

如果我在订单屏幕上的一个块内执行此行$order->getPayment()->getMethodInstance()->canRefund();,它确实返回 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?

4