5

FedexのWebサービスを使用して追跡情報を取得しようとすると問題が発生します。有効な追跡番号を使用しており、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);


?>
4

3 に答える 3

3

とった!

Webサービス部門に電話すると、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);

?>
于 2012-06-07T23:26:15.740 に答える
0

私もこれと同じ問題に取り組んでいます。私はいくつかのことを試みています、そしてあなたは何かがあなたのために働くかどうか見ることができます。ShipDateRangeBegin要素とEnd要素、テストアカウント/支払人番号、または宛先情報を含めてみてください。ここで、xmlおよびssl postリクエストに切り替えることで問題が解決する可能性があることがわかりましたが、それは私にとっての選択肢ではありません。多分それはあなたを助けますか?

于 2012-06-07T15:31:33.333 に答える
0

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);
...
于 2012-06-22T08:06:05.747 に答える