Shipping calculation on cart
This script is designed to let you add a live rate calculator on the cart. It's been tested in version 1.1, but could probably be ported to a lower version with a bit of tweaking. This is designed for shipping to and from the US-only. You could likely add more countries in a dropdown if you wanted international. Be sure to fill in the config values and then paste before the </body> tag in the cart template.
<style type="text/css"> #shipping_estimate_container { width: 100%; margin-top: -53px; font-family: Verdana; font-size: 12px; } </style> <div id="shipping_estimate_container"> <h3>Estimate Shipping</h3> <form id="estimateform"> <label for="zip_estimate">US State and Zip Code</label> <select name="state_estimage" id="state_estimate"> <option value="">- -</option> <option value="AL">Alabama</option> <option value="AK">Alaska</option> <option value="AZ">Arizona</option> <option value="AR">Arkansas</option> <option value="CA">California</option> <option value="CO">Colorado</option> <option value="CT">Connecticut</option> <option value="DE">Delaware</option> <option value="DC">District Of Columbia</option> <option value="FL">Florida</option> <option value="GA">Georgia</option> <option value="HI">Hawaii</option> <option value="ID">Idaho</option> <option value="IL">Illinois</option> <option value="IN">Indiana</option> <option value="IA">Iowa</option> <option value="KS">Kansas</option> <option value="KY">Kentucky</option> <option value="LA">Louisiana</option> <option value="ME">Maine</option> <option value="MD">Maryland</option> <option value="MA">Massachusetts</option> <option value="MI">Michigan</option> <option value="MN">Minnesota</option> <option value="MS">Mississippi</option> <option value="MO">Missouri</option> <option value="MT">Montana</option> <option value="NE">Nebraska</option> <option value="NV">Nevada</option> <option value="NH">New Hampshire</option> <option value="NJ">New Jersey</option> <option value="NM">New Mexico</option> <option value="NY">New York</option> <option value="NC">North Carolina</option> <option value="ND">North Dakota</option> <option value="OH">Ohio</option> <option value="OK">Oklahoma</option> <option value="OR">Oregon</option> <option value="PA">Pennsylvania</option> <option value="RI">Rhode Island</option> <option value="SC">South Carolina</option> <option value="SD">South Dakota</option> <option value="TN">Tennessee</option> <option value="TX">Texas</option> <option value="UT">Utah</option> <option value="VT">Vermont</option> <option value="VA">Virginia</option> <option value="WA">Washington</option> <option value="WV">West Virginia</option> <option value="WI">Wisconsin</option> <option value="WY">Wyoming</option> </select> <input type="text" name="zip_estimate" id="zip_estimate" placeholder="Zip Code" value=""> <button type="submit" id="estimatenow">Estimate</button> </form> <div id="shipping_results"></div> </div> <script type="text/javascript"> jQuery(document).ready(function($) { //Set Config Values **REQUIRED** var store_id = ""; //Store ID can be found in source of the checkout. Look for "FC.checkout.config.storeDetails" var store_state = ""; //Two-letter abbreviation var store_postal_code = ""; //US Zip var store_domain = "YOURDOMAIN.foxycart.com"; //Your FoxyCart Domain var handling_fee = 0; var flat_rate_fee = 0; var customs_value_fee = 0; var is_residential = "true"; //Get Current Value var current_zip_estimate = fc_json.custom_fields.zip_estimate; var current_state_estimate = fc_json.custom_fields.state_estimate; if (current_zip_estimate) { $("#zip_estimate").val(current_zip_estimate); $("#state_estimate").val(current_state_estimate); getShippingEstimate(); } $("#estimateform").submit(function(e) { e.preventDefault(); $("#shipping_results").html("Loading..."); //Sets default values as hidden session vars $.getJSON('https://'+store_domain+'/cart?fcsid=' + fc_json.session_id + '&h:state_estimate=' + $("#state_estimate").val() + '&h:zip_estimate=' + $("#zip_estimate").val() + '&output=json&callback=?', function() { getShippingEstimate(); }); return false; }); function getShippingEstimate() { $("#shipping_results").html("Loading..."); var url = 'https://' + store_domain + '/v/1.1.0/api_json.php?'; url += "fcsid=" + fc_json.session_id; url += "&shipping_state=" + $("#state_estimate").val(); url += "&shipping_postal_code=" + $("#zip_estimate").val(); url += "&shipping_country=US"; url += "&store_state=" + store_state; url += "&store_postal_code=" + store_postal_code; url += "&store_country=US"; url += "&UOM_weight=LBS"; url += "&UOM_length=IN"; url += "&TotalWeight=" + fc_json.total_shippable_weight; url += "&HandlingFee=" + handling_fee; url += "&FlatRate=" + flat_rate_fee; url += "&CustomsValue=" + customs_value_fee; url += "&is_residential=" + is_residential; url += "&store_id=" + store_id; url += "&ThisAction=GetShippingCost"; url += "&callback=?"; $.getJSON(url, function(data) { if (data.result == "Error") { $("#shipping_results").html(data.details); } else if (data.result == "OK") { var results = "<ul>"; for (p in data.shipping_options) { price = parseFloat(data.shipping_options[p].price); results += "<li>" + data.shipping_options[p].method + " " + data.shipping_options[p].service_name + " $" + price.toFixed(2) + "</li>"; } results += "</ul>"; $("#shipping_results").html(results); } console.log(data); }); } }); </script>