2014-10-29 96 views
2

我已經創建了我的自定義付款模塊,它可以在支付網關上工作,一切工作正常,但我想設置訂單作爲付款時返回URL返回一個成功的代碼。到目前爲止,我明白我必須爲訂單創建發票,才能將其設置爲支付到Magento面板。下訂單後創建發票

所以,首先請告訴我,如果我想到這裏。

然後我試圖創建success.phtml發票像一些代碼:

$invoice = Mage::getModel('sales/service_order', $order->prepareInvoice()); 


     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE); 
     $invoice->register(); 

     $invoice->getOrder()->setCustomerNoteNotify(true);   
     $invoice->getOrder()->setIsInProcess(true); 
     $order->addStatusHistoryComment('Automatically INVOICED by Rico.', false); 

     $transactionSave = Mage::getModel('core/resource_transaction') 
      ->addObject($invoice) 
      ->addObject($invoice->getOrder()); 

     $transactionSave->save(); 

但它給我回總是Magento的錯誤,因此可能不是一個好主意。

任何幫助將不勝感激

編輯

從這個http://blog.chapagain.com.np/magento-quick-way-to-create-order-invoice-programmatically/

我用

$invoiceId = Mage::getModel('sales/order_invoice_api') 
         ->create($_order->getIncrementId(), array()); 

上面,而不是代碼,它似乎是爲了支付。但我不確定,如果夠了。

回答

3

我建議你,當顧客從支付網關返回到您的網站,然後就必須去Magento的控制器和它的一個動作,你需要在那裏添加你的代碼

$order=Mage::getModel('sales/order')->load($orderID); 
if($order->canInvoice() and $order->getIncrementId()) 
{ 
    $items = array(); 
    foreach ($order->getAllItems() as $item) { 
    $items[$item->getId()] = $item->getQtyOrdered(); 
    } 
$invoiceId=Mage::getModel('sales/order_invoice_api')->create($order->getIncrementId(),$items,null,false,true); 
Mage::getModel('sales/order_invoice_api')->capture($invoiceId)}; 
} 

http://www.amitbera.com/programmatically-create-invoice-of-a-new-order-in-magento/

+1

在上面的代碼中錯過了}行$ items [$ item-> getId()] = $ item-> getQtyOrdered(); – electroid 2016-02-26 12:10:00

+0

感謝您的留言。 – 2016-02-26 13:17:58