public static DataSet ListAmazonOrderHeaderByNextToken(string accountName, string nextToken, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey) { DataSet amazonOrderHeaderListDs = new DataSet(); const string applicationName = "<Your Application Name>"; const string applicationVersion = "<Your Application Version>"; ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); string sellerId = merchantId; request.SellerId = sellerId; request.NextToken = nextToken; MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); config.ServiceURL = "https://mws.amazonservices.com"; MarketplaceWebServiceOrdersClient client = new MarketplaceWebServiceOrdersClient(accessKeyId, secretAccessKey, applicationName, applicationVersion, config); try { IMWSResponse response = null; response = client.ListOrdersByNextToken(request); ResponseHeaderMetadata rhmd = response.ResponseHeaderMetadata; Console.WriteLine("RequestId: " + rhmd.RequestId); Console.WriteLine("Timestamp: " + rhmd.Timestamp); string responseXml = response.ToXML(); System.IO.File.WriteAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\AmazonOrderHeaderListNextToken.xml", responseXml); amazonOrderHeaderListDs.ReadXml(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\AmazonOrderHeaderListNextToken.xml", XmlReadMode.InferSchema); return(amazonOrderHeaderListDs); } catch (MarketplaceWebServiceOrdersException ex) { // Exception properties are important for diagnostics. ResponseHeaderMetadata rhmd = ex.ResponseHeaderMetadata; Console.WriteLine("Service Exception:"); if (rhmd != null) { Console.WriteLine("RequestId: " + rhmd.RequestId); Console.WriteLine("Timestamp: " + rhmd.Timestamp); } Console.WriteLine("Message: " + ex.Message); Console.WriteLine("StatusCode: " + ex.StatusCode); Console.WriteLine("ErrorCode: " + ex.ErrorCode); Console.WriteLine("ErrorType: " + ex.ErrorType); throw ex; } }
public void LeerPedidos(DateTime FechInicial, string cuenta, string OrderStatus) { int pagina = 1; this.Cuenta = cuenta; ListOrdersRequest request = new ListOrdersRequest(); request.SellerId = MERCHANT_ID; string format = "MMM d, yyyy h:mm:ss tt PDT"; CultureInfo provider = CultureInfo.InvariantCulture; DateTime now = DateTime.Now.Add(new TimeSpan(0, -10, 0)); DateTime createdAfter = DateTime.ParseExact("Aug 10, 2017 2:42:18 PM PDT", format, provider); request.CreatedAfter = createdAfter; request.CreatedBefore = now; List <string> orderStatus = new List <string>(); orderStatus.Add(OrderStatus); request.OrderStatus = orderStatus; List <string> marketplaceId = new List <string>(); marketplaceId.Add(MARKETPLACE_ID); request.MarketplaceId = marketplaceId; //List<string> fulfillmentChannel = new List<string>(); //request.FulfillmentChannel = fulfillmentChannel; //List<string> paymentMethod = new List<string>(); //request.PaymentMethod = paymentMethod; //string buyerEmail = "example"; //request.BuyerEmail = buyerEmail; //string sellerOrderId = "example"; //request.SellerOrderId = sellerOrderId; //decimal maxResultsPerPage = 1; //request.MaxResultsPerPage = maxResultsPerPage; //List<string> tfmShipmentStatus = new List<string>(); //request.TFMShipmentStatus = tfmShipmentStatus; MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig { ServiceURL = "https://mws.amazonservices.es/Orders/2013-09-01" }; MarketplaceWebServiceOrdersClient client = new MarketplaceWebServiceOrdersClient(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, "AppName", "0.0", config); ListOrdersResponse a = new ListOrdersResponse(); bool retryRequest = true; while (retryRequest == true) { retryRequest = false; try { eventAntesPagina(new EventosAmazon { pagina = pagina, linea = 0, retardo = 0 }); a = client.ListOrders(request); eventDespuesPagina(new EventosAmazon { pagina = pagina, linea = 0, retardo = 0 }); } catch (MarketplaceWebServiceOrdersException ex) { if (ex.ErrorCode.Contains("RequestThrottled")) { int retardo = 60000; retryRequest = true; eventAntesRetardoTroleo(new EventosAmazon { pagina = pagina, linea = 0, retardo = retardo }); System.Threading.Thread.Sleep(retardo); eventDespuesRetardoTroleo?.Invoke(new EventosAmazon { pagina = pagina, linea = 0, retardo = retardo }); } else { eventError?.Invoke(new EventosAmazon { pagina = pagina, linea = 0, retardo = 0, error = ex.Detail }); } } } // foreach (Order order in a.ListOrdersResult.Orders) // GrabarOrder(order, cuenta); Task t = new Task( () => { Parallel.ForEach(a.ListOrdersResult.Orders, new ParallelOptions { MaxDegreeOfParallelism = 2 }, order => { int numero = a.ListOrdersResult.Orders.IndexOf(order); LeerLineasPedido(order, pagina, numero); GrabarOrder(order, cuenta); }); }); t.Start(); while (!t.IsCompleted) { Application.DoEvents(); } string NextToken = a.ListOrdersResult.NextToken; // return; while (!string.IsNullOrEmpty(NextToken)) { pagina++; ListOrdersByNextTokenRequest nextRequest = new ListOrdersByNextTokenRequest(); nextRequest.NextToken = NextToken; nextRequest.SellerId = request.SellerId; retryRequest = true; ListOrdersByNextTokenResponse b = new ListOrdersByNextTokenResponse(); while (retryRequest == true) { retryRequest = false; try { eventAntesPagina(new EventosAmazon { pagina = pagina, linea = 0, retardo = 0 }); b = client.ListOrdersByNextToken(nextRequest); eventDespuesPagina(new EventosAmazon { pagina = pagina, linea = 0, retardo = 0 }); Task tn = new Task( () => { Parallel.ForEach(b.ListOrdersByNextTokenResult.Orders, new ParallelOptions { MaxDegreeOfParallelism = 2 }, order => { int numero = b.ListOrdersByNextTokenResult.Orders.IndexOf(order); LeerLineasPedido(order, pagina, numero); GrabarOrder(order, cuenta); }); }); tn.Start(); while (!tn.IsCompleted) { Application.DoEvents(); } } catch (MarketplaceWebServiceOrdersException ex) { //The ListOrders and ListOrdersByNextToken operations together share a maximum request quota of six and a restore rate of one request every minute. // Request quota // The number of requests that you can submit at one time without throttling.The request quota decreases with every request you submit.The request quota increases at the restore rate. // Restore rate // The rate at which your request quota increases over time, up to the maximum request quota. // Maximum request quota // The maximum size that the request quota can reach. if (ex.ErrorCode.Contains("RequestThrottled")) { int retardo = 60000; retryRequest = true; eventAntesRetardoTroleo(new EventosAmazon { pagina = pagina, linea = 0, retardo = retardo }); System.Threading.Thread.Sleep(retardo); eventDespuesRetardoTroleo?.Invoke(new EventosAmazon { pagina = pagina, linea = 0, retardo = retardo }); } } if (b.IsSetListOrdersByNextTokenResult()) { NextToken = b.ListOrdersByNextTokenResult.NextToken; } else { break; } } } }
public IEnumerable <MarketplaceOrder> GetMarketplaceOrders(DateTime createdAfter) { var marketplaceOrders = new List <MarketplaceOrder>(); try { // init the Amazon web service var config = new MarketplaceWebServiceOrdersConfig { ServiceURL = "https://mws.amazonservices.com" }; config.SetUserAgent(_ApplicationName, _Version); _ordersClient = new MarketplaceWebServiceOrdersClient(_credential.AccessKeyId, _credential.SecretKey, config); Console.WriteLine("{0} fetching orders for {1}...", ChannelName, createdAfter); // create ListOrdersRequest object var listOrdersRequest = new ListOrdersRequest { SellerId = _credential.MerchantId, MarketplaceId = new List <string> { { _credential.MarketplaceId } }, LastUpdatedAfter = createdAfter.Date }; var listOrdersResponse = _ordersClient.ListOrders(listOrdersRequest); var ordersResult = listOrdersResponse.ListOrdersResult.Orders; var nextToken = listOrdersResponse.ListOrdersResult.NextToken; ListOrdersByNextTokenResponse nextOrderResponse = null; Console.WriteLine("{0} retrieved {1} orders and {2} next results page.", ChannelName, listOrdersResponse.ListOrdersResult.Orders.Count, !string.IsNullOrWhiteSpace(nextToken) ? "HAS" : "NO"); do { if (nextOrderResponse != null) { ordersResult = nextOrderResponse.ListOrdersByNextTokenResult.Orders; nextToken = nextOrderResponse.ListOrdersByNextTokenResult.NextToken; Console.WriteLine("{0} retrieved {1} next orders and {2} next results page.", ChannelName, ordersResult.Count, !string.IsNullOrWhiteSpace(nextToken) ? "HAS" : "NO"); } // Convert the orders to the marketplace contracts and get the items. for (int i = 0; i < ordersResult.Count; ++i) { // The maximum request quota for ListOrderItems is 30 after that it restores at 2 per second. // So if the order's that are being pulled exceed 30, then sleep for 2 seconds each one. if (i > 30) { Thread.Sleep(2000); } marketplaceOrders.Add(convertOrderResponseToMarketplaceOrder(ordersResult[i])); } // do a rquest for the next page result of orders if next token is not null if (!string.IsNullOrWhiteSpace(nextToken)) { // pause at least 1 minute, this is the restore rate for ListOrdersByNextToken for every 6 quota Thread.Sleep(61000); var nextTokenRequest = new ListOrdersByNextTokenRequest { SellerId = _credential.MerchantId, NextToken = nextToken }; nextOrderResponse = _ordersClient.ListOrdersByNextToken(nextTokenRequest); } } while (!string.IsNullOrWhiteSpace(nextToken)); Console.WriteLine("{0} done fetching orders: {1} items", ChannelName, marketplaceOrders.Count); } catch (Exception ex) { Console.WriteLine("Error in getting orders for {0}! Error message: {1}", ChannelName, ex.Message); _logger.LogError(LogEntryType.AmazonOrdersProvider, string.Format("Error in retrieving orders for Amazon. Error message: {0}", ex.Message), ex.StackTrace); _emailService.SendEmailAdminException(subject: "Amazon - Get Marketplace Orders Error", exParam: ex, useDefaultTemplate: true, url: "GetMarketplaceOrders Method", userName: "******"); } return(marketplaceOrders); }
public void Insert_NextToken(string token = null) { Amazon_Juchuu_NextToken = D_AmazonJuchuu(); Base_BL bbl = new Base_BL(); DataTable strbuff = new DataTable(); strbuff.Columns.Add("StoreCD"); strbuff.Columns.Add("APIKey"); strbuff.Columns.Add("SEQ"); strbuff.Columns.Add("OrderId"); MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); config.ServiceURL = CommonValue.strServiceURL; MarketplaceWebServiceOrders.MarketplaceWebServiceOrders client = new MarketplaceWebServiceOrdersClient( AccessKeyId, SecretKeyId, ApplicationName, ApplicationVersion, config); if (token != null) { ListOrdersByNextTokenRequest request1 = new ListOrdersByNextTokenRequest(); ListOrdersByNextTokenResult listOrdersByNextResult = new ListOrdersByNextTokenResult(); request1.SellerId = SellerId; request1.MWSAuthToken = MWSAuthToken; request1.NextToken = token; ListOrdersByNextTokenResponse response1 = client.ListOrdersByNextToken(request1); if (response1.IsSetListOrdersByNextTokenResult()) { listOrdersByNextResult = response1.ListOrdersByNextTokenResult; if (listOrdersByNextResult.IsSetOrders()) { List <Order> orders = listOrdersByNextResult.Orders; int i = 0; foreach (Order o in orders) { i++; strbuff.Rows.Add(StoreCD, APIKey, i, o.AmazonOrderId); GetListOrderdata(o, i, false); } } } Amazon__Entity ameDetails = new Amazon__Entity(); ameDetails.StoreCD = StoreCD; ameDetails.APIKey = APIKey; ameDetails.LastUpdatedAfter = UpdatedTimeBefore.ToString(); ameDetails.LastUpdatedBefore = listOrdersByNextResult.LastUpdatedBefore.ToString(); ameDetails.Xmldetails = bbl.DataTableToXml(Amazon_Juchuu_NextToken); ameDetails.XmlOrder = bbl.DataTableToXml(strbuff); TokenNo = TokenNo + 1; if (aml.AmazonAPI_Insert_NextToken(ameDetails)) { Console.WriteLine("Successfully Inserted Token " + (TokenNo).ToString() + "Times"); } else { Console.WriteLine("Unfortunately Inserted Failed Token " + (TokenNo).ToString() + "Times"); } Insert_NextToken(listOrdersByNextResult.NextToken); } else/// To be Continued. . . Insert { Console.Write("Order inserted Successfully!!!"); Console.Read(); } }
public static void GetOrderList() { dt = new DataTable(); dt.Columns.Add("OrderId"); MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); string SellerId = "A3U1G59YKB47LS"; string MarketplaceId = "A1VC38T7YXB528"; string AccessKeyId = "AKIAJFRPIMOTC4CJGHLQ"; string SecretKeyId = "4KI9yuXr7Ni64iFpdjnW1dw3LNdNXIn4rgOnNrZQ"; string ApplicationVersion = "1.0"; string ApplicationName = "ラスタスポーツ"; string MWSAuthToken = "amzn.mws.fea748c0-bfe0-4039-0cc0-88b6ce5c0058"; string serviceURL = "https://mws.amazonservices.jp"; string strbuff = string.Empty; config.ServiceURL = serviceURL; MarketplaceWebServiceOrders.MarketplaceWebServiceOrders client = new MarketplaceWebServiceOrdersClient( AccessKeyId, SecretKeyId, ApplicationName, ApplicationVersion, config); //ListOrder try { ListOrdersRequest request = new ListOrdersRequest(); request.SellerId = SellerId; request.CreatedAfter = DateTime.Now.AddDays(-1); List <string> lstMarketplace = new List <string>(); lstMarketplace.Add(MarketplaceId); request.MarketplaceId = lstMarketplace; request.MWSAuthToken = MWSAuthToken; ListOrdersResponse response = client.ListOrders(request); if (response.IsSetListOrdersResult()) { ListOrdersResult listOrdersResult = response.ListOrdersResult; if (listOrdersResult.IsSetOrders()) { List <Order> orders = listOrdersResult.Orders; foreach (Order order in orders) { dt.Rows.Add(order.AmazonOrderId); } } } } catch (Exception ex) { var msge = ex.Message; } //// ListOrderByNextToken try { ListOrdersRequest request = new ListOrdersRequest(); request.SellerId = SellerId; request.CreatedAfter = DateTime.Now.AddDays(-1); List <string> lstMarketplace = new List <string>(); lstMarketplace.Add(MarketplaceId); request.MarketplaceId = lstMarketplace; request.MaxResultsPerPage = 14; request.MWSAuthToken = MWSAuthToken; ListOrdersResponse response = client.ListOrders(request); if (response.IsSetListOrdersResult()) { ListOrdersResult listOrdersResult = response.ListOrdersResult; if (listOrdersResult.IsSetOrders()) { if (listOrdersResult.NextToken != null) { ListOrdersByNextTokenRequest request1 = new ListOrdersByNextTokenRequest(); request1.SellerId = SellerId; request1.MWSAuthToken = MWSAuthToken; request1.NextToken = listOrdersResult.NextToken; ListOrdersByNextTokenResponse response1 = client.ListOrdersByNextToken(request1); if (response1.IsSetListOrdersByNextTokenResult()) { ListOrdersByNextTokenResult listOrdersByNextResult = response1.ListOrdersByNextTokenResult; if (listOrdersByNextResult.IsSetOrders()) { List <Order> orders = listOrdersByNextResult.Orders; foreach (Order order in orders) { dt.Rows.Add(order.AmazonOrderId); // strbuff += order.AmazonOrderId + System.Environment.NewLine; } } } } } var val = strbuff; } Environment.Exit(0); } catch (Exception ex) { } // //List Order Item //try //{ // foreach (DataRow dr in dt.Rows) // { // ListOrderItemsRequest request = new ListOrderItemsRequest(); // request.SellerId = SellerId; // request.AmazonOrderId = dr["OrderId"].ToString(); // request.MWSAuthToken = MWSAuthToken; // ListOrderItemsResponse response = client.ListOrderItems(request); // if (response.IsSetListOrderItemsResult()) // { // ListOrderItemsResult listOrderItemsResult = response.ListOrderItemsResult; // if (listOrderItemsResult.IsSetOrderItems()) // { // List<OrderItem> orderItems = listOrderItemsResult.OrderItems; // foreach (OrderItem orderItem in orderItems) // { // strbuff += "商品名:" + orderItem.Title + System.Environment.NewLine; // } // } // } // } //} //catch (Exception ex) //{ //} //// ListOrderItem_byNextToken try { foreach (DataRow dr in dt.Rows) { ListOrderItemsRequest request = new ListOrderItemsRequest(); request.SellerId = SellerId; request.AmazonOrderId = dr["OrderId"].ToString(); request.MWSAuthToken = MWSAuthToken; ListOrderItemsResponse response = client.ListOrderItems(request); if (response.IsSetListOrderItemsResult()) { ListOrderItemsResult listOrderItemsResult = response.ListOrderItemsResult; if (listOrderItemsResult.NextToken != null) { ListOrderItemsByNextTokenRequest request1 = new ListOrderItemsByNextTokenRequest(); request1.SellerId = SellerId; request1.MWSAuthToken = MWSAuthToken; request1.NextToken = listOrderItemsResult.NextToken; ListOrderItemsByNextTokenResponse response1 = client.ListOrderItemsByNextToken(request1); if (response1.IsSetListOrderItemsByNextTokenResult()) { ListOrderItemsByNextTokenResult listOrderByNextItemsResult = response1.ListOrderItemsByNextTokenResult; if (listOrderByNextItemsResult.IsSetOrderItems()) { List <OrderItem> orderItems = listOrderItemsResult.OrderItems; foreach (OrderItem orderItem in orderItems) { if (orderItem.IsSetOrderItemId()) { strbuff += "商品名:" + orderItem.Title + System.Environment.NewLine; } } } } } } } } catch (Exception ex) { } //// GetOrder //try //{ // foreach (DataRow dr in dt.Rows) // { // GetOrderRequest request = new GetOrderRequest(); // request.SellerId = SellerId; // request.MWSAuthToken = MWSAuthToken; // List<string> amazonorderId = new List<string>(); // amazonorderId.Add(dr["OrderId"].ToString()); // request.AmazonOrderId = amazonorderId; // GetOrderResponse response = client.GetOrder(request); // if (response.IsSetGetOrderResult()) // { // List<Order> orders = response.GetOrderResult.Orders; // foreach (Order order in orders) // { // strbuff += "購入者:" + order.AmazonOrderId + ","+ order.OrderStatus + System.Environment.NewLine; // } // } // } //} //catch (Exception ex) //{ //} //// GetService Status //try //{ // MarketplaceWebServiceOrdersConfig config1 = new MarketplaceWebServiceOrdersConfig(); // config1.ServiceURL = serviceURL; // MarketplaceWebServiceOrders.MarketplaceWebServiceOrders client1 = new MarketplaceWebServiceOrdersClient( // AccessKeyId, // SecretKeyId, // ApplicationName, // ApplicationVersion, // config1); // MarketplaceWebServiceOrders.Model.GetServiceStatusRequest request = new MarketplaceWebServiceOrders.Model.GetServiceStatusRequest(); // request.SellerId = SellerId; // request.MWSAuthToken = MWSAuthToken; // // MarketplaceWebServiceOrders.Model.GetServiceStatusRequest // var response = client1.GetServiceStatus(request); // if (response.IsSetGetServiceStatusResult()) // { // strbuff = "処理状況:" + response.GetServiceStatusResult.Status; // } //} //catch (Exception ex) //{ //} }