【问题标题】:Amazon Order API or Report API to get SKU number and total quantity sold?Amazon Order API 或 Report API 获取 SKU 编号和总销量?
【发布时间】:2016-03-23 01:24:18
【问题描述】:

我想要一份所有 SKU 的列表,这些 SKU 在从开始日期到结束日期之间有任何销售以及已售出的数量。我很困惑该怎么做——我应该为此使用亚马逊 MWS 订单 API 还是为此使用报告 API?有没有人有一个 c# 代码,它显示了如何在我的最后请求和下载报告以进行进一步处理,即将数据保存在数据库中。 任何帮助将非常感激。

附言我的数据量很大

更新:同时我已经编写了这段代码来获取报告类型并保存数据。现在错误是“访问路径被拒绝”

private const string targetRptType = "_GET_CONVERGED_FLAT_FILE_ORDER_REPORT_DATA_";

try
{
    RequestReportRequest reportRequestRequest = new RequestReportRequest();
    reportRequestRequest.Merchant = merchantId;
    reportRequestRequest.ReportType = targetRptType;
    reportRequestRequest.StartDate = DateTime.Now.AddDays(-3);
    reportRequestRequest.EndDate = DateTime.Now;

    MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
    config.ServiceURL = "https://mws.amazonservices.com";

    MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, applicationName, applicationVersion, config);

    RequestReportResponse requestResponse = service.RequestReport(reportRequestRequest);
    Thread.Sleep(15000);
    Response.Write(requestResponse.RequestReportResult.ReportRequestInfo.ReportProcessingStatus);
    GetReportRequestListRequest reportRequestListRequest = new GetReportRequestListRequest();
    reportRequestListRequest.Merchant = merchantId;
    List<ReportRequestInfo> myListzz = new List<ReportRequestInfo>();

    GetReportRequestListResponse reportRequestListResponse = new GetReportRequestListResponse();
    reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest);
    GetReportRequestListResult reportRequestListResult = new GetReportRequestListResult();
    reportRequestListResult = reportRequestListResponse.GetReportRequestListResult;
    myListzz = reportRequestListResult.ReportRequestInfo;
    while (myListzz[0].ReportProcessingStatus.ToString() != "_DONE_")
    {
        Thread.Sleep(20000);
        reportRequestListResponse = service.GetReportRequestList(reportRequestListRequest);
        reportRequestListResult = reportRequestListResponse.GetReportRequestListResult;
        myListzz = reportRequestListResult.ReportRequestInfo;
    }

    GetReportListRequest listRequest = new GetReportListRequest();
    listRequest.Merchant = merchantId;
    listRequest.ReportRequestIdList = new IdList();
    listRequest.ReportRequestIdList.Id.Add(requestResponse.RequestReportResult.ReportRequestInfo.ReportRequestId);

    GetReportListResponse listResponse = service.GetReportList(listRequest);


    //MessageBox.Show(listResponse.GetReportListResult.ReportInfo.ToString());
    GetReportListResult getReportListResult = listResponse.GetReportListResult;

    GetReportRequest reportRequest = new GetReportRequest();
    reportRequest.Merchant = merchantId;
    reportRequest.WithReportId(getReportListResult.ReportInfo[0].ReportId);

    GetReportResponse reportResponse = new GetReportResponse();
    try
    {
        reportRequest.Report = File.Open("C:\\AmazonReport.csv", FileMode.OpenOrCreate, FileAccess.ReadWrite);  // Getting error access to path denied
        reportResponse = service.GetReport(reportRequest);
    }
    catch (MarketplaceWebServiceException exe)
    {
        Response.Write(exe);
    }
    StreamReader sr = new StreamReader(reportRequest.Report);
    Response.Write(sr.ReadToEnd());
    sr.Close();

}
catch (MarketplaceWebServiceException ex)
{
    Response.Write(ex.Message);
}

谁能检查我的代码并建议这是否是从报告中获取数据的正确方法?我仍然无法保存报告。

更新 2
我已经更改了路径,现在错误消失了,文件已创建,但它只是一个 1 kb 的文件,有 2 条记录。看起来它没有获取完整数据。不确定代码是否正确。在暂存器上检查这个https://mws.amazonservices.com/scratchpad/index.html

【问题讨论】:

  • 是的,文件在那里,我同意。最初我使用的是 Orders API,但这总是花费大量时间并给出限制错误并且没有多次获取数据。有人建议使用 Report API 来避免所有麻烦。我正在努力——他们确实有材料,但我一直在寻找如何用 C# 编写东西的代码示例。我没有找到容易理解和遵循的东西,所以只是想知道是否有人已经工作并有一些意见/建议。无论如何感谢您的链接。
  • 我一直无法从 Report API 获取销售数据。我想从 GET_FLAT_FILE_ORDERS_DATA 获取数据并寻找一个简单的 c# 代码示例来解释如何获取数据.
  • 问题还说“有没有人有一个 c# 代码来显示如何请求和下载报告”
  • 我认为这个问题解释了需要什么 - “我想要一份所有 SKU 的列表,这些 SKU 在从开始日期到结束日期之间有任何销售以及销售数量。”
  • 好的,这样更好 - 我已经投票决定重新提出这个问题!哪一行显示“访问路径被拒绝”错误?

标签: c# amazon-mws


【解决方案1】:

我会将报告保存在您当前的工作目录中。除非您以管理员身份运行,否则对 C:\ 的访问通常会被锁定。如果您想明确,请使用以下内容(如果您仅提供文件名而不是完全对齐的路径,它也会保存在您当前的工作目录中)

reportRequest.Report = File.Open(Path.Combine(Directory.GetCurrentDirectory(), "AmazonReport.csv"), FileMode.OpenOrCreate, FileAccess.ReadWrite);

【讨论】:

    【解决方案2】:

    在我看来,Orders API 会让这件事变得更容易。您可以使用日期范围请求订单并获得所需的一切。

    【讨论】:

    • p.s.我有大量数据 大量数据消除了 Orders API。如果您查看 Reports API 的文档,有一个参考说明应该使用 Reports API 提取超过 200 个订单的内容。
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多