我为Magento开发了付款方式扩展程序。在此扩展中,我添加了:
protected $_canRefund = true;
然而,当我点击发票并选择Credit Memo时,我只能看到'退款离线'而不是'退款'。我遵循的所有教程都坚持认为我只需将该值更改为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?