我需要在下单后更改付款方式。我有订单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();
提前致谢!
答案 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,但非常有效。