2013-11-29 3 views
5

Привет, Я создаю сайт WordPress для клиента, использующего WooCommerce. Сайт завершен, но клиент хочет, чтобы его можно было создавать на странице shop_order. Я больше всего понял, проблема заключается в моем XML-запросе API ИБП. Я проверил и перепроверить, и я не могу показаться, чтобы найти ошибку:UPS Shipping API - ShipmentConfirmRequest Error

<ShipmentConfirmResponse><Response><ResponseStatusCode>0</ResponseStatusCode><ResponseStatusDescription>Failure</ResponseStatusDescription><Error><ErrorSeverity>Hard</ErrorSeverity><ErrorCode>10002</ErrorCode><ErrorDescription>The XML document is well formed but the document is not valid</ErrorDescription></Error></Response></ShipmentConfirmResponse> 

Ниже мой XML-разметки с чувствительной информацией скрытой.

<?xml version="1.0" ?> 
<AccessRequest xml:lang='en-US'> 
    <AccessLicenseNumber>******</AccessLicenseNumber> 
    <UserId>********</UserId> 
    <Password>********</Password> 
</AccessRequest> 
    <?xml version="1.0" ?> 
    <ShipConfirmRequest xml:lang='en-US'> 
    <Request> 
    <TransactionReference> 
     <CustomerContext>Customer Context</CustomerContext> 
     <XpciVersion>1.0</XpciVersion> 
    </TransactionReference> 
    <RequestAction>ShipConfirm</RequestAction> 
    <RequestOption>validate</RequestOption> 
</Request> 
<Shipment> 
    <Shipper> 
     <ShipperNumber>*******</ShipperNumber> 
     <Name>Canyon Werks, LLC</Name> 
     <Address> 
      <AddressLine>2941 Brookspark Drive</AddressLine> 
      <AddressLine></AddressLine> 
      <City>North Las Vegas</City> 
      <StateProvinceCode>NV</StateProvinceCode> 
      <PostalCode>89030</PostalCode> 
      <CountryCode>US</CountryCode> 
     </Address> 
     <Phone> 
      <Number>7022552222</Number> 
     </Phone> 
    </Shipper> 
    <ShipTo> 
     <Name>Justin Walker</Name> 
     <Address> 
      <AddressLine>2675 Windmill Pkwy</AddressLine> 
      <AddressLine>3024</AddressLine> 
      <City>Henderson</City> 
      <StateProvinceCode>NV</StateProvinceCode> 
      <PostalCode>89074</PostalCode> 
      <CountryCode>US</CountryCode> 
     </Address> 
     <Phone> 
      <Number>7024609485</Number> 
     </Phone> 
    </ShipTo> 
    <ShipFrom> 
     <Name>Canyon Werks, LLC</Name> 
     <Address> 
      <AddressLine>2941 Brookspark Drive</AddressLine> 
      <AddressLine></AddressLine> 
      <City>North Las Vegas</City> 
      <StateProvinceCode>NV</StateProvinceCode> 
      <PostalCode>89030</PostalCode> 
      <CountryCode>US</CountryCode> 
     </Address> 
     <Phone> 
      <Number>7022552222</Number> 
     </Phone> 
    </ShipFrom> 
    <PaymentInformation> 
     <ShipmentCharge> 
      <Type>01</Type> 
      <BillShipper> 
       <AccountNumber>*******</AccountNumber> 
      </BillShipper> 
     </ShipmentCharge> 
    </PaymentInformation> 
    <Service> 
     <Code>03</Code> 
    </Service> 
    <Package> 
     <Packaging> 
      <Code>02</Code> 
      <Description>Customer Supplied</Description> 
     </Packaging> 
     <Dimensions> 
      <UnitOfMeasurement> 
       <Code>IN</Code> 
      </UnitOfMeasurement> 
      <Length>16</Length> 
      <Width>12</Width> 
      <Height>6</Height> 
     </Dimensions> 
     <PackageWeight> 
      <UnitOfMeasurement> 
       <Code>LBS</Code> 
      </UnitOfMeasurement> 
      <Weight>6.07</Weight> 
     </PackageWeight> 
    </Package> 
</Shipment> 
<LabelSpecification> 
    <LabelImageFormat> 
     <Code>GIF</Code> 
    </LabelImageFormat> 
</LabelSpecification> 
</ShipConfirmRequest> 

Я почти на этом, но я застрял в этом дорожном блоке. Если кто-то может пролить свет на это, это будет очень признательно.

+3

Ваш пример - два xml-документа - не один. Два '' - Это недопустимо. – ThW

+0

Кто-нибудь нашел решение? – Ani

+0

, как это ни странно, это стандарт ИБП. [вздох] Возьмите это как предзнаменование для дальнейших сюрпризов. Сначала они должны сделать некоторую предварительную обработку. –

ответ

-3

Инструкция обработки XML появляется дважды:

<?xml version="1.0" ?> 

Это указывает на наличие двух различных documnents XML:

<?xml version="1.0" ?> 
<AccessRequest xml:lang='en-US'> 
    <AccessLicenseNumber>******</AccessLicenseNumber> 
    <UserId>********</UserId> 
    <Password>********</Password> 
</AccessRequest> 

и

<?xml version="1.0" ?> 
<ShipConfirmRequest xml:lang='en-US'> 
    <Request> 
    <TransactionReference> 
     <CustomerContext>Customer Context</CustomerContext> 
     <XpciVersion>1.0</XpciVersion> 
    </TransactionReference> 
    <RequestAction>ShipConfirm</RequestAction> 
    <RequestOption>validate</RequestOption> 
    </Request> 
    <!-- ... --> 
</ShipConfirmRequest> 
+5

Хотя этот ответ был бы прав практически в любом другом контексте, он неверен в контексте API доставки UPS. Верьте или нет, API ИБП действительно требует запросов, которые состоят из такого плохо сформированного XML (не спрашивайте меня почему). –

+0

@TimBurch Я согласен с вашей заботой. –

+0

Странно, я знаю, что мне приходилось выпускать и формат. Я смог заставить его работать, просто я слишком старался ... lol. – Jusmark123

3

Это был служебный код контейнер должен быть включен в упаковку e контейнер. У меня было это до этого. Мне потребовалось некоторое время, чтобы выяснить эту тупую ошибку с моей стороны.

До:

... 
<Service> 
    <Code>03</Code> 
</Service> 
<Package> 
    ... 

После:

... 
<Package> 
    <Service> 
     <Code>03</Code> 
    </Service> 
    ... 

Спасибо за помощь, и да ИБП требует странный формат XML.

+0

Согласно документации ИБП, раздел «Перед» правилен, а не после. 01 ..... –

Смежные вопросы