Ошибка возврата API USPS — нет ошибки в XML

Я использую cURL для отправки POST-информации в калькулятор тарифов доставки usps.

$info = "<?xml version='1.0' encoding='UTF-8'?>
<RateV4Request USERID='xxxx'>
<Package ID='$aucid'>
<Service>Priority</Service>
<ZipOrigination>xxxx</ZipOrigination>
<ZipDestination>$zip</ZipDestination>
<Size>$size</Size>
<Pounds>$pounds</Pounds>
<Ounces>$ounces</Ounces>
<Container>RECTANGULAR</Container>
<Width>$width</Width>
<Length>$length</Length>
<Height>$height</Height>
<SpecialServices><SpecialService>108</SpecialService></SpecialServices>
</Package>
</RateV4Request>";

$array = array("API" => "RateV4", "XML" => $info);

$link = "http://production.shippingapis.com/ShippingAPI.dll";

curl_setopt($ch, CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$answer=curl_exec($ch);
echo $answer;
curl_close($ch);

Когда я подписался на веб-инструменты USPS, было отправлено письмо с USERID (я заменил его на xs из-за его деликатного характера).

В том же письме было указано, что расчет тарифов разрешен.
Вот ошибка, которая возвращается:

80040B19XML Синтаксическая ошибка:
Пожалуйста, проверьте запрос XML, чтобы увидеть, можно ли его проанализировать .USPSCOM :: DoAuth

Я пошел вперед и взял XML, который отражен, и подключил его к xmlvalidation.com и он не нашел ошибок. Я также попробовал это без <?xml version="1.0" encoding="UTF-8"> линия наверху.

1

Решение

PHP превращает ID пакета в научную нотацию, потому что это просто большое «число», поэтому вам нужно помешать этому, сделав его строкой.

Вместо этого: <Package ID='$aucid'>

Попробуй это: <Package ID=\"".$aucid."\">

Вам также может понадобиться обернуть весь этот XML в rawurlencode

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]