[英]Create an Invoice after order is placed
我已经创建了我的自定义付款模块,它可以在付款网关上正常工作,但一切正常,但是当返回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());
而是上面的代码,似乎订单已付款。 但是我不确定是否足够。
我建议您,当客户从付款网关返回您的网站时,它必须转到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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.