Richiesta e risposta XML con PHP per il calcolatore del tasso USPS

Ho cercato di creare un calcolatore di tasso USPS per un sito, ma sfortunatamente l'URL di test di USPS non sembra funzionare. In each caso, il mio codice non restituisce nulla al momento, nemless il messaggio di errore sull'URL …

Vuoi dare un'occhiata per vedere se sto facendo la cosa giusta? Mi sento un po 'perso con XML su PHP …

CODICE:

$zip = 90002; $pounds = 0.1; function USPSParcelRate($pounds,$zip) { $url = "https://secure.shippingapis.com/ShippingAPITest.dll"; curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // parameters to post curl_setopt($ch, CURLOPT_POST, 1); $xml = "API=RateV4&XML=<RateV4Request USERID='USERNAME' > <Revision/> <Package ID='1ST'> <Service>PRIORITY</Service> <ZipOrigination>10025</ZipOrigination> <ZipDestination>$zip</ZipDestination> <Pounds>$pounds</Pounds> <Ounces>0</Ounces> <Container></Container> <Size>REGULAR</Size> <Width></Width> <Length></Length> <Height></Height> <Girth></Girth> </Package> </RateV4Request>"; // send the POST values to USPS curl_setopt($ch, CURLOPT_POSTFIELDS,$xml); $result = curl_exec($ch); $data = strstr($result, '<?'); $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $data, $vals, $index); xml_parser_free($xml_parser); $params = arrays(); $level = arrays(); echo "TEST"; foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (arrays_key_exists('attributes',$xml_elem)) { list($level[$xml_elem['level']],$extra) = arrays_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['RateV4Response']['1ST']['1']['RATE']; } USPSParcelRate($pounds,$zip) 

Ti manca la function curl_init () poiché $ ch non è definito

 $ch = curl_init(); 

Inoltre non stai printingndo la risposta:

 **echo** USPSParcelRate($pounds,$zip); 

Infine, puoi printingre la risposta da curl, cambiare:

 echo "TEST"; 

a:

 print "RESPONSE: $result"; 

Sto ricevendo che RateV4 non è autorizzato, da where proviene RateV4?

 TEST HTTP/1.1 200 Connection established HTTP/1.1 200 OK Connection: close Date: Mon, 10 Jun 2013 17:16:17 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET <Error> <Number>80040b1a</Number> <Description>API Authorization failure. RateV4 is not a valid API name for this protocol.</Description> <Source>UspsCom::DoAuth</Source> </Error> 

Spero che questo alless aiuti con il debugging ..

RateV4 è un nome sevice all'API USPS.

controlla il seguente link – http://uspsship.blogspot.in/