У меня возникают проблемы с поиском информации отслеживания с помощью веб-служб 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); ?>
Понял!
Позвоните в отдел веб-сервисов, и они сказали мне удалить «бета» из файла 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); ?>
Я также работаю над этой же проблемой. Я пытаюсь несколько вещей, и вы можете видеть, работает ли что-нибудь для вас. Попробуйте включить элементы ShipDateRangeBegin и End, номера вашей тестовой учетной записи / плательщика или информацию о получателе. Я нашел здесь, что переход на xml и ssl post-запросы якобы решает проблему, но это не вариант для меня. Может быть, это вам поможет?
У меня такая же проблема, когда вы используете xml-request. Я решил проблему таким образом:
$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); ...