Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 列出订单并将ISO 8601日期传递给Amazon MWS_Asp.net_Amazon Mws - Fatal编程技术网

Asp.net 列出订单并将ISO 8601日期传递给Amazon MWS

Asp.net 列出订单并将ISO 8601日期传递给Amazon MWS,asp.net,amazon-mws,Asp.net,Amazon Mws,从Amazon MWS检索订单的最佳方式是什么 我目前的代码如下 MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); config.ServiceURL = productsURL; MarketplaceWebServiceOrders.MarketplaceWebServiceOrdersClient service = new MarketplaceWebServiceOr

从Amazon MWS检索订单的最佳方式是什么

我目前的代码如下

MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig();
config.ServiceURL = productsURL;

MarketplaceWebServiceOrders.MarketplaceWebServiceOrdersClient service = new MarketplaceWebServiceOrdersClient(appname, version, accesskeyID, secretkey, config);             

ListOrdersRequest request = new ListOrdersRequest();
request.MarketplaceId = new MarketplaceIdList();
request.MarketplaceId.Id = new List<string>(new string[] { marketids[0] });
request.SellerId = merchantID;
request.OrderStatus = new OrderStatusList() { Status = new List<OrderStatusEnum>() { OrderStatusEnum.Unshipped, OrderStatusEnum.PartiallyShipped } };
request.CreatedAfter = Convert.ToDateTime(dc.Settings.SingleOrDefault().lastOrdersRetrieved);

ListOrdersResponse response = service.ListOrders(request);
MarketplaceWebServiceOrdersConfig=new-MarketplaceWebServiceOrdersConfig();
config.ServiceURL=productsURL;
MarketplaceWebServiceOrders.MarketplaceWebServiceOrdersClient服务=新的MarketplaceWebServiceOrdersClient(appname、版本、accesskeyID、secretkey、配置);
ListOrdersRequest请求=新建ListOrdersRequest();
request.MarketplaceId=new-MarketplaceIdList();
request.MarketplaceId.Id=新列表(新字符串[]{marketids[0]});
request.SellerId=merchantID;
request.OrderStatus=new OrderStatusList(){Status=new List(){OrderStatusEnum.Unshipped,OrderStatusEnum.PartiallyShipped};
request.CreatedAfter=Convert.ToDateTime(dc.Settings.SingleOrDefault().lastOrdersRetrieve);
ListOrdersResponse响应=服务。ListOrders(请求);

我在传递ISO日期时遇到问题,如果您发现代码中存在任何其他问题,请随时通知我。

如果您在发出请求后立即查找创建的内容,它将找不到任何内容,因为对于Amazon,您只能获取最后2分钟的订单数据

我有一个问题,试图从现在开始设置时间-5分钟。在与Amazon支持人员交谈后,他们提供了以下要点:

在Orders API中,如果未指定结束时间(CreatedBefore或 LastUpdatedBefore),它将假设现在(实际上,现在减去2) 在它的回复中,它会告诉你确切的时间 用作截止时间。”

在您的情况下,您需要删除
CreatedAfter
请求,并让Amazon为您选择

如果您正在查找created after,则可以获取Amazon给出的响应时间,并将其传递给created after参数

我现在列出订单的方法如下所示,请注意,这将只是列出要控制台的订单,但返回的数据是一样的:

public List<string> ListOrders(MarketplaceWebServiceOrders.MarketplaceWebServiceOrders    service, string merchantId, List<OrderStatusEnum> orderStatus)
    {
        List<string> salesOrderIds = new List<string>();

        ListOrdersRequest listOrdersRequest = new ListOrdersRequest();

        DateTime createdAfter = DateTime.Now.Add(new TimeSpan(-1, 0, 0));
        DateTime createdbefore = DateTime.Now.Add(new TimeSpan(0, -15, 0));

        listOrdersRequest.CreatedAfter = createdAfter;
        listOrdersRequest.CreatedBefore = createdbefore;
        listOrdersRequest.SellerId = merchantId;
        listOrdersRequest.OrderStatus = new OrderStatusList();

        foreach (OrderStatusEnum status in orderStatus)
        {
            listOrdersRequest.OrderStatus.Status.Add(status);
        }

        listOrdersRequest.FulfillmentChannel = new FulfillmentChannelList();
        listOrdersRequest.FulfillmentChannel.Channel = new List<FulfillmentChannelEnum>();
        listOrdersRequest.FulfillmentChannel.Channel.Add(FulfillmentChannelEnum.MFN);


        listOrdersRequest.MarketplaceId = new MarketplaceIdList();
        listOrdersRequest.MarketplaceId.Id = new List<string>();
        listOrdersRequest.MarketplaceId.Id.Add("yourID");

        ListOrdersResponse listOrdersResponse = service.ListOrders(listOrdersRequest);

        int i = 0;

        foreach (Order order in listOrdersResponse.ListOrdersResult.Orders.Order)
        {
            i++;
            Console.WriteLine("Amazon Order ID:             \t" + order.AmazonOrderId);
            Console.WriteLine("Buyer Name:                  \t" + order.BuyerName);
            Console.WriteLine("Buyer Email:                 \t" + order.BuyerEmail);
            Console.WriteLine("Fulfillment Channel:         \t" + order.FulfillmentChannel);
            Console.WriteLine("Order Status:                \t" + order.OrderStatus);
            Console.WriteLine("Order Total:                 \t" + order.OrderTotal);
            Console.WriteLine("Number of Items Shipped:     \t" + order.NumberOfItemsShipped);
            Console.WriteLine("Number of Items Unshipped:   \t" + order.NumberOfItemsUnshipped);
            Console.WriteLine("Purchase Date:               \t" + order.PurchaseDate);
            Console.WriteLine("===========================================================");

            salesOrderIds.Add(order.AmazonOrderId);


        }

        Console.WriteLine("We returned a total of {0} records. ", i);
        return salesOrderIds;
    }
公共列表列表订单(MarketplaceWebServiceOrders.MarketplaceWebServiceOrders服务,字符串merchantId,列表订单状态)
{
List SalesOrderId=新列表();
ListOrdersRequest ListOrdersRequest=新建ListOrdersRequest();
DateTime createdAfter=DateTime.Now.Add(newtimespan(-1,0,0));
DateTime createdbefore=DateTime.Now.Add(newtimespan(0,-15,0));
listOrdersRequest.CreatedAfter=CreatedAfter;
listOrdersRequest.CreatedBefore=CreatedBefore;
listOrdersRequest.SellerId=merchantId;
listOrdersRequest.OrderStatus=新的OrderStatusList();
foreach(orderStatus中的OrderStatusEnum状态)
{
listOrdersRequest.OrderStatus.Status.Add(状态);
}
listOrdersRequest.FulfillmentChannel=新的FulfillmentChannelList();
listOrdersRequest.FulfillmentChannel.Channel=新列表();
listOrdersRequest.FulfillmentChannel.Channel.Add(FulfillmentChannelEnum.MFN);
listOrdersRequest.MarketplaceId=新的MarketplaceIdList();
listOrdersRequest.MarketplaceId.Id=新列表();
listOrdersRequest.MarketplaceId.Id.Add(“您的Id”);
ListOrdersResponse ListOrdersResponse=service.ListOrders(listOrdersRequest);
int i=0;
foreach(listOrdersResponse.ListOrdersResult.Orders.Order中的订单)
{
i++;
Console.WriteLine(“Amazon订单ID:\t”+Order.AmazonOrderId);
Console.WriteLine(“买方名称:\t”+订单.BuyerName);
Console.WriteLine(“买方电子邮件:\t”+订单.BuyerEmail);
Console.WriteLine(“履行渠道:\t”+订单.FulfillmentChannel);
Console.WriteLine(“订单状态:\t”+订单.OrderStatus);
Console.WriteLine(“订单总计:\t”+订单.OrderTotal);
Console.WriteLine(“装运的项目数量:\t”+order.NumberOfItemsShipped);
Console.WriteLine(“未发货的项目数量:\t”+订单.NumberOfItemsShipped);
Console.WriteLine(“购买日期:\t”+订单.PurchaseDate);
Console.WriteLine(“===========================================================================================”);
Add(order.AmazonOrderId);
}
WriteLine(“我们总共返回了{0}条记录。”,i);
返回SalesOrderID;
}

atm我设置的日期时间是上次更新的日期时间。我希望每15分钟左右就能拿到所有订单。所以使用这个datetime字段来设置它。如果<15分钟无更新,如果15分钟或>则本质上更新:)我删除了列出订单的代码,以便您可以看到我现在如何获取数据-老实说,我刚开始使用orders API时,出现了一些其他优先项目,因此我没有机会确保这是以“实时”方式获取订单的正确方法,但希望它能让你达到你需要受益的地方。多谢,我猜你是在制作一个控制台应用程序?我正在开发一个基于web的应用程序。这个API让我抓狂,哈哈,希望tbh的使用稍微简单一点。不幸的是,C#API似乎是事后才想到的。JavaAPI有很多更好的文档记录,因此如果您遇到了障碍,请查看Java示例;大多数情况下,Java和C#非常相似,足以让您知道该往哪里走。