magento更新付款后的总付费

时间:2014-07-17 13:35:16

标签: magento magento-1.7

我有自己的自定义支付网关,可以解决一个问题。当交易成功时,订单会更新并发送电子邮件,但支付的总金额仍为0欧元。

如何更新付费状态?我找不到任何关于此的文章。

Magento 1.7

public function responseAction() {
    if($this->getRequest()->isPost()) {

        if($payment_validated) {
            // Payment was successful, so update the order's state, send order email and move to the success page
            $order = Mage::getModel('sales/order');
            $order->loadByIncrementId($orderId);
            $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'AIB has authorized the payment.');

            $order->sendNewOrderEmail();
            $order->setEmailSent(true);

            $order->save();

            Mage::getSingleton('checkout/session')->unsQuoteId();

            Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
        }

Paid not updated

1 个答案:

答案 0 :(得分:1)

这个答案可能很少过时,但仍有人可能觉得它有用。 我自己发现了这个问题,并希望得到一个答案。

所以我在atwix发现了一篇非常有用的文章,特别是我用过:

        $orderId = 200000025; // you'll get your own Order Id
        $model = Mage::getModel('sales/order');
        $model->loadByIncrementId($orderId);

        $invoice = $model->prepareInvoice();

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

        $invoice->sendEmail(true, '');


        if($model->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)) {
            $model->save();
        }  

因此,在此之后,我在后端获得了付款状态,并将状态更改为处理状态。

现在下一步是让客户知道他的订单已经付款,我希望通过电子邮件完成。

干杯!!