Я попытался внедрить FedEx API для расчета стоимости доставки между почтовыми индексами страны. Это хорошо работает для США. Он также работает из США в другую страну (пробовал для IN и AU). Но когда я попробовал это для двух почтовых индексов из Индии или Австралии как адрес отправителя и получателя. Это дает ниже ошибку: —
The transaction returned an Error.
Severity: ERROR
Source: crs
Code: 691
Message: The PurposeOfShipmentType is null, empty or invalid.
LocalizedMessage: The PurposeOfShipmentType is null, empty or invalid.
Не знаю в чем проблема. Я проверил значение PurposeOfShipmentType в wsdl-файле, который показан ниже под XML-кодом: —
First occurrence
<xs:element name="Purpose" type="ns:PurposeOfShipmentType" minOccurs="0">
<xs:annotation>
<xs:documentation>The reason for the shipment. Note: SOLD is not a valid purpose for a Proforma Invoice.</xs:documentation>
</xs:annotation>
</xs:element>
second occurrence
<xs:simpleType name="PurposeOfShipmentType">
<xs:restriction base="xs:string">
<xs:enumeration value="GIFT"/>
<xs:enumeration value="NOT_SOLD"/>
<xs:enumeration value="PERSONAL_EFFECTS"/>
<xs:enumeration value="REPAIR_AND_RETURN"/>
<xs:enumeration value="SAMPLE"/>
<xs:enumeration value="SOLD"/>
</xs:restriction>
</xs:simpleType>
Не понимаю, какой должна быть ценность. Ниже представлен массив, который я отправляю в функцию $ client -> getRates ($ request)
$request = Array
(
[WebAuthenticationDetail] => Array
(
[UserCredential] => Array
(
[Key] => *******
[Password] => *******
)
)
[ClientDetail] => Array
(
[AccountNumber] => *****
[MeterNumber] => *****
)
[TransactionDetail] => Array
(
[CustomerTransactionId] => *** Rate Available Services Request using PHP ***
)
[Version] => Array
(
[ServiceId] => crs
[Major] => 16
[Intermediate] => 0
[Minor] => 0
)
[ReturnTransitAndCommit] => 1
[RequestedShipment] => Array
(
[DropoffType] => REGULAR_PICKUP
[ShipTimestamp] => 2014-10-03T11:37:53+02:00
[Shipper] => Array
(
[Address] => Array
(
[StreetLines] => Array
(
[0] => 10 Fed Ex Pkwy
)
[City] => Memphis
[StateOrProvinceCode] =>
[PostalCode] => 110016
[CountryCode] => IN
)
)
[Recipient] => Array
(
[Address] => Array
(
[StreetLines] => Array
(
[0] => 13450 Farmcrest Ct
)
[City] => Herndon
[StateOrProvinceCode] =>
[PostalCode] => 302015
[CountryCode] => IN
)
)
[ShippingChargesPayment] => Array
(
[PaymentType] => SENDER
[Payor] => Array
(
[ResponsibleParty] => Array
(
[AccountNumber] => 510087500
[Contact] =>
[Address] => Array
(
[CountryCode] => IN
)
)
)
)
[PackageCount] => 2
[RequestedPackageLineItems] => Array
(
[0] => Array
(
[SequenceNumber] => 1
[GroupPackageCount] => 1
[Weight] => Array
(
[Value] => 2
[Units] => LB
)
[Dimensions] => Array
(
[Length] => 10
[Width] => 10
[Height] => 3
[Units] => IN
)
)
[1] => Array
(
[SequenceNumber] => 2
[GroupPackageCount] => 1
[Weight] => Array
(
[Value] => 5
[Units] => LB
)
[Dimensions] => Array
(
[Length] => 20
[Width] => 20
[Height] => 10
[Units] => IN
)
)
)
)
)
Для того, чтобы доставка из Индии в Индию работала внутри страны, вам нужно добавить в PurposeOfShipment
введите к запросу. Эта строка не является стандартной в коде Magento для доставки FedEx. Эта строка будет добавлена в CustomsClearanceDetail
заголовок как ребенок под CommercialInvoice
тогда строка под этим Purpose
который может иметь любое значение, которое PurposeOfShipment
есть.
Вот пример запроса, который я использовал, который возвратил правильные оценки доставки для Индии к отправке Индии.
'CustomsClearanceDetail' => array(
'CommercialInvoice' => array(
'Purpose' => "SOLD")
),
Если я не ошибаюсь, тестовый аккаунт FedEx не возвращает информацию, специфическую для Индии. До тех пор, пока она не будет сертифицирована командой FedEx и не предоставит вам производственный ключ, вы можете не получить согласованные тарифы для своей учетной записи. Пожалуйста, поправьте меня, если мое понимание неверно