亚马逊 sp-api更新库存 feed 方式,xsd 验证xml

更新库存遇到的坑,  xml格式不对,因为输出的测试xml ,后面又加了点字符串,因为这个错误,耽误我好几天。。。下次测试结果时候,一定要等变量完全停止定义的后面 输出


        if($debug) echo htmlentities($xml);
        $feedContents = $xml;

        // 原来这个多了一行,导致了错误
        //$xml .= '</AmazonEnvelope>';

feed 更新方式

1,createFeedDocument 返回 

feedDocumentId

(

POST_INVENTORY_AVAILABILITY_DATA

)

2. uploadxml

3 createfeed

检测方式

1 getFeed

getFeedDocument

3 根据返回的url ,打开这个网址 看feed的执行结果

说明1 。inventory 的xml

<?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>A。。。。。。X</MerchantIdentifier>
  </Header>
  <MessageType>Inventory</MessageType>
  <Message>
    <MessageID>1</MessageID>
    <OperationType>Update</OperationType>
    <Inventory>
      <SKU>SY...</SKU>
      <FulfillmentCenterID>DEFAULT</FulfillmentCenterID>
      <Quantity>3</Quantity>
    </Inventory>
  </Message>
</AmazonEnvelope>

2 xsd的位置

https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_4_1/Inventory.xsd



https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_4_1/amzn-envelope.xsd

3 根据xsd 判断xml是否符合格式

https://www.freeformatter.com/xml-validator-xsd.html

最后演示代码

use SellingPartnerApi\Api\FeedsV20210630Api as FeedsApi;
use SellingPartnerApi\FeedType;
use SellingPartnerApi\Model\FeedsV20210630 as Feeds;
。。。。。




    //POST_INVENTORY_AVAILABILITY_DATA 原来用POST_PRODUCT_DATA 无效
        $feedType = FeedType::POST_INVENTORY_AVAILABILITY_DATA;
        $feedsApi = new FeedsApi($config);


         // Create feed document
         $createFeedDocSpec = new Feeds\CreateFeedDocumentSpecification(['content_type' => $feedType['contentType']]);
         $feedDocumentInfo = $feedsApi->createFeedDocument($createFeedDocSpec);
         $feedDocumentId = $feedDocumentInfo->getFeedDocumentId();
、。。。。。




        $xml = '<?xml version="1.0" encoding="UTF-8"?>';
        $xml .= '<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">';
        $xml .= '<Header>';
        $xml .= '<DocumentVersion>1.01</DocumentVersion>';
        $xml .= '<MerchantIdentifier>' . $merchant_id . '</MerchantIdentifier>';
        $xml .= '</Header>';
        $xml .= '<MessageType>Inventory</MessageType>';
        $xml .= '<Message>';
        $xml .= '<MessageID>1</MessageID>';
        //?是否需要 价格更新需要加这个
        $xml .= '<OperationType>Update</OperationType>';
        $xml .= '<Inventory>';
        // SELLER SKU
        $xml .= '<SKU>' . $seller_sku . '</SKU>';// 售价
        //  发货中心 ,卖家自发货 用  DEFAULT
        $xml .= '<FulfillmentCenterID>DEFAULT</FulfillmentCenterID>';
        //choice  ,三选一
        //$xml .= 			'<Available>true</Available>';
        $xml .= '<Quantity>' . $qty . '</Quantity>';
        //$xml .= 			'<Lookup>FulfillmentNetwork</Lookup>';

        //gmdate("Y-m-dTH:i:s.00:00:00Z")
        //2022-10-27GMT10:39:16.00:00:000
        // $created_after , $created_before两个参数不能同时用

        //minOccurs="0"
        //$xml .= 			'<RestockDate>' . date('Y-m-d',time()) . '</RestockDate>';
        //几天内发货 minOccurs="0"
        //$xml .= 			'<FulfillmentLatency>2</FulfillmentLatency>';
        //切换货运方式 minOccurs="0"
        //$xml .= 			'<SwitchFulfillmentTo></SwitchFulfillmentTo>';
        $xml .= '</Inventory>';
        $xml .= '</Message>';
        $xml .= '</AmazonEnvelope>';


        // 同时修改多个时
        //$xml .= 	'<Message>';
        //$xml .= 		'<MessageID>2</MessageID>';


        // 原来这个多了一行,导致了错误
        //$xml .= '</AmazonEnvelope>';

        if ($debug) echo htmlentities($xml);
        $feedContents = $xml;


        // The Document constructor accepts a custom \GuzzleHttp\Client object as an optional 3rd parameter. If that
        // parameter is passed, your custom Guzzle client will be used when uploading the feed document contents to Amazon.
        $docToUpload = new \SellingPartnerApi\Document($feedDocumentInfo, $feedType);
        $docToUpload->upload($feedContents);
        // This is not present in the example
        $body = new Feeds\CreateFeedSpecification();
        $body->setMarketplaceIds(['ATVPDKIKX0DER']);
        $body->setInputFeedDocumentId($feedDocumentId);
        $body->setFeedType($feedType['name']);

        $result = $feedsApi->createFeed($body);
        $feed_id = $result->getFeedId();





  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<xsd:element> 元素是 XML 模式语言(XSD)中的一个重要元素,用于定义 XML 文档中的元素。下面是一些 <xsd:element> 元素的详细说明: 1. name 属性:该属性用于指定元素的名称。必须是一个有效的 XML 名称,不能包含空格或特殊字符。 2. type 属性:该属性用于指定元素的数据类型。可以是内置的数据类型,如 string、int、boolean 等,也可以是自定义的复杂类型。 3. minOccurs 和 maxOccurs 属性:这两个属性用于指定元素的出现次数。minOccurs 属性指定元素的最小出现次数,maxOccurs 属性指定元素的最大出现次数。默认情况下,minOccurs 属性的值为 1,maxOccurs 属性的值为 1。 4. default 和 fixed 属性:这两个属性用于指定元素的默认值和固定值。default 属性指定元素的默认值,fixed 属性指定元素的固定值。如果指定了 fixed 属性,则不能指定 default 属性。 5. nillable 属性:该属性用于指定元素是否可以为 null。如果该属性的值为 true,则元素可以为 null;否则,元素不可以为 null。 6. abstract 属性:该属性用于指定元素是否是抽象的。如果该属性的值为 true,则元素是抽象的,不能被实例化。 7. substitutionGroup 属性:该属性用于指定元素的替代组。指定元素的替代组意味着可以使用替代组中的任何元素来代替该元素。 总之,<xsd:element> 元素是 XSD 中非常重要的元素之一,它定义了 XML 文档中的元素,并且可以指定元素的名称、数据类型、出现次数、默认值、固定值等属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值