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