我为 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?