【问题标题】:Amazon MWS SubmitFeed Updating stock quantity亚马逊 MWS SubmitFeed 更新库存数量
【发布时间】:2015-03-26 14:06:46
【问题描述】:

我在使用亚马逊 MWS 更新库存数量时遇到问题。我的 Feed 已提交并处理,但出现错误,但如果我通过暂存器提交相同的 XML,库存更新将被接受并处理。

(商户 id 特意加星标)

提交和回复如下:

<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
    <DocumentVersion>1.01</DocumentVersion>
    <MerchantIdentifier>************</MerchantIdentifier>
</Header>
<MessageType>Inventory</MessageType>
<Message>
    <MessageID>1</MessageID>
    <OperationType>Update</OperationType>
    <Inventory>
        <SKU>BUS999904</SKU>
        <Quantity>269</Quantity>
    </Inventory>
</Message>
<Message>
    <MessageID>2</MessageID>
    <OperationType>Update</OperationType>
    <Inventory>
        <SKU>PROBS-HO-01</SKU>
        <Quantity>137</Quantity>
    </Inventory>
</Message>

然后回应:

<?xml version="1.0" encoding="UTF-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
    <DocumentVersion>1.02</DocumentVersion>
    <MerchantIdentifier>M_ONTRACKSCO_1106147</MerchantIdentifier>
</Header>
<MessageType>ProcessingReport</MessageType>
<Message>
    <MessageID>1</MessageID>
    <ProcessingReport>
        <DocumentTransactionID>54774016520</DocumentTransactionID>
        <StatusCode>Complete</StatusCode>
        <ProcessingSummary>
            <MessagesProcessed>2</MessagesProcessed>
            <MessagesSuccessful>0</MessagesSuccessful>
            <MessagesWithError>2</MessagesWithError>
            <MessagesWithWarning>0</MessagesWithWarning>
        </ProcessingSummary>
        <Result>
            <MessageID>1</MessageID>
            <ResultCode>Error</ResultCode>
            <ResultMessageCode>25</ResultMessageCode>
            <ResultDescription>We are unable to process the XML feed because one or more items are invalid. Please re-submit the feed.  </ResultDescription>
        </Result>
        <Result>
            <MessageID>2</MessageID>
            <ResultCode>Error</ResultCode>
            <ResultMessageCode>25</ResultMessageCode>
            <ResultDescription>We are unable to process the XML feed because one or more items are invalid. Please re-submit the feed.</ResultDescription>
        </Result>
    </ProcessingReport>
</Message>

任何人都可以提供任何帮助,或者有效的股票更新提要的指针/示例将是最受欢迎的。

谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-mws


    【解决方案1】:

    我终于解决了 - 我的帖子中的提要类型不正确。它应该设置为 _POST_INVENTORY_AVAILABILITY_DATA_。

    【讨论】:

      【解决方案2】:

      您的 XML 似乎在提要末尾缺少 &lt;/AmazonEnvelope&gt;,但在此处粘贴时很容易出错。添加后,我就能够根据我的 XSD 副本验证您的 XML。除此之外,我的库存 Feed 仅在一个方面有所不同:我在每个 Quanitity 后面紧跟着一个额外的 &lt;FulfillmentLatency&gt;1&lt;/FulfillmentLatency&gt;,根据 XSD,这不是强制性的。

      【讨论】:

      • 嗨 Hazzit - 感谢您的回复。你是对的,由于粘贴错误,关闭的 丢失了。我尝试为每个项目添加附加字段,但没有任何乐趣。仍然得到相同的错误代码 25。我又回到了用细齿梳子拖网的 XSD 中……
      【解决方案3】:

      亚马逊 MWS 更新库存示例代码:

      <?php
      /**********************************************************
      * Update inventory stock through amazon mws api
      *
      ***********************************************************/
      
      $sku1        = '10101-AM';
      $quantity1   = '9';
      $leadTimeToShip1 = '7';
      
      //amazon mws credentials
      $amazonSellerId         = 'xxxxxx';
      $amazonMWSAuthToken     = 'xxxxxx';
      $amazonAWSAccessKeyId   = 'xxxxxx';
      $amazonSecretKey        = 'xxxxxx';
      $amazonMarketPlaceId    = 'xxxxxx';
      
      $param = array();
      $param['AWSAccessKeyId']     = $amazonAWSAccessKeyId;
      $param['Action']             = 'SubmitFeed'; 
      $param['Merchant']           = $amazonSellerId;
      $param['MWSAuthToken']       = $amazonMWSAuthToken; 
      $param['FeedType']       = '_POST_INVENTORY_AVAILABILITY_DATA_';
      $param['SignatureMethod']    = 'HmacSHA256';  
      $param['SignatureVersion']   = '2'; 
      $param['Timestamp']          = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
      $param['Version']            = '2009-01-01'; 
      $param['MarketplaceIdList.Id.1'] = $amazonMarketPlaceId;
      $param['PurgeAndReplace']    = 'false';
      
      $secret = $amazonSecretKey;
      
      $url = array();
      foreach ($param as $key => $val) {
      
          $key = str_replace("%7E", "~", rawurlencode($key));
          $val = str_replace("%7E", "~", rawurlencode($val));
          $url[] = "{$key}={$val}";
      }
      
      $amazon_feed = '<?xml version="1.0" encoding="utf-8"?>
      <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
          <Header>
          <DocumentVersion>1.01</DocumentVersion>
          <MerchantIdentifier>'.$amazonSellerId.'</MerchantIdentifier>
          </Header>
          <MessageType>Inventory</MessageType>
          <Message>
          <MessageID>1</MessageID>
          <OperationType>Update</OperationType>
          <Inventory>
          <SKU>'.$sku1.'</SKU>
          <Quantity>'.$quantity1.'</Quantity>
          <FulfillmentLatency>'.$leadTimeToShip1.'</FulfillmentLatency>
          </Inventory>
          </Message>
          </AmazonEnvelope>';
      
      //echo $amazon_feed;exit;
      sort($url);
      
      $arr   = implode('&', $url);
      
      $sign  = 'POST' . "\n";
      $sign .= 'mws.amazonservices.com' . "\n";
      $sign .= '/Feeds/'.$param['Version'].'' . "\n";
      $sign .= $arr;
      
      $signature      = hash_hmac("sha256", $sign, $secret, true);
      $httpHeader     =   array();
      $httpHeader[]   =   'Transfer-Encoding: chunked';
      $httpHeader[]   =   'Content-Type: application/xml';
      $httpHeader[]   =   'Content-MD5: ' . base64_encode(md5($amazon_feed, true));
      //$httpHeader[]   =   'x-amazon-user-agent: MyScriptName/1.0';
      $httpHeader[]   =   'Expect:';
      $httpHeader[]   =   'Accept:';              
      
      $signature      = urlencode(base64_encode($signature));
      
      $link  = "https://mws.amazonservices.com/Feeds/".$param['Version']."?";
      $link .= $arr . "&Signature=" . $signature;
      
      
      $ch = curl_init($link);
      curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeader);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
      curl_setopt($ch, CURLOPT_POST, 1); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $amazon_feed); 
      $response = curl_exec($ch);
      $info = curl_getinfo($ch);
      $errors=curl_error($ch);
      curl_close($ch);
      
      echo '<pre>';
      print_r($response); //xml response
      
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多