0

我需要在下订单后更改付款方式。我有订单 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();

提前致谢!

4

1 回答 1

1

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

这有点骇人听闻,但非常有效。

于 2012-12-18T19:35:08.720 回答