0

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);

ISO日付の受け渡しに問題があります。また、コードに他の問題がある場合は、遠慮なくお知らせください。

4

1 に答える 1

1

リクエストを行った直後に作成されたものを探している場合、Amazonの場合と同様に、注文の最後の2分間のデータしか取得できないため、何も見つかりません。

今から5分までの時間を設定しようとして問題が発生しました。アマゾンサポートと話した後、彼らは次のナゲットを提供しました: "

Orders APIでは、終了時刻(CreatedBeforeまたはLastUpdatedBefore)を指定しない場合、現在(実際にはマイナス2分)と見なされます。そして、その応答で、それがカットオフ時間として使用した正確な時間を教えてくれます。」

あなたの場合、あなたはCreatedAfterリクエストを削除して、Amazonにあなたのために選ばせたいでしょう。

その後、created afterを探している場合は、Amazonが提供した応答時間を取得し、それをcreatedafterパラメーターに渡すことができます。

私が今注文をリストする方法は次のとおりです。これはコンソールに注文をリストするだけですが、データはすべて同じように返されます。

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;
    }
于 2012-07-19T14:33:42.697 に答える