我正在尝试在PHP中为活动列表提取报告。
我已经取得了进步,但是,我无法理解它是如何工作的,并且没有任何东西可以解释它。
例如,在PHP库提供的示例中,我看到了很多XML文件。当您运行RequestReportResponse
示例时,是否会生成XML文件,或者XML文件是否根据值和函数告诉RequestReportResponse
要执行的操作?
我问,因为,使用MWS Scratchpad - 我选择了所有必要的字段,然后提交它,然后刷新卖家中心部分的Amazon Reports页面,它会显示待处理的报告。
我只是询问XML内容如何影响报告或报告如何影响XML。
答案 0 :(得分:13)
您的问题的答案分为两部分。
第1部分 - 调用Amazon API
大多数MWS请求不要求将任何文件(无论是纯文本还是XML)发送到亚马逊。例如,发送RequestReport
所需的所有参数都可以(并且必须)作为常规参数发送。如果你提交了一个文件,我不确定亚马逊会做什么,因为我从未尝试过。但话又说回来......你为什么要这样做?
需要要发送文件的其中一个调用是SubmitFeed
调用,其中该文件是要提交的实际Feed。如果亚马逊希望它是纯文本或XML,则取决于您提交的Feed类型。
第2部分 - 处理亚马逊的API响应
当您从亚马逊的API获取信息时,它通常采用XML格式(有一些调用可能会返回纯文本)。您需要解码此数据才能获取信息。
为了使它更清晰,我将概述一个典型的过程:
从亚马逊获取所有商家信息的过程:
RequestReport
来电。没有附加XML 解码您正在获取的XML(它是RequestReportResponse
)。如果一切顺利,您将获得RequestReportId
作为响应的一部分,亚马逊将开始处理您的请求。
亚马逊可能需要几分钟才能真正创建报告,如果是非常复杂或大量的请求,或者在高活动时间内,实际上可能需要一个小时或更长时间。所以我们需要找出我们提出的请求何时实际完成。
通过GetReportRequestList
电话点击亚马逊API,询问ReportRequestIdList.Id.1={YourRequestIdHere}
请求的状态。这也不需要XML附件。
解码您正在返回的XML。 (这是一个GetReportRequestListResponse
)
如果ReportProcessingStatus
不是_DONE_
,请等待至少45秒,然后从步骤3开始重复。如果报告实际完成,您会看到有效的GeneratedReportId
响应。如果缺少,则需要额外GetReportList
来查找其ID。
致电GetReport
,最后使用ReportId={YourGeneratedReportIdHere}
解码你得到的任何东西。根据您请求的报告类型,响应可能是XML或纯文本。
在Amazon Marketplace Web Service Reports API Section Reference (Version 2009-01-01)
最后回答有关从亚马逊MWS获取有效商家信息的问题: 这三个调用都不需要您将XML 发送到亚马逊。您从Amazon 收到的数据将采用XML格式(如果您请求纯文本报告,可能会出现例外步骤6)。