亚马逊MWS(PHP)-请求是如何工作的


Amazon MWS (PHP) - How does the request work

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

我已经取得了进步,然而,我无法理解这是如何运作的,也没有什么可以解释它

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

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

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

问题的答案分为两部分。

第1部分-调用Amazon API

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

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

第2部分-处理亚马逊的API响应

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

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

从亚马逊获取所有物品的过程:

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

    亚马逊可能需要几分钟的时间来实际创建报告,在非常复杂或大型请求的情况下,或者在高活动时间内,它实际上可能需要一个小时或更长时间。因此,我们需要了解我们提出的请求实际何时完成。

  3. 使用GetReportRequestList调用Poke 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获得活跃房源的问题:这三个调用都不需要向Amazon发送XML。您从Amazon收到的数据将是XML格式的(如果您请求纯文本报告,则可能会出现步骤6的异常)。