Search code examples
magentopayment

No payment methods display for free products with shipping costs


We are creating a Magento store with many educational products. Many products are free booklets, but there are shipping costs for the order.

If I create an order with only free products and go through checkout, no payment methods will display and I can't complete the order.

How do I get the payment methods to show?

Some additional information:

  • If I add a paid product to my cart, the payment methods will display.
  • Some products are completely free (no shipping either). We gave them a weight of zero. If you only order those, it does work like it should. (No payment required.)
  • There is only one shipping method available: Table Rates

Solution

  • I have solved this issue myself. Here's how:

    First, make a local copy of the file app/code/core/Mage/Payment/Block/Form/Container.php (Copy the file to: app/code/local/Mage/Payment/Block/Form/Container.php)

    Then go to line 119 and change:

    $total = $quote->getBaseSubtotal();
    

    to

    $total = $quote->getBaseGrandTotal();
    

    I've tested the change by placing an order of free products and finishing the order in the back-end. It all seems to work properly.