亚马逊订单确认Feed

Ome*_*ees 3 amazon-mws

我正在使用订单确认Feed来取消亚马逊的订单.以下是我用来取消亚马逊订单的xml Feed格式.

我已成功将此Feed提交给MWS,但每次检查Feed提交结果时,它总是会出现此错误

'您提交的XML在第1行第485行(或附近)的Amazon Envelope XML级别上格式不正确.

我根据亚马逊销售:XML指南创建了xml格式.

<?xml version="1.0"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">

<Header>
    <DocumentVersion>1.01</DocumentVersion>
    <MerchantIdentifier>M_xxxxxx_108291953</MerchantIdentifier>
</Header>

<MessageType>OrderAcknowledgment</MessageType>
<Message>
    <MessageID>1</MessageID>
    <OrderAcknowledgement>
        <AmazonOrderID>123-1234567-1234567</AmazonOrderID>
        <StatusCode>Failure</StatusCode>
        <CancelReason>BuyerCanceled</CancelReason>
    </OrderAcknowledgment>
</Message>
</AmazonEnvelope>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决我在xml格式中缺少的内容吗?

Haz*_*zit 6

您的XML代码有两个问题:

  1. 亚马逊使用"OrderAcknowledgement",而不是"OrderAcknowledgement".虽然这种选择可能存在争议,但XSD并没有为不同的拼写留下任何空间.(这适用于MessageType打开和关闭XML标记,您的拼写仅适用于开始标记)
  2. CancelReason仅在<Item>子结构内有效.

以下XML验证:

<?xml version="1.0"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
    <Header>
    <DocumentVersion>1.01</DocumentVersion>
    <MerchantIdentifier>M_xxxxxx_108291953</MerchantIdentifier>
</Header>
<MessageType>OrderAcknowledgement</MessageType>
<Message>
    <MessageID>1</MessageID>
    <OrderAcknowledgement>
        <AmazonOrderID>123-1234567-1234567</AmazonOrderID>
        <StatusCode>Failure</StatusCode>
        <Item>
            <AmazonOrderItemCode>12345678901234</AmazonOrderItemCode>
            <CancelReason>BuyerCanceled</CancelReason>
        </Item>
        <Item>          
            <AmazonOrderItemCode>12345678901235</AmazonOrderItemCode>
            <CancelReason>BuyerCanceled</CancelReason>
        </Item>
        <Item>
            <AmazonOrderItemCode>12345678901237</AmazonOrderItemCode>
            <CancelReason>BuyerCanceled</CancelReason>
        </Item>
    </OrderAcknowledgement>
</Message>
</AmazonEnvelope>
Run Code Online (Sandbox Code Playgroud)