XML提交给亚马逊MWS很好,但价格没有更新

Chr*_*ris 10 django python-3.x amazon-mws

我创建了自己的各种各样的复制品,但价格没有在亚马逊方面更新.

根据亚马逊提交后的响应,我的代码似乎运行得很好.我希望这里有人知道为什么它实际上没有更新价格.

这是提交的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>MERCHANTID</MerchantIdentifier>
    </Header>
    <MessageType>Price</MessageType>
    <Message>
        <MessageID>1</MessageID>
        <Price>
            <SKU>mysku</SKU>
            <StandardPrice currency="USD">350.50</StandardPrice>
        </Price>
    </Message>
</AmazonEnvelope>
Run Code Online (Sandbox Code Playgroud)

继承人的回应:

GetFeedSubmissionResultResponse{}(ResponseMetadata: <Element_?/ResponseMetadata_0x7fee61f74248>, GetFeedSubmissionResultResult: <Element_?/GetFeedSubmissionResultResult_0x7fee61f74248>, AmazonEnvelope: 
{'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation': 'amzn-envelope.xsd'}, DocumentVersion: '1.02', MerchantIdentifier: 'M_EXAMPLE_1234', Header: '\n\t', MessageType: 'ProcessingReport', MessageID: '1', DocumentTransactionID: '4200000000', StatusCode: 'Complete', MessagesProcessed: '1', MessagesSuccessful: '1', MessagesWithError: '0', MessagesWithWarning: '0', ProcessingSummary: '\n\t\t\t', ProcessingReport: '\n\t\t', Message: '\n\t')
Run Code Online (Sandbox Code Playgroud)

我不知道在这个实例中显示我的代码是否会有所帮助,因为我从亚马逊获得了成功的回复.无论如何:

...

# Provide credentials.
conn = MWSConnection(
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    Merchant=AMZ_SELLER_ID
)

# Get the service resource
sqs = boto3.resource('sqs')

# Get the queue
queue = sqs.get_queue_by_name(QueueName=SQS_QUEUE_NAME)

for index, message in enumerate(queue.receive_messages(MaxNumberOfMessages=10)):

    ...

    import time
    from jinja2 import Environment, PackageLoader

    env = Environment(loader=PackageLoader('repricer', 'xml_templates'), trim_blocks=True, lstrip_blocks=True)
    template = env.get_template('_POST_PRODUCT_PRICING_DATA_.xml')

    class Message(object):
        def __init__(self, s, price):
            self.SKU = s
            self.PRICE = round(price, 2)
            self.CURRENCY = USD_CURRENCY

    feed_messages = [
        Message(sku.sku, new_price),
    ]

    namespace = dict(MerchantId=AMZ_SELLER_ID, FeedMessages=feed_messages)
    feed_content = template.render(namespace).encode('utf-8')

    print(feed_content)

    feed = conn.submit_feed(
        FeedType='_POST_PRODUCT_PRICING_DATA_',
        PurgeAndReplace=False,
        MarketplaceIdList=[MARKETPLACE_ID],
        content_type='text/xml',
        FeedContent=feed_content
    )

    feed_info = feed.SubmitFeedResult.FeedSubmissionInfo
    print('Submitted product feed: ' + str(feed_info))

    while True:
        submission_list = conn.get_feed_submission_list(
            FeedSubmissionIdList=[feed_info.FeedSubmissionId]
        )
        info = submission_list.GetFeedSubmissionListResult.FeedSubmissionInfo[0]
        submission_id = info.FeedSubmissionId
        status = info.FeedProcessingStatus
        print('Submission Id: {}. Current status: {}'.format(submission_id, status))

        if status in ('_SUBMITTED_', '_IN_PROGRESS_', '_UNCONFIRMED_'):
            print('Sleeping and check again....')
            time.sleep(60)
        elif status == '_DONE_':
            feedResult = conn.get_feed_submission_result(FeedSubmissionId=submission_id)
            print(feedResult)
            break
        else:
            print("Submission processing error. Quit.")
            break
Run Code Online (Sandbox Code Playgroud)

pha*_*ze0 5

有几个可能的原因,大致按可能性的顺序列出:

1.亚马逊更新价值的速度比他们说的要慢。有可能虽然提要成功了,但在该更改反映在亚马逊上之前还有一段时间(即使来自 SellerCentral 的更改值也会附带一条消息,表明它不是即时的)。
等待几分钟,看看更改最终是否会出现。


2.您可以有一个仍然有效的替代重新定价服务。如果您当前正在为此 SKU 使用另一个重新定价器,它可能会与您的尝试竞争并根据其自己的规则集恢复价格。
可以使用 GetFeedSubmissionList 调用来查看是否_POST_PRODUCT_PRICING_DATA_在您之后提交了另一个提要(尽管无法查看提交的内容)。


3. SKU的最低最高价格可能存在冲突(无论您是否设置),并且您尝试设置的价格超出了允许的范围。这是亚马逊的一项政策要求新的和更新的 SKU 设置这些或使用默认标准的结果。

为了降低卖家的价格错误风险并避免潜在的负面客户体验,从 2015 年 1 月 14 日起,您将无法使用您的卖家中心偏好从所有潜在的低价中选择全面“退出” - 以及高价错误规则。相反,如果您不希望亚马逊的默认潜在定价错误规则应用于该产品,则您需要为库存中的每个产品设置最低和最高允许售价。

我在此找不到公告页面,所以它可能是一封电子邮件,但在论坛上是这样引用的

在这些情况下,Feed 将报告成功(因为其引用/格式是正确的),但由于设置的价格范围限制,价格更改将无声地失败。
您可以通过查看 SellerCentral Manage Inventory 页面下的 SKU 来验证这是否是您的问题。您可能需要打开最小/最大列以查看当前值,具体取决于您为该页面设置的首选项。

不幸的是,没有办法拉出库存物品的最低/最高价格来提前知道这是否会成为一个问题:

尊敬的卖家,

我是来自亚马逊卖家支持的 Sharon,今天我将帮助您解决您的问题。
从您电子邮件的内容中,我了解到您担心是否有任何报告可以下载“最低价格”和“最高价格”报告。
我很遗憾地通知您,目前可用的报告仅提供“standard_price”和“list_price”的信息。
我知道这让您感到失望,但请理解,截至目前,在库存报告中包含“最低价格”和“最高价格”的功能尚未包括在内,对于由此给您带来的所有不便,我深表歉意。看待。

通过亚马逊 MWS 团队的支持票,2016 年 7 月 3 日


4.亚马逊可能不允许 Feed 在活动促销期间更新价格。您应该能够通过查看 SellerCentral Manage Inventory 页面来检查某件商品是否在售,其中“价格”列将以绿色边框显示。
似乎不太可能,因为他们要求将“StandardPrice”元素与“Sale”元素一起提供,但亚马逊自己的“自动定价”工具将其列为该工具失败的可能原因


5.您将价格更新应用到错误的市场。
如果提供给呼叫下的 IDMarketplaceIdList=[MARKETPLACE_ID],与您正在检查的市场不同,则您不会看到价格变化。
如果您提交到您无权访问的市场,亚马逊确实无法通过 Feed 提交请求,因此如果您只有一个市场,这可能不是问题。


6.你在错误的地方寻找新的价格。
如果您在 SellerCentral Manage Inventory 页面下查看,请确保您查看的是“价格”列而不是“最低价格”列。
如果您正在查看产品的详细信息或优惠页面(在亚马逊店面),请确保您正在查看您的优惠。您可能不是详细信息页面上显示的主要报价或报价列表页面上显示的最高报价。
当然,请确保您拥有正确的 SKU/ASIN。


7.这是针对不同的提要,但用户报告说亚马逊有时只是不更新​​信息,需要重新发送提要。


您可以尝试使用替代提要来更新价格信息_POST_FLAT_FILE_INVLOADER_DATA_,但它是一种平面文件类型(制表符分隔),因此您的 XML 架构不会转移。如果您认为问题与您使用的特定提要有关,则可能只值得尝试。


Chr*_*ris 0

我最终联系了 Amazon api 支持,他们发现价格更改最多需要 15 分钟。另外,我还有另一个脚本,用于上传新产品并更新现有产品的库存和价格......该脚本与我的重新定价脚本竞争。

我通过更改第二个脚本更新现有产品价格的方式解决了该问题。