【问题标题】:Fedex Web Services: ERROR 9040 - Can't pull up trackingFedex Web 服务:错误 9040 - 无法启动跟踪
【发布时间】:2012-06-07 00:49:03
【问题描述】:

我在尝试使用 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);


?>

【问题讨论】:

    标签: php soap fedex


    【解决方案1】:

    知道了!

    致电网络服务部门,他们告诉我从 wsdl 文件中删除“测试版”。这似乎与我之前在回答此问题时发现的地址不同。在 wsdl 文件的第 1507 行,进行以下更改:

    发件人:

    <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);
    
    ?>
    

    【讨论】:

    • 谢谢。这个很有用
    【解决方案2】:

    我也在解决同样的问题。我正在尝试几件事,你可以看看有没有什么适合你的。尝试包括 ShipDateRangeBegin 和 End 元素、您的测试帐户/付款人号码或目的地信息。我发现here 切换到 xml 和 ssl 发布请求据说可以解决问题,但这不是我的选择。也许它会帮助你?

    【讨论】:

    • 降级到 wsdl 的第 4 版没有帮助。就处理传入的请求而言,我认为联邦快递端有问题。
    【解决方案3】:

    我在使用 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);
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2011-05-23
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多