2014-03-04 88 views
2

我已經爲Magento開發了支付方式擴展。在這個擴展,我說:支付發票中沒有交易ID

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); 
    } 
} 

爲什麼ISN交易ID是否分配給我的捕獲?

+0

請把原來的'捕捉()'從模塊(模式),在這裏您將從網關獲得成功的付款捕獲。你會得到一個參考編號(交易編號)爲捕獲的付款 –

+0

我已經成功地在我的嘗試,現在的作品。我將發佈解決方案,不久後 –

+0

* bump *你說你找到了解決方案@DanHanly? –

回答