如何为Ingram微集成创建正确的订单测试?

mig*_*lio 5 php xml curl request

我正在尝试为ingram micro创建一个订单测试,但我还没有取得成果.

这是要发送的xml请求:

<OrderRequest>
   <Version>2.0</Version>
   <TransactionHeader>
      <SenderID>123456789</SenderID>
      <ReceiverID>987654321</ReceiverID>
      <CountryCode>MD</CountryCode>
      <LoginID>ingram_login</LoginID>
      <Password>ingram_password</Password>
      <TransactionID>54321</TransactionID>
   </TransactionHeader>
   <OrderHeaderInformation>
      <BillToSuffix />
      <AddressingInformation>
         <CustomerPO>TEST PO ONLY - DO NOT SHIP</CustomerPO>
         <ShipToAttention>Mrs Jones</ShipToAttention>
         <EndUserPO>EndUserPO_1</EndUserPO>
         <ShipTo>
            <Address>
               <ShipToAddress1>Red House Company</ShipToAddress1>
               <ShipToAddress2>1730 105TH ST</ShipToAddress2>
               <ShipToAddress3/>
               <ShipToCity>NEW RICHMOND</ShipToCity>
               <ShipToProvince>WI</ShipToProvince>
               <ShipToPostalCode>54017</ShipToPostalCode>
            </Address>
         </ShipTo>
      </AddressingInformation>
      <ProcessingOptions>
         <CarrierCode>F2</CarrierCode>
         <AutoRelease>H</AutoRelease>
         <ThirdPartyFreightAccount/>
         <KillOrderAfterLineError>N</KillOrderAfterLineError>
         <ShipmentOptions>
            <BackOrderFlag>Y</BackOrderFlag>
            <SplitShipmentFlag>N</SplitShipmentFlag>
            <SplitLine>N</SplitLine>
              <ShipFromBranches>10</ShipFromBranches>
            <DeliveryDate>20090901</DeliveryDate>
         </ShipmentOptions>
      </ProcessingOptions>
      <DynamicMessage>
         <MessageLines>Deliver to Mrs Jones</MessageLines>
      </DynamicMessage>
   </OrderHeaderInformation>
   <OrderLineInformation>
      <ProductLine>
         <SKU>TSXML3</SKU>
         <Quantity>1</Quantity>
         <CustomerLineNumber/>
         <ReservedInventory>
            <ReserveCode>C</ReserveCode>
             <ReserveSequence>01</ReserveSequence>
         </ReservedInventory>
         <CustomerPartNumber/>
         <UPC/>
         <ManufacturerPartNumber/>
         <ShipFromBranchAtLine>10</ShipFromBranchAtLine>
      </ProductLine>
      <CommentLine>
         <CommentText>TEST PO ONLY - DO NOT SHIP</CommentText>
      </CommentLine>
   </OrderLineInformation>
   <ShowDetail>1</ShowDetail>
</OrderRequest>
Run Code Online (Sandbox Code Playgroud)

英格拉姆微反应:

<OrderResponse>
    <Version>2.0</Version>
    <TransactionHeader>
        <SenderID>987654321</SenderID>
        <ReceiverID>123456789</ReceiverID>
        <ErrorStatus ErrorNumber="20196">
ERROR: One Productline can not have multiple parts in it when ShowDetail='2'
</ErrorStatus>
        <DocumentID>{5535EC2F-DB51-4D35-B492-6425A0B9F62D}</DocumentID>
        <TransactionID>54321</TransactionID>
        <TimeStamp>2016-01-27T11:45:19</TimeStamp>
    </TransactionHeader>
</OrderResponse>
Run Code Online (Sandbox Code Playgroud)

我一直在尝试和研究关于响应ErrorStatusProductline我还没有想出一个解决方案.提前致谢

对不起,没有ingram-micro标签

Ant*_*ony 2

只要查看我可以找到的IM-XML 文档<ProductLine>,您的示例的元素部分就有几个明显的问题:

<ManufacturerPartNumber>制造商零件号 - 请勿指定是否包含<SKU><UPC>包含在内

<UPC>EAN/UPC 编号 - 请勿指定是否包含<ManufacturerPartNumber><SKU>

<SKU>英迈产品代码编号 - 请勿指定是否包含<ManufacturerPartNumber>或 。<UPC>

显然,您应该只指定上述元素的值之一,您的示例指定了SKU和 的值UPC

<ReservedInventory>包含保留的库存信息。- 除非需要,否则不要指定。

通过快速浏览文档,我不清楚何时需要此元素,但是您为该元素指定了一个值,并且我在示例中的其他任何地方都没有看到任何明确的指示来表明为什么在您的代码中需要它示例案例。所以我们称这个问题为“也许”问题。

<ShipFromBranchAtLine>

我在文档中找不到对此元素的任何引用,因此它可能无效。我能找到的与该元素最接近的匹配是<ShipFromBranches>,它不属于该<ProductLine>元素。

<CustomerPartNumber>

同样,我在文档中找不到对此的引用。

<RequestedPrice>特别投标价家长:<SpecialBid>

当 , 应该位于元素内部时,您将其<RequestedPrice>作为 的直接子级。ProductLine<SpecialBid>

因此,考虑到上述所有内容,我注释掉了看起来错误的部分(或者对于我们来说可能是错误的),如下所示:

    <ProductLine>
        <SKU>NV9159</SKU>
        <Quantity>1</Quantity>
        <CustomerLineNumber/>
        <!-- ResvervedInventory : Unless required, do not specify
        <ReservedInventory>
            <ReserveCode>C</ReserveCode>
            <ReserveSequence>01</ReserveSequence>
        </ReservedInventory>
        -->
        <!-- CustomerPartNumber element not defined in spec.
        <CustomerPartNumber/>
        -->
        <!-- UPC : Do not specify if SKU included
        <UPC>SP-RACKTRAY</UPC>
         -->
        <!-- ManufacturerPartNumber : Do not specify if SKU included
        <ManufacturerPartNumber/>
         -->
        <!-- ShipFromBranchAtLine element not defined in spec.
        <ShipFromBranchAtLine>10</ShipFromBranchAtLine>
        -->
        <!-- RequestedPrice : parent = SpecialBid
        <RequestedPrice>163.36</RequestedPrice>
        -->
    </ProductLine>
Run Code Online (Sandbox Code Playgroud)

如果我们只是将这些部分拉出来(假设它们都不应该在其中)并将它们设置为空元素,它可能看起来像这样:

    <ProductLine>
        <SKU>NV9159</SKU>
        <Quantity>1</Quantity>
        <CustomerLineNumber/>
    </ProductLine>
Run Code Online (Sandbox Code Playgroud)

最后,直接引用您返回的错误:

当 ShowDetail='2' 时,一条产品线不能包含多个零件

我认为这直接是由于您为 和 都设置了值<SKU><UPC>这可能会使系统误认为您正在尝试包含“多个部件”(例如,两个不同的部件代码可能用于两个不同的实际部件) (非法)指定这两个元素的值。

但即使情况并非如此,鉴于该错误的实际措辞,似乎最容易尝试做的事情可能就是尝试简单地更改元素值ShowDetail

<ShowDetail>2</ShowDetail>
Run Code Online (Sandbox Code Playgroud)

<ShowDetail>1</ShowDetail>
Run Code Online (Sandbox Code Playgroud)

我会鼓励修复该ProductLine元素的其他问题,但由于响应错误单独存在,您是否尝试进行更改ShowDetail以查看是否会产生影响?