/* This macro will be parsed as PHP code (see http://www.php.net) The calculateshipping function is called every time a shipping calculation request is made by Shopify. The function must return an array of available shipping options, otherwise no shipping options will be returned to your customers. */ function calculateshipping($DATA) { /* do not edit above this line */ $_RATES = array(); //calculate total weight $w = 0; foreach ($DATA['items'] as $i) { $w += $i['quantity']*$i['grams']/1000; } $w = $w*2.20462; //in pounds //pull from UPS $isresidential = true; if ($DATA['destination']['company_name'] !== null && $DATA['destination']['company_name'] != '') $isresidential = false; $_USPS_USERNAME = 'YOUR_USERNAME'; $_USPS_PASSWORD = 'YOUR_PASSWORD'; $_USPS_CONTRACTTYPE = 'C'; //N=none(retail), C=commercial, P=commercial plus $packages = array( array('weight'=>$w, 'length'=>18, 'width'=>12, 'height'=>4), ); $usps = new USPSAPI($_USPS_USERNAME,$_USPS_PASSWORD,$_USPS_CONTRACTTYPE); $usps->setOrigin($DATA['origin']['postal_code']); $usps->setDestination($DATA['destination']['province'],$DATA['destination']['postal_code'],$DATA['destination']['country'],$isresidential); $r = $usps->getRate($packages); if ($r) { foreach ($r as $_r) { $_RATES[] = array( "service_name" => $_r['name'], "service_code" => $_r['code'], "total_price" => $_r['amount']*100, //in cents "currency" => "USD", ); } } return $_RATES; /* do not edit below this line */ }