抱歉,我是Magento的新手。

我正在关注 本教程 创建新的付款方式。它提供了满足 示例代码在这里.

在教程中,谈到 StandardController.php::successAction(), , 它说,

如果所有内容都签出,我们可以将订单状态从state_pending_payment更改为state_new,因此可以供商店中的某人发货并完成。在这里,我们也将报价转换为发票并将其标记为付费。

我能够在代码中找到第一句话,但是我找不到第二部分,即“将报价转换为发票并将其标记为付费”:

if($state == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT){

    $msg = 'Payment completed via MockPay.';
    $order->setState(Mage_Sales_Model_Order::STATE_NEW ,true,$msg,false);
    $order->save();

    $quote = Mage::getSingleton('checkout/session')->getQuote();
    $quote->setIsActive(false)->save();

}

也许作者忘了包括代码的那一部分。我尝试阅读Magento文档,只能设法将报价转换为订单,而不是发票:

    $convertQuote = Mage::getSingleton('sales/convert_quote');
    $order = $convertQuote->toOrder($quote);

这里应该是什么代码“将报价转换为发票,并将其标记为付费”?

有帮助吗?

解决方案

您不能将报价转换为发票,必须将报价转换为订单,然后创建发票。另外,付款方式不应将报价转换为订单,这是由结帐期间的保存订单操作完成的。

要创建发票,您可以使用:

$invoice = $order->prepareInvoice();
$invoice->register()->capture();

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

您可以在模块的standardController.php中的连续添加此代码。

许可以下: CC-BY-SA归因
scroll top