2012-06-05 81 views
0

我需要在付款方式更改後才能下訂單。我有訂單ID($單編號),訂單對象($順序),適當的支付對象等Magento以編程方式編輯訂單付款

$服務 - > 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

Mage_Sales_Model_Service_Quote中的函數「$ service-> retrievePaymentType()」僅執行以下操作: \t返回$ this - > _ convertor-> paymentToOrderPayment($ quote-> getPayment()); – Nitroware

回答

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的,但非常有效。

+1

將代碼包含在您的答案中肯定是一個好主意。 – ThiefMaster

相關問題