Jump to content

Get Shipping Rates Function Not Working


ryanfilard
 Share

Recommended Posts

Here is my code, it is not working.

	 
<?PHP 

function USPSParcelRate($weight,$dest_zip) {

$userName = '696RYANW7228';
$orig_zip = '11705'; 


$url = "http://Production.ShippingAPIs.com/ShippingAPI.dll";
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);


curl_setopt($ch, CURLOPT_POST, 1);

$data = "API=RateV3&XML=<RateV3Request USERID=\"$userName\"><Package ID=\"1ST\"><Service>PRIORITY</Service><ZipOrigination>$orig_zip</ZipOrigination><ZipDestination>$dest_zip</ZipDestination><Pounds>$weight</Pounds><Ounces>0</Ounces><Size>REGULAR</Size><Machinable>TRUE</Machinable></Package></RateV3Request>";

// send the POST values to USPS
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

$result=curl_exec ($ch);
$data = strstr($result, '<?');
// echo '<!-- '. $data. ' -->'; // Uncomment to show XML in comments
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
	if (array_key_exists('attributes',$xml_elem)) {
		list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
	} else {
	$level[$xml_elem['level']] = $xml_elem['tag'];
	}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
	$php_stmt .= '[$level['.$start_level.']]';
	$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}
curl_close($ch);
// echo '<pre>'; print_r($params); echo'</pre>'; // Uncomment to see xml tags
return $params['RATEV3RESPONSE']['1ST']['1']['RATE'];
}

echo USPSParcelRate(10,11705);

?>

 

Link to comment
Share on other sites

Perhaps error reporting has been suppressed.

 

Try using error_reporting( -1 )

 

If display_errors in php.ini is set to 0, set it to 1. Using ini_set( 'display_errors', 1 ) won't show parse errors, as the scripts are parsed before they are executed.

Link to comment
Share on other sites

This is what I got

 

Shipping:

Strict Standards: USPSParcelRate() [function.uspsparcelrate]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for 'CDT/-5.0/DST' instead in /home/samred/public_html/content/usps.php on line 62

 

Notice: Undefined index: RATEV3RESPONSE in /home/******/public_html/content/usps.php on line 62

Link to comment
Share on other sites

There you go. In fact, your function is returning a variable that gets 'declared' as an array, and then nothing gets done with it.

 

Did you write this function? If not, you should get support from the author. This is a forum for PHP programmers to get help.

Link to comment
Share on other sites

This thread is more than a year old.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.