The cart_shipping.list method in the Magento Core API does not return all shipping/payment methods enabled on the admin site. The enabled methods are Flat Rate, Table Rates, Free Shipping, UPS, USPS, FedEx and DHL. Calling cart_shipping.list only returns Flat Rate, Free Shipping and UPS.
Any ideas as to why?
My main suspicion (when looking at the getShippingRatesCollection() function of the Mage_Sales_Model_Quote_Address class) is that the shipping address set for the order is used to filter some of the methods out. However, I don’t fully understand how this filtering occurs, since in the front end this problem does not occur when using the same shipping address (i.e. I can see all the shipping methods that I expect to see for that address).
I have found a working solution to this issue, at least in my case.
The problem was that I was not specifying a Store Id in any of the methods used to create a cart and specify its products and delivery/billing addresses leading up to the call to
cart_shipping.list.These methods are:
cart.create,cart_customer.set,cart_customer.addressesandcart_product.add. They all take a Store Id as an optional parameter. Specifying this store ID leads to all shipping methods visible in the front end for the same product and delivery address being displayed.