Веб-сервисы Fedex: ОШИБКА 9040 - Не удается отследить отслеживание
У меня проблемы с попыткой получения информации об отслеживании с помощью веб-служб FedEx. Я использую правильный номер для отслеживания, и я могу просмотреть подробную информацию на сайте FedEx. Тем не менее, я получаю сообщение об ошибке 9040 "Никакая информация о следующих отгрузках не была получена нашей системой. Пожалуйста, попробуйте еще раз или свяжитесь со службой поддержки по телефону 1.800.Go.FedEx(R) 800.463.3339". Я что-то пропускаю?
Мой код:
<?php
$path_to_wsdl = "URL_TO_WSDL";
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient($path_to_wsdl, array('trace' => 1));
$request['WebAuthenticationDetail'] = array(
'UserCredential' =>array(
'Key' => 'MY_KEY',
'Password' => 'MY_PASSWORD'
)
);
$request['ClientDetail'] = array(
'AccountNumber' => 'MY_ACCT',
'MeterNumber' => 'MY_METER'
);
$request['TransactionDetail'] = array('CustomerTransactionId' => 'ActiveShipping');
$request['Version'] = array(
'ServiceId' => 'trck',
'Major' => '5',
'Intermediate' => '0',
'Minor' => '0'
);
$request['PackageIdentifier'] = array(
'Value' => 'TRACKING#',
'Type' => 'TRACKING_NUMBER_OR_DOORTAG');
$response = $client->track($request);
var_dump($response);
?>
3 ответа
Понял!
Позвоните в отдел веб-сервисов, и они сказали мне удалить "бета" из файла wsdl. Похоже, это другой адрес, чем я нашел в ответах на эту проблему раньше. В строке 1507 файла wsdl внесите следующие изменения:
От:
<s1:address location="https://wsbeta.fedex.com:443/web-services/track"/>
к
<s1:address location="https://ws.fedex.com:443/web-services/track"/>
Я немного изменил остальную часть своего кода, но это не должно было изменить ситуацию. Чтобы быть в безопасности, вот оно:
<?php
$path_to_wsdl = "PATH_TO_WSDL_FILE";
$client = new SoapClient($path_to_wsdl, array('trace' => 1));
$trackRequest = array(
'WebAuthenticationDetail' => array(
'UserCredential' => array(
'Key' => 'MY_KEY',
'Password' => 'MY_PASSWORD'
)
),
'ClientDetail' => array(
'AccountNumber' => 'MY_ACCT_#',
'MeterNumber' => 'MY_METER_#'
),
'Version' => array(
'ServiceId' => 'trck',
'Major' => '5',
'Intermediate' => '0',
'Minor' => '0'
),
'PackageIdentifier' => array(
'Type' => 'TRACKING_NUMBER_OR_DOORTAG',
'Value' => 'THE_TRACKING_#',
),
'CustomerTrasactionId',
'IncludeDetailedScans' => 1
);
$response = $client->track($trackRequest);
var_dump($response);
?>
У меня такая же проблема при использовании xml-запроса. Я решил проблему следующим образом:
$endpointurl = "https://gatewaybeta.fedex.com:443/xml"; // remove word "beta"
$endpointurl = "https://gateway.fedex.com:443/xml";
...
$request = stream_context_create($form);
$browser = fopen($endpointurl , 'rb' , false , $request);
$response = stream_get_contents($browser);
...
Я тоже работаю над этой же проблемой. Я пробую несколько вещей, и вы можете увидеть, работает ли что-нибудь для вас. Попробуйте включить элементы ShipDateRangeBegin и End, номера тестового аккаунта / плательщика или информацию о получателе. Я обнаружил, что переключение на почтовые запросы xml и ssl может решить проблему, но для меня это не вариант. Может это тебе поможет?