在fedex rate services api中获取错误

时间:2015-08-28 05:26:51

标签: php fedex

我在回复率服务api时遇到错误,但没有得到我错过的内容。

这是我的代码

$path_to_wsdl = Folder::realpath(dirname(__FILE__) . '/wsdl/RateService_v18.wsdl');
        ini_set("soap.wsdl_cache_enabled", "0");
        $client = new SoapClient($path_to_wsdl, array('trace' => 1, 'stream_context' => stream_context_create(array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false)))));



        $request['WebAuthenticationDetail'] = array(
            'UserCredential' => array(
                'Key' => 'fedex key',
                'Password' => 'fedex password'
            )
        );
        $request['ClientDetail'] = array(
            'AccountNumber' => 'fedex account number',
            'MeterNumber' => 'fedex meter no.'
        );
        $request['TransactionDetail'] = array(
            'CustomerTransactionId' => ' *** Rate Request v18 using PHP ***'
        );
        $request['Version'] = array(
            'ServiceId' => 'crs',
            'Major' => '18',
            'Intermediate' => '0',
            'Minor' => '1'
        );
        $request['ReturnTransitAndCommit'] = true;
        $request['RequestedShipment']['DropoffType'] = 'REGULAR_PICKUP'; // valid values REGULAR_PICKUP, REQUEST_COURIER, ...
        $request['RequestedShipment']['ShipTimestamp'] = date('c');
        $request['RequestedShipment']['ServiceType'] = 'PRIORITY_OVERNIGHT'; // valid values STANDARD_OVERNIGHT, PRIORITY_OVERNIGHT, FEDEX_GROUND, ...
        $request['RequestedShipment']['PackagingType'] = 'YOUR_PACKAGING'; // valid values FEDEX_BOX, FEDEX_PAK, FEDEX_TUBE, YOUR_PACKAGING, ...
        $request['RequestedShipment']['Shipper'] = array('Address' => array(
                'StreetLines' => array('10 Fed Ex Pkwy'), // Origin details
                'City' => 'Memphis',
                'StateOrProvinceCode' => 'TN',
                'PostalCode' => '38115',
                'CountryCode' => 'US'));
        $request['RequestedShipment']['Recipient'] = array(
            'Address' => array(
                'StreetLines' => array('13450 Farmcrest Ct'), // Destination details
                'City' => 'Herndon',
                'StateOrProvinceCode' => 'VA',
                'PostalCode' => '20171',
                'CountryCode' => 'US'
            )
        );
        $request['RequestedShipment']['ShippingChargesPayment'] = array(
            'PaymentType' => 'SENDER',
            'Payor' => array(
                'AccountNumber' => 'fedex acc no.',
                'CountryCode' => 'US'
            )
        );
        $request['RequestedShipment']['RateRequestTypes'] = 'ACCOUNT';
        $request['RequestedShipment']['RateRequestTypes'] = 'LIST';
        $request['RequestedShipment']['PackageCount'] = '2';
        $request['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES';  //  Or PACKAGE_SUMMARY
        $request['RequestedShipment']['RequestedPackageLineItems'] = array(
            '0' => array(
                'Weight' => array(
                    'Value' => 2.0,
                    'Units' => 'LB'
                ),
                'Dimensions' => array(
                    'Length' => 10,
                    'Width' => 10,
                    'Height' => 3,
                    'Units' => 'IN'
                )
            ),
            '1' => array(
                'Weight' => array(
                    'Value' => 5.0,
                    'Units' => 'LB'
                ),
                'Dimensions' => array(
                    'Length' => 20,
                    'Width' => 20,
                    'Height' => 10,
                    'Units' => 'IN'
                )
            )
        );




        try {
            return $client->getRates($request);
        } catch (SoapFault $exception) {
            return $exception;
        }

这是我得到的错误异常

[faultstring] => Fault
    [faultcode] => SOAP-ENV:Server
    [detail] => stdClass Object
        (
            [cause] => UnrecoverableClientError
            [code] => SchemaError
            [desc] => validation failure for RateRequest Error:cvc-enumeration-valid: Value '1' is not facet-valid with respect to enumeration
        )

我坚持使用这个特定的行 - “RateRequest错误的验证失败:cvc-enumeration-valid:值'1'在枚举方面不是facet-valid。”

1 个答案:

答案 0 :(得分:2)

终于得到了答案

替换RateService_v18.wsdl文件中下面给出的行

<xs:element name="Minor" type="xs:int" fixed="1" minOccurs="1">

<xs:element name="Minor" type="xs:int" minOccurs="1">

并将参数Minor发送为0,如下所示

$request['Version'] = array(
            'ServiceId' => 'crs',
            'Major' => '18',
            'Intermediate' => '0',
            'Minor' => '0'
        );