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