'55448', 'delivery_postal' => '60608', 'add_charges' => array(4, 8), // Lift-gate and residential delivery accessorials. 'items' => array( 0 => array( 'weight' => 500, 'pallets' =>1, 'pieces' => 1, 'class' => 50, 'length' => 48, // Length, width, and height are optional and in inches. 'width' => 40, 'height' => 36, ), ), )); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, true); // Do a POST. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo "\n ***** Create [POST] ***** \n"; echo sprintf("URL: %s\n", $info['url']); echo sprintf("HTTP Status: %s\n", $info['http_code']); $xml = new SimpleXMLElement($html); // Method: Retrieve [GET] $content = $xml->head->meta->attributes()->content; list($temp, $rateUrl) = explode('=', $content); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $rateUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, false); // Do a GET. $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo "\n ***** Retrieve [GET] ***** \n"; echo sprintf("URL: %s\n", $info['url']); echo sprintf("HTTP Status: %s\n", $info['http_code']); echo "Rate Results:\n"; $retrieveXml = new SimpleXMLElement($html); foreach ($retrieveXml->rate_results->rate_result as $result) { echo sprintf(" %s: $%s\n", $result->contract->carrier->name, $result->total_charge); } // Method: List [GET] $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, false); // Do a GET. $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo "\n ***** List [GET] ***** \n"; echo sprintf("URL: %s\n", $info['url']); echo sprintf("HTTP Status: %s\n", $info['http_code']); // Display 3 rate requests in the list. $i = 0; $xml = new SimpleXMLElement($html); foreach ($xml->rate_request as $request) { foreach ($request as $key => $value) { echo ucwords(str_replace('_', ' ', $key)).': '.$value."\n"; } $i++; if ($i < 3) { echo "------------------------------\n"; } else { break; } } // Rate Dispatch // Method: Create [POST] $dCreateUrl = sprintf('https://%s/api.php/rest/rate_dispatch', $hostname); // Get the request hash and the first contract hash. $rHash = explode('/', $rateUrl); $rHash = $rHash[6]; $cHash = (string) $retrieveXml->rate_results->rate_result[0]->contract->hash; $data = http_build_query(array( 'p_company_name' => 'Demo Company', 'p_contact_name' => 'John Demo', 'p_address' => '11325 Xeon St NW', 'p_address_2' => '', // Optional 'p_city' => 'Coon Rapids', 'p_phone' => '123-456-7890', 'p_extension' => '123', // Optional 'p_date' => date('m/d/Y', strtotime('+0 weekday')), // Limited to the next 5 business days. Format: MM/DD/YYYY 'p_time_1' => '8:00AM', 'p_time_2' => '5:00PM', 'd_company_name' => 'Demo Company', 'd_contact_name' => 'John Demo', 'd_address' => '1234 Demo St', 'd_address_2' => '', // Optional 'd_city' => 'Chicago', 'd_phone' => '123-456-7890', 'd_extension' => '123', // Optional 'rate_request_hash' => $rHash, 'contract_hash' => $cHash, 'items' => array( 0 => array( 'description' => 'Demo Item', ), ), )); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $dCreateUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, true); // Do a POST. curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo "\n ***** Dispatch Create [POST] ***** \n"; echo sprintf("URL: %s\n", $info['url']); echo sprintf("HTTP Status: %s\n", $info['http_code']); $dCreateXml = new SimpleXMLElement($html); // Method: Retrieve [GET] $content = $dCreateXml->head->meta->attributes()->content; list($temp, $dispatchUrl) = explode('=', $content); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $dispatchUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, false); // Do a GET. $html = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); echo "\n ***** Retrieve [GET] ***** \n"; echo sprintf("URL: %s\n", $info['url']); echo sprintf("HTTP Status: %s\n", $info['http_code']); $dRetrieveXml = new SimpleXMLElement($html); foreach ($dRetrieveXml as $key => $value) { if (strlen($value)) { echo ucwords(str_replace('_', ' ', $key)).': '.$value."\n"; } }