【问题标题】:How to create a correct order test for Ingram micro integration?如何为英格拉姆微集成创建正确的订单测试?
【发布时间】:2016-05-06 03:36:47
【问题描述】:

我正在尝试为 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>

英格拉姆微响应:

<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>

我一直在尝试和研究有关ErrorStatusProductline 的响应,但我还没有找到解决方案。 提前致谢

抱歉,没有ingram-micro标签

【问题讨论】:

    标签: php xml curl request


    【解决方案1】:

    看看我能找到的IM-XML documentation,你的示例的&lt;ProductLine&gt; 元素部分有几个明显的问题:

    &lt;ManufacturerPartNumber&gt; 制造商部件号 - 不要指定是否包含&lt;SKU&gt;&lt;UPC&gt;

    &lt;UPC&gt; EAN/UPC 编号 - 不要指定是否包含&lt;ManufacturerPartNumber&gt;&lt;SKU&gt;

    &lt;SKU&gt; Ingram Micro 产品代码编号 - 不要指定是否包含&lt;ManufacturerPartNumber&gt;&lt;UPC&gt;

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

    &lt;ReservedInventory&gt; 包含保留的库存信息。 - 除非需要,否则不要指定。

    从我对文档的快速浏览中我并不清楚何时需要这样做,但是您为该元素指定了一个值,并且我在示例中的其他任何地方都没有看到任何明确的指示来说明为什么会这样在您的示例案例中需要。所以让我们称之为“可能”问题。

    &lt;ShipFromBranchAtLine&gt;

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

    &lt;CustomerPartNumber&gt;

    同样,我在文档中找不到对此的参考。

    &lt;RequestedPrice&gt;特价 家长:&lt;SpecialBid&gt;

    你有&lt;RequestedPrice&gt; 作为ProductLine 的直接子代,而它应该在&lt;SpecialBid&gt; 元素内。

    考虑到以上所有因素,我将看似错误的部分(或可能是错误的,对我们的可能)进行了如下注释:

        <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>
    

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

        <ProductLine>
            <SKU>NV9159</SKU>
            <Quantity>1</Quantity>
            <CustomerLineNumber/>
        </ProductLine>
    

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

    当 ShowDetail='2' 时,一个 Productline 中不能有多个部分

    我认为这直接是由于您为 &lt;SKU&gt;&lt;UPC&gt; 设置了一个值,这可能会使系统误以为您正在尝试包含“多个部分”(例如,两个不同的部分代码当指定(非法)这两个元素的值时,可能是两个不同的实际部分。

    但即使情况并非如此,考虑到该错误的实际措辞,这似乎是最简单的尝试,可能是尝试简单地更改 ShowDetail 元素值:

    <ShowDetail>2</ShowDetail>
    

    <ShowDetail>1</ShowDetail>
    

    我会鼓励使用 ProductLine 元素来解决其他问题,但由于响应错误单独出现,您是否尝试更改 ShowDetail 以查看是否有所作为?

    【讨论】:

    • 我试过把 ShowDetail 和 1 和 0 放在一起,结果是ERROR: You are not allowed to place an order with specified part numbers without ShowDetail='2'
    • 我已经阅读了文档,是的,它非常复杂。我已经联系了英格拉姆支持,但他们仍然没有给我正确的 xml 结构。感谢您的帮助。
    【解决方案2】:

    我试图发送数据设置product line 像这样:

    <ProductLine>
     <SKU>TSXML3</SKU>
     <Quantity>1</Quantity>
     <CustomerLineNumber/>
     <ReservedInventory>
        <ReserveCode>C</ReserveCode>
         <ReserveSequence>01</ReserveSequence>
     </ReservedInventory>
    </ProductLine>
    

    我收到了这样的回复:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <OrderResponse>
        <Version>2.0</Version>
        <TransactionHeader>
            <SenderID>987654321</SenderID>
            <ReceiverID>123456789</ReceiverID>
            <ErrorStatus ErrorNumber="21340">Order Rejected</ErrorStatus>
            <DocumentID>{584B79A8-E320-4183-A1BB-3DEE24CA673A}</DocumentID>
            <TransactionID>54321</TransactionID>
            <TimeStamp>2016-02-08T05:49:12</TimeStamp>
        </TransactionHeader>
        <OrderInfo>
            <OrderNumbers>
                <BranchOrderNumber></BranchOrderNumber>
                <CustomerPO>TEST PO ONLY - DO NOT SHIP</CustomerPO>
                <ShipToAttention>Mrs Jones</ShipToAttention>
                <ThirdPartyFreightAccount></ThirdPartyFreightAccount>
                <ShipToAddress1></ShipToAddress1>
                <ShipToAddress2></ShipToAddress2>
                <ShipToCity></ShipToCity>
                <ShipToProvince></ShipToProvince>
                <ShipToPostalCode></ShipToPostalCode>
                <AddressErrorMessage AddressErrorType="  "></AddressErrorMessage>
                <ContractNumber></ContractNumber>
                <OrderSuffix Suffix="">
                    <LineInformation>
                        <ProductLine>
                            <LineError></LineError>
                            <SKU>TSXML3</SKU>
                            <UnitPrice>0.00</UnitPrice>
                            <IngramLineNumber></IngramLineNumber>
                            <CustomerLineNumber>000</CustomerLineNumber>
                            <ShipFromBranch>10</ShipFromBranch>
                            <OrderQuantity>1</OrderQuantity>
                            <AllocatedQuantity>0</AllocatedQuantity>
                            <BackOrderedQuantity>0</BackOrderedQuantity>
                            <BackOrderETADate></BackOrderETADate>
                            <PriceDerivedFlag></PriceDerivedFlag>
                            <ForeignCurrency></ForeignCurrency>
                            <FreightRate>0.00</FreightRate>
                            <TransitDays>0</TransitDays>
                            <LineBillToSuffix>000</LineBillToSuffix>
                        </ProductLine>
                        <CommentLine>
                            <CommentText>TEST PO ONLY - DO NOT SHIP</CommentText>
                            <CommentLineNumber></CommentLineNumber>
                        </CommentLine>
                    </LineInformation>
                </OrderSuffix>
            </OrderNumbers>
        </OrderInfo>
    </OrderResponse>
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 2022-07-06
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多