2012-04-30 3 views
1

Я выполнил шаги по созданию метода оплаты в этом учебнике (http://www.magentocommerce.com/wiki/5_-_modules_and_development/payment/create-payment-method-module) все работает отлично, но мне нужна дополнительная функциональность.Как добавить плату к методу доставки в Magento

  • дополнительные 6% на общую сумму, если выбран способ оплаты.

Я также использую этот модуль - http://www.magentocommerce.com/magento-connect/payment-method-charge-4050.html, но мне, но мне нужно 2 состояния. поэтому я создал новый способ оплаты.

  • первый способ оплаты - 6% заряда
  • второй способ оплаты - 2% заряда

спасибо заранее.

ответ

1

Более вероятно, ваши будут хотеть просто создать наблюдатель, чтобы сделать то, что ваш являются нуждаясь:

Вам нужно осмотреться для надлежащего события наблюдателя вклиниться, однако здесь, является примерным способом наблюдателя :

public function updateShippingAmount($observer) 
{ 
    $MyPaymentMethod = Mage::getSingleton('namespace/mypaymentmethod'); 

    $order = $observer->getEvent()->getOrder(); 
    $payment = $order->getPayment()->getData(); 

    if($payment['method'] == $MyPaymentMethod->getCode()) 
    { 
     $shipping_amount = $order->getShippingAmount(); 
     $order->setShippingAmount($shipping_amount + $MyPaymentMethod->getPostHandlingCost()); 
    } 
} 

Взятые из этой статьи:

Более чтение о том, как создать наблюдатель:

1

Недавно у меня такое же требование и я установил, реализовав метод событийно-наблюдателя.
На самом деле вы можете добавить любую дополнительную стоимость доставки в любой способ доставки для любого условия, реализовав мероприятие под названием sales_quote_collect_totals_before
и метод модели наблюдателя (фиктивный код, хотя) выглядит следующим образом:

public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer) 
    { 
     /**@var Mage_Sales_Model_Quote $quote */ 
     $quote = $observer->getQuote(); 
     $someConditions = true; //this can be any condition based on your requirements 
     $newHandlingFee = 15; 
     $store = Mage::app()>getStore($quote>getStoreId()); 
     $carriers = Mage::getStoreConfig('carriers', $store); 
     foreach ($carriers as $carrierCode => $carrierConfig) { 
      if($carrierCode == 'fedex'){ 
       if($someConditions){ 
        Mage::log('Handling Fee(Before):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log'); 
        $store->setConfig("carriers/{$carrierCode}/handling_type", 'F'); #F - Fixed, P - Percentage     
        $store->setConfig("carriers/{$carrierCode}/handling_fee", $newHandlingFee); 

        ###If you want to set the price instead of handling fee you can simply use as: 
        #$store->setConfig("carriers/{$carrierCode}/price", $newPrice); 

        Mage::log('Handling Fee(After):' . $store->getConfig("carriers/{$carrierCode}/handling_fee"), null, 'shipping-price.log'); 
       } 
      } 
     } 
    } 
+0

Вы заметили какой-либо побочные эффектов путем установки значения конфигурации магазина таким образом? – pspahn

Смежные вопросы