Diksha
Diksha

Reputation: 1

Getting the price of Priority Mail Express in USPS shipping

I required to get the rate for standard post,priority mail as well as priority express mail.Using below code i am getting the price rates for priority mail and standard post but not for priority express mail.

When in service column i write the priority express mail then there was an error as given below(Priority mail express)

"The requested Mail Service is not available for the specified request attributes."

Code i am using is this:

{ 
    $url = "http://Production.ShippingAPIs.com/ShippingAPI.dll";
            $ch = curl_init();
            // set the target url
            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);
            $data = "API=RateV4&XML=<RateV4Request USERID=\"$userName\"><Package ID=\"1ST\"><Service>All</Service><ZipOrigination>$orig_zip</ZipOrigination><ZipDestination>$dest_zip</ZipDestination><Pounds>$weight</Pounds><Ounces>0</Ounces><Container/><Size>REGULAR</Size><Machinable>FALSE</Machinable></Package>
            </RateV4Request>";
            
            // 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);
            //print_r($data);exit;
            echo '<pre>'; print_r($params); echo'</pre>'; // Uncomment to see the full array
            //echo $params['RATEV4RESPONSE']['1ST'][$servicecode]['RATE'];exit;

}

Upvotes: 0

Views: 215

Answers (1)

Simon Kreuz
Simon Kreuz

Reputation: 595

Priority Mail Express is not available for all types of shipments and it might be restricted in this case. Given that your request works for other mailclasses, there's a high likelihood that this is a shipping, not technical issue. It would help if you can share the specific parameters that you're sending.

If you want to play around with USPS shipping rates you can retrieve shipping rates for free with an easy UI or API at https://goshippo.com.

Upvotes: 0

Related Questions