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

Magento以编程方式编辑订单付款,magento,Magento,下单后,我需要将付款方式更改为订单。我有订单ID($orderID)、订单对象($order)、正确的支付对象等 $service->retrievePaymentType()以图像\销售\模型\订单\付款的形式返回付款 所有这些都发生在Mage_Checkout_Model_Type_Onepage的扩展中 有人知道我会怎么做吗 $order = Mage::getModel('sales/order')->load($orderID); $service = Mage

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

$service->retrievePaymentType()以图像\销售\模型\订单\付款的形式返回付款

所有这些都发生在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();

提前谢谢

不幸的是,我不得不执行一个直接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);
    }

这有点老套,但相当有效。

Mage_Sales_Model_service_Quote中的函数“$service->retrievePaymentType()”只执行以下操作:返回$this->\u convertor->paymentToOrderPayment($Quote->getPayment());在答案中包含代码肯定是个好主意。