4

我正在尝试在 PHP 中为活动列表提取报告。

我已经取得了进展,但是,我无法理解这是如何工作的,也没有任何东西可以解释它。

例如,在 PHP 库提供的示例中,我看到了很多 XML 文件。当您运行RequestReportResponse示例时,它会生成 XML 文件,还是 XML 文件RequestReportResponse会根据值和函数告诉您要做什么?

我之所以问是因为,使用 MWS Scratchpad - 我选择了所有必要的字段,提交它然后刷新我的卖家中心部分的亚马逊报告页面,它会显示一个待处理的报告。

我只是在问 XML 内容如何影响报告或报告如何影响 XML。

4

1 回答 1

13

您的问题的答案分为两部分。

第 1 部分 - 调用 Amazon API

大多数 MWS 请求不需要将任何文件(无论是纯文本还是 XML)发送到亚马逊。例如,发送所需的所有参数都RequestReport可以(并且必须)作为常规参数发送。如果您确实提交了一个文件,我不确定亚马逊会做什么,因为我从未尝试过。但话又说回来......你为什么要这样做?

确实需要发送文件的调用之一SubmitFeed是该文件是要提交的实际提要的调用。如果亚马逊希望它是纯文本或 XML,这取决于您提交的提要类型。

第 2 部分 - 处理 Amazon 的 API 响应

当您从 Amazon 的 API 获取信息时,它通常是 XML 格式的(有一些调用可能会返回纯文本)。您将需要解码这些数据以获取您的信息。

为了更清楚一点,我将为您概述一个典型的过程:

从亚马逊获取所有列表的过程:

  1. RequestReport亚马逊打电话。没有附加 XML
  2. 解码您返回的 XML(它是RequestReportResponse)。如果一切顺利,您将收到RequestReportId作为响应的一部分,亚马逊将开始处理您的请求。

    亚马逊可能需要几分钟来实际创建报告,在非常复杂或大型请求的情况下,或者在高活动时间,它实际上可能需要一个小时或更长时间。所以我们需要找出我们提出的请求是什么时候真正完成的。

  3. GetReportRequestList通过调用来询问您的请求状态,戳 Amazon API ReportRequestIdList.Id.1={YourRequestIdHere}。这也不需要 XML 附件。

  4. 解码您返回的 XML。(它是一个GetReportRequestListResponse

    如果ReportProcessingStatus不是_DONE_,请等待至少 45 秒,然后从步骤 3 开始重复。如果报告实际完成,您将GeneratedReportId在响应中看到有效。如果它丢失了,您需要进行额外的GetReportList调用才能找到它的 ID。

  5. 致电GetReport最终获取您的报告ReportId={YourGeneratedReportIdHere}

  6. 解码你得到的任何东西。根据您请求的报告类型,响应可能是 XML 或纯文本。

    Amazon Marketplace Web Service Reports API 部分参考(版本 2009-01-01)中详细解释了此过程(并带有漂亮的流程图)

最后回答您关于从亚马逊 MWS 获取活跃商品的问题:这三个调用都不需要您向亚马逊发送 XML您从亚马逊收到的数据将采用 XML 格式(如果您请求纯文本报告,第 6 步可能会例外)。

于 2013-08-31T23:01:13.450 回答