Magento以编程方式编辑订单付款

时间:2012-06-05 16:38:53

标签: magento

我需要在下单后更改付款方式。我有订单ID($ orderID),订单对象($ order),正确的付款对象等。

$ service-> retrievePaymentType()以Mage_Sales_Model_Order_Payment

的形式返回付款

所有这些都发生在Mage_Checkout_Model_Type_Onepage

的扩展名中

有人知道我会这样做吗?

    $order = Mage::getModel('sales/order')->load($orderID);

    $service = Mage::getModel('sales/service_quote', $this->getQuote());

    // Update Saved Order Payment Method

    // $order->getPaymentsCollection()->clear();

    $order->setPayment($service->retrievePaymentType());

    $order->getPaymentsCollection()->save();

    $order->save();

提前致谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,我不得不做一个直接的SQL查询,这不是Magento规范,但它完成了工作。如果有人想要代码,请给我留言,我会把它挖出来。

谢谢!

修改

事实上我设法使用Magento API:

    // The payment type I want to change the target order to
    $service = Mage::getModel('sales/service_quote', $this->getQuote()); 


    $payment = $service->retrievePaymentType();

    $paymentData = $payment->getData();
    $oldPayment = $order->getAllPayments();
    $oldPayment = $oldPayment[0];

    foreach ($paymentData as $n => $v) {
         $oldPayment->setData($n,$v);
    }

有点hackish,但非常有效。