Веб-сервисы 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 может решить проблему, но для меня это не вариант. Может это тебе поможет?

Другие вопросы по тегам