private void GetOrdersByNextToken(AmazonOrdersRequestInfo requestInfo, string nextToken, ActionAccessType access, RequestsCounterData responseCounter, Func <List <AmazonOrderItem>, bool> func) { var sellerId = requestInfo.MerchantId; var req = new ListOrdersByNextTokenRequest { NextToken = nextToken, SellerId = sellerId, MWSAuthToken = requestInfo.MWSAuthToken }; var response = AmazonWaitBeforeRetryHelper.DoServiceAction( requestInfo.ErrorRetryingInfo, ListOrdersTrapForThrottling, "ListOrdersByNextToken", access, responseCounter, () => _Service.ListOrdersByNextToken(req)); if (response != null && response.IsSetListOrdersByNextTokenResult()) { var result = response.ListOrdersByNextTokenResult; if (result.IsSetOrders()) { var ordersList = ParseOrdersInfo(result.Orders, sellerId, access, requestInfo.CustomerId); func(ordersList); } if (result.IsSetNextToken()) { GetOrdersByNextToken(requestInfo, result.NextToken, access, responseCounter, func); } } }
public string InvokeListOrdersByNextToken(string nextToken) { try { Console.WriteLine("Starting {0} at {1}", System.Reflection.MethodBase.GetCurrentMethod().Name, DateTime.Now); // Create a request. ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); request.SellerId = api.SellerId; request.MWSAuthToken = api.MWSAuthToken; request.NextToken = nextToken; response = client.ListOrdersByNextToken(request); Console.WriteLine("Response:"); rhmd = response.ResponseHeaderMetadata; // Is recommended logging the request id and timestamp of every call. Console.WriteLine("RequestId: " + rhmd.RequestId); Console.WriteLine("Timestamp: " + rhmd.Timestamp); string responseXml = response.ToXML(); Console.WriteLine(responseXml); return(responseXml); } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } }
public ListOrdersByNextTokenResponse InvokeListOrdersByNextToken(string nextToken) { // Create a request. ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); request.SellerId = SellerId; request.NextToken = nextToken; return(_client.ListOrdersByNextToken(request)); }
private ListOrdersByNextTokenResponse InvokeListOrdersByNextToken(string nextToken) { // Create a request. ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); request.SellerId = sellerId; request.MWSAuthToken = mwsAuthToken; request.NextToken = nextToken; return(this.client.ListOrdersByNextToken(request)); }
public static ListOrdersByNextTokenResponse InvokeListOrdersByNextToken(ServiceCliamDefinition serviceCliamDefinition, string nextToken) { // Create a request. ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); request.SellerId = serviceCliamDefinition.SellerId; request.MWSAuthToken = serviceCliamDefinition.AuthToken; request.NextToken = nextToken; return(client.ListOrdersByNextToken(request)); }
public ListOrdersByNextTokenResponse InvokeListOrdersByNextToken() { // Create a request. ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); string sellerId = "example"; request.SellerId = sellerId; string nextToken = "example"; request.NextToken = nextToken; return(this.client.ListOrdersByNextToken(request)); }
/// <summary> /// Handles the specified command. /// </summary> /// <param name="command">The command.</param> public async void Handle(AmazonGetOrders3dPartyCommand command) { InfoAccumulator info = new InfoAccumulator(); ListOrdersRequest request = new ListOrdersRequest { MWSAuthToken = command.AuthorizationToken, MarketplaceId = new List <string>(command.MarketplaceId), SellerId = command.SellerId, CreatedAfter = command.DateFrom.ToUniversalTime() }; //get first page ListOrdersResponse response = await AmazonService.Orders.ListOrders(request); List <IEnumerable <AmazonOrderItemAndPayments> > results = new List <IEnumerable <AmazonOrderItemAndPayments> >(); if (response.IsSetListOrdersResult()) { //process first page var orders = CreateOrders(response.ListOrdersResult); results.Add(orders); //get next pages string nextToken = response.ListOrdersResult.NextToken; while (StringUtils.IsNotEmpty(nextToken)) { var nextRequest = new ListOrdersByNextTokenRequest { MWSAuthToken = command.AuthorizationToken, NextToken = nextToken, SellerId = command.SellerId }; //get next page ListOrdersByNextTokenResponse nextResponse = await AmazonService.Orders.ListOrdersByNextToken(nextRequest); if (nextResponse != null && nextResponse.IsSetListOrdersByNextTokenResult()) { //process next page results var nextOrders = nextResponse.ListOrdersByNextTokenResult.Orders.Select(CreateAmazonOrderItem); results.Add(nextOrders); nextToken = nextResponse.ListOrdersByNextTokenResult.NextToken; } else { nextToken = null; } } } SendReply(info, command, resp => resp.OrderPayments = results.SelectMany(o => o).ToArray()); }
public ListOrdersByNextTokenResponse InvokeListOrdersByNextToken() { // Create a request. var request = new ListOrdersByNextTokenRequest(); var sellerId = "example"; request.SellerId = sellerId; var mwsAuthToken = "example"; request.MWSAuthToken = mwsAuthToken; var nextToken = "example"; request.NextToken = nextToken; return(_client.ListOrdersByNextToken(request)); }
/** * Convert ListOrdersByNextTokenRequest to name value pairs */ private IDictionary <String, String> ConvertListOrdersByNextToken(ListOrdersByNextTokenRequest request) { IDictionary <String, String> parameters = new Dictionary <String, String>(); parameters.Add("Action", "ListOrdersByNextToken"); if (request.IsSetSellerId()) { parameters.Add("SellerId", request.SellerId); } if (request.IsSetNextToken()) { parameters.Add("NextToken", request.NextToken); } return(parameters); }
/// <summary> /// Fetches all orders created in the given time period and processes them locally. /// <param name="startTime">The starting time period of orders to fetch.</param> /// <param name="endTime">The ending time period of orders to fetch.</param> public void FetchOrders(DateTime startTime, DateTime endTime) { ListOrdersRequest request = new ListOrdersRequest(); request.CreatedAfter = startTime; if (endTime != DateTime.MinValue) { request.CreatedBefore = endTime; } request.SellerId = mwsSellerId; request.MarketplaceId = new MarketplaceIdList(); request.MarketplaceId.Id = new List <string>(); foreach (string marketplaceId in mwsMarketplaceIdList) { request.MarketplaceId.Id.Add(marketplaceId); } List <Order> orderList = new List <Order>(); ListOrdersResponse response = null; OrderFetcher.InvokeRetriable(LIST_ORDERS_DEFAULT_THROTTLE_LIMIT, delegate() { response = mwsService.ListOrders(request); ProcessOrders(response.ListOrdersResult.Orders.Order); }); String nextTokenString = response.ListOrdersResult.NextToken; while (!string.IsNullOrEmpty(nextTokenString)) { // If NextToken is set, continue looping through the orders. ListOrdersByNextTokenRequest nextRequest = new ListOrdersByNextTokenRequest(); nextRequest.NextToken = nextTokenString; nextRequest.SellerId = mwsSellerId; ListOrdersByNextTokenResponse nextResponse = null; OrderFetcher.InvokeRetriable(LIST_ORDERS_DEFAULT_THROTTLE_LIMIT, delegate() { nextResponse = mwsService.ListOrdersByNextToken(nextRequest); ProcessOrders(nextResponse.ListOrdersByNextTokenResult.Orders.Order); }); nextTokenString = nextResponse.ListOrdersByNextTokenResult.NextToken; } }
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 ListOrdersByNextTokenResponse InvokeListOrdersByNextToken(PXGraph graph, ServiceCallParameters objParams) { ListOrdersByNextTokenRequest request = new ListOrdersByNextTokenRequest(); ListOrdersByNextTokenResponse responseOrderByNextToken = new ListOrdersByNextTokenResponse(); try { request.SellerId = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; request.NextToken = objParams.nextToken; responseOrderByNextToken = this.clientOrder.ListOrdersByNextToken(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceOrdersException) { MarketplaceWebServiceOrdersException exception = ex as MarketplaceWebServiceOrdersException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOMessages.requestThrottled) { Thread.Sleep(SOHelper.DelayProcess(graph, SOConstants.apiListOrdersByNextToken)); responseOrderByNextToken = InvokeListOrdersByNextToken(graph, objParams); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } return(responseOrderByNextToken); }
/// <summary> /// If ListOrders returns a nextToken, thus indicating that there are more orders /// than returned that matched the given filter criteria, ListOrdersByNextToken /// can be used to retrieve those other orders using that nextToken. /// /// </summary> /// <param name="service">Instance of MarketplaceWebServiceOrders service</param> /// <param name="request">ListOrdersByNextTokenRequest request</param> public static void InvokeListOrdersByNextToken(MarketplaceWebServiceOrders service, ListOrdersByNextTokenRequest request) { try { ListOrdersByNextTokenResponse response = service.ListOrdersByNextToken(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" ListOrdersByNextTokenResponse"); if (response.IsSetListOrdersByNextTokenResult()) { Console.WriteLine(" ListOrdersByNextTokenResult"); ListOrdersByNextTokenResult listOrdersByNextTokenResult = response.ListOrdersByNextTokenResult; if (listOrdersByNextTokenResult.IsSetNextToken()) { Console.WriteLine(" NextToken"); Console.WriteLine(" {0}", listOrdersByNextTokenResult.NextToken); } if (listOrdersByNextTokenResult.IsSetCreatedBefore()) { Console.WriteLine(" CreatedBefore"); Console.WriteLine(" {0}", listOrdersByNextTokenResult.CreatedBefore); } if (listOrdersByNextTokenResult.IsSetLastUpdatedBefore()) { Console.WriteLine(" LastUpdatedBefore"); Console.WriteLine(" {0}", listOrdersByNextTokenResult.LastUpdatedBefore); } if (listOrdersByNextTokenResult.IsSetOrders()) { Console.WriteLine(" Orders"); OrderList orders = listOrdersByNextTokenResult.Orders; List <Order> orderList = orders.Order; foreach (Order order in orderList) { Console.WriteLine(" Order"); if (order.IsSetAmazonOrderId()) { Console.WriteLine(" AmazonOrderId"); Console.WriteLine(" {0}", order.AmazonOrderId); } if (order.IsSetSellerOrderId()) { Console.WriteLine(" SellerOrderId"); Console.WriteLine(" {0}", order.SellerOrderId); } if (order.IsSetPurchaseDate()) { Console.WriteLine(" PurchaseDate"); Console.WriteLine(" {0}", order.PurchaseDate); } if (order.IsSetLastUpdateDate()) { Console.WriteLine(" LastUpdateDate"); Console.WriteLine(" {0}", order.LastUpdateDate); } if (order.IsSetOrderStatus()) { Console.WriteLine(" OrderStatus"); Console.WriteLine(" {0}", order.OrderStatus); } if (order.IsSetFulfillmentChannel()) { Console.WriteLine(" FulfillmentChannel"); Console.WriteLine(" {0}", order.FulfillmentChannel); } if (order.IsSetSalesChannel()) { Console.WriteLine(" SalesChannel"); Console.WriteLine(" {0}", order.SalesChannel); } if (order.IsSetOrderChannel()) { Console.WriteLine(" OrderChannel"); Console.WriteLine(" {0}", order.OrderChannel); } if (order.IsSetShipServiceLevel()) { Console.WriteLine(" ShipServiceLevel"); Console.WriteLine(" {0}", order.ShipServiceLevel); } if (order.IsSetShippingAddress()) { Console.WriteLine(" ShippingAddress"); Address shippingAddress = order.ShippingAddress; if (shippingAddress.IsSetName()) { Console.WriteLine(" Name"); Console.WriteLine(" {0}", shippingAddress.Name); } if (shippingAddress.IsSetAddressLine1()) { Console.WriteLine(" AddressLine1"); Console.WriteLine(" {0}", shippingAddress.AddressLine1); } if (shippingAddress.IsSetAddressLine2()) { Console.WriteLine(" AddressLine2"); Console.WriteLine(" {0}", shippingAddress.AddressLine2); } if (shippingAddress.IsSetAddressLine3()) { Console.WriteLine(" AddressLine3"); Console.WriteLine(" {0}", shippingAddress.AddressLine3); } if (shippingAddress.IsSetCity()) { Console.WriteLine(" City"); Console.WriteLine(" {0}", shippingAddress.City); } if (shippingAddress.IsSetCounty()) { Console.WriteLine(" County"); Console.WriteLine(" {0}", shippingAddress.County); } if (shippingAddress.IsSetDistrict()) { Console.WriteLine(" District"); Console.WriteLine(" {0}", shippingAddress.District); } if (shippingAddress.IsSetStateOrRegion()) { Console.WriteLine(" StateOrRegion"); Console.WriteLine(" {0}", shippingAddress.StateOrRegion); } if (shippingAddress.IsSetPostalCode()) { Console.WriteLine(" PostalCode"); Console.WriteLine(" {0}", shippingAddress.PostalCode); } if (shippingAddress.IsSetCountryCode()) { Console.WriteLine(" CountryCode"); Console.WriteLine(" {0}", shippingAddress.CountryCode); } if (shippingAddress.IsSetPhone()) { Console.WriteLine(" Phone"); Console.WriteLine(" {0}", shippingAddress.Phone); } } if (order.IsSetOrderTotal()) { Console.WriteLine(" OrderTotal"); Money orderTotal = order.OrderTotal; if (orderTotal.IsSetCurrencyCode()) { Console.WriteLine(" CurrencyCode"); Console.WriteLine(" {0}", orderTotal.CurrencyCode); } if (orderTotal.IsSetAmount()) { Console.WriteLine(" Amount"); Console.WriteLine(" {0}", orderTotal.Amount); } } if (order.IsSetNumberOfItemsShipped()) { Console.WriteLine(" NumberOfItemsShipped"); Console.WriteLine(" {0}", order.NumberOfItemsShipped); } if (order.IsSetNumberOfItemsUnshipped()) { Console.WriteLine(" NumberOfItemsUnshipped"); Console.WriteLine(" {0}", order.NumberOfItemsUnshipped); } if (order.IsSetPaymentExecutionDetail()) { Console.WriteLine(" PaymentExecutionDetail"); PaymentExecutionDetailItemList paymentExecutionDetail = order.PaymentExecutionDetail; List <PaymentExecutionDetailItem> paymentExecutionDetailItemList = paymentExecutionDetail.PaymentExecutionDetailItem; foreach (PaymentExecutionDetailItem paymentExecutionDetailItem in paymentExecutionDetailItemList) { Console.WriteLine(" PaymentExecutionDetailItem"); if (paymentExecutionDetailItem.IsSetPayment()) { Console.WriteLine(" Payment"); Money payment = paymentExecutionDetailItem.Payment; if (payment.IsSetCurrencyCode()) { Console.WriteLine(" CurrencyCode"); Console.WriteLine(" {0}", payment.CurrencyCode); } if (payment.IsSetAmount()) { Console.WriteLine(" Amount"); Console.WriteLine(" {0}", payment.Amount); } } if (paymentExecutionDetailItem.IsSetPaymentMethod()) { Console.WriteLine(" PaymentMethod"); Console.WriteLine(" {0}", paymentExecutionDetailItem.PaymentMethod); } } } if (order.IsSetPaymentMethod()) { Console.WriteLine(" PaymentMethod"); Console.WriteLine(" {0}", order.PaymentMethod); } if (order.IsSetMarketplaceId()) { Console.WriteLine(" MarketplaceId"); Console.WriteLine(" {0}", order.MarketplaceId); } if (order.IsSetBuyerEmail()) { Console.WriteLine(" BuyerEmail"); Console.WriteLine(" {0}", order.BuyerEmail); } if (order.IsSetBuyerName()) { Console.WriteLine(" BuyerName"); Console.WriteLine(" {0}", order.BuyerName); } if (order.IsSetShipmentServiceLevelCategory()) { Console.WriteLine(" ShipmentServiceLevelCategory"); Console.WriteLine(" {0}", order.ShipmentServiceLevelCategory); } if (order.IsSetShippedByAmazonTFM()) { Console.WriteLine(" ShippedByAmazonTFM"); Console.WriteLine(" {0}", order.ShippedByAmazonTFM); } if (order.IsSetTFMShipmentStatus()) { Console.WriteLine(" TFMShipmentStatus"); Console.WriteLine(" {0}", order.TFMShipmentStatus); } } } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); ResponseMetadata responseMetadata = response.ResponseMetadata; if (responseMetadata.IsSetRequestId()) { Console.WriteLine(" RequestId"); Console.WriteLine(" {0}", responseMetadata.RequestId); } } Console.WriteLine(" ResponseHeaderMetadata"); Console.WriteLine(" RequestId"); Console.WriteLine(" " + response.ResponseHeaderMetadata.RequestId); Console.WriteLine(" ResponseContext"); Console.WriteLine(" " + response.ResponseHeaderMetadata.ResponseContext); Console.WriteLine(" Timestamp"); Console.WriteLine(" " + response.ResponseHeaderMetadata.Timestamp); Console.WriteLine(); } catch (MarketplaceWebServiceOrdersException ex) { Console.WriteLine("Caught Exception: " + ex.Message); Console.WriteLine("Response Status Code: " + ex.StatusCode); Console.WriteLine("Error Code: " + ex.ErrorCode); Console.WriteLine("Error Type: " + ex.ErrorType); Console.WriteLine("Request ID: " + ex.RequestId); Console.WriteLine("XML: " + ex.XML); Console.WriteLine("ResponseHeaderMetadata: " + ex.ResponseHeaderMetadata); } }
public ListOrdersByNextTokenResponse ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(NewResponse <ListOrdersByNextTokenResponse>()); }
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 SyncOrders(ERPContext context, string accountName, DateTime createdAfter, DateTime createdBefore, List <EbayOrderdetail> orderDetails) { if (!sellerIdDictionary.ContainsKey(accountName)) { m_logger.Error(accountName + " does not exist."); return; } m_logger.Info("Sync orders of " + accountName); try { ListOrdersRequest request = new ListOrdersRequest(); request.SellerId = sellerIdDictionary[accountName]; request.MWSAuthToken = mwsAuthTokenDictionary[accountName]; request.LastUpdatedAfter = createdAfter; request.LastUpdatedBefore = createdBefore; request.OrderStatus = new List <string>(); request.OrderStatus.Add("Unshipped"); request.OrderStatus.Add("PartiallyShipped"); List <string> marketplaceIds = new List <string>(); marketplaceIds.Add(marketplaceId); request.MarketplaceId = marketplaceIds; int retryCount = 0; ListOrdersResponse response = null; while (retryCount <= m_maxRetry && response == null) { if (retryCount > 0) { Thread.Sleep(TimeSpan.FromSeconds(retryCount * 2)); } try { response = client.ListOrders(request); } catch (Exception e) { if (retryCount > m_maxRetry) { throw e; } retryCount++; } } ProcessOrders(context, accountName, response.ListOrdersResult.Orders, orderDetails); string nextToken = response.ListOrdersResult.NextToken; while (nextToken != null) { ListOrdersByNextTokenRequest request1 = new ListOrdersByNextTokenRequest(); request1.SellerId = sellerIdDictionary[accountName]; request1.MWSAuthToken = mwsAuthTokenDictionary[accountName]; request1.NextToken = nextToken; retryCount = 0; ListOrdersByNextTokenResponse response1 = null; while (retryCount <= m_maxRetry && response == null) { if (retryCount > 0) { Thread.Sleep(TimeSpan.FromSeconds(retryCount * 2)); } try { response1 = client.ListOrdersByNextToken(request1); } catch (Exception e) { if (retryCount > m_maxRetry) { throw e; } retryCount++; } } ProcessOrders(context, accountName, response1.ListOrdersByNextTokenResult.Orders, orderDetails); nextToken = response1.ListOrdersByNextTokenResult.NextToken; } } catch (Exception e) { m_logger.Error(e.Message); } }
public ListOrdersByNextTokenResponse ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(connection.Call( new MarketplaceWebServiceOrdersClient.Request <ListOrdersByNextTokenResponse>("ListOrdersByNextToken", typeof(ListOrdersByNextTokenResponse), servicePath), request)); }
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) //{ //} }
// Public API ------------------------------------------------------------// /// <summary> /// List Orders By Next Token /// </summary> /// <param name="request">List Orders By Next Token request</param> /// <returns>List Orders By Next Token Response from the service</returns> /// <remarks> /// If ListOrders returns a nextToken, thus indicating that there are more orders /// than returned that matched the given filter criteria, ListOrdersByNextToken /// can be used to retrieve those other orders using that nextToken. /// /// </remarks> public ListOrdersByNextTokenResponse ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(Invoke <ListOrdersByNextTokenResponse>(ConvertListOrdersByNextToken(request))); }
public Task <ListOrdersByNextTokenResponse> ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(Task.Run(() => this.connection.Call( new ImwssOrdersServiceClient.Request <ListOrdersByNextTokenResponse>("ListOrdersByNextToken", typeof(ListOrdersByNextTokenResponse), this.servicePath), request))); }
private Order[] ListOrders(DateTime CreatedAfter, DateTime CreatedBefore, DateTime LastUpdatedAfter, DateTime LastUpdatedBefore, EOrderStatus[] OrderStatus) { string NextToken = string.Empty; AmazonCredential Credentials = this.GetCredential(); MarketplaceWebServiceOrdersClient Client = this.GetClient(Credentials); ListOrdersRequest Request = new ListOrdersRequest() { SellerId = Credentials.SellerID, MarketplaceId = new List <string>() { Credentials.MarketplaceID }, }; if (CreatedAfter != default(DateTime) && CreatedBefore != default(DateTime)) { Request.CreatedAfter = CreatedAfter; Request.CreatedBefore = CreatedBefore; } if (LastUpdatedAfter != default(DateTime) && LastUpdatedBefore != default(DateTime)) { Request.LastUpdatedAfter = LastUpdatedAfter; Request.LastUpdatedBefore = LastUpdatedBefore; } if (OrderStatus != null) { Request.OrderStatus = OrderStatus.Select(Item => Item.ToString()).ToList(); } List <Order> Orders = new List <Order>(); Task ListOrdersTask = new Task(() => { while (true) { switch (string.IsNullOrWhiteSpace(NextToken)) { case true: this.Throttle(ERequestType.ListOrders); ListOrdersResponse Response = Client.ListOrders(Request); if (Response.IsSetListOrdersResult()) { ListOrdersResult Result = Response.ListOrdersResult; if (Result.IsSetOrders()) { foreach (var Order in Result.Orders) { Orders.Add(Order); } } if (Result.IsSetNextToken()) { NextToken = Result.NextToken; } else { goto EndOfLoop; } } break; case false: this.Throttle(ERequestType.ListOrders); ListOrdersByNextTokenRequest RequestNextToken = new ListOrdersByNextTokenRequest() { SellerId = Credentials.SellerID, NextToken = NextToken }; ListOrdersByNextTokenResponse ResponseNextToken = Client.ListOrdersByNextToken(RequestNextToken); if (ResponseNextToken.IsSetListOrdersByNextTokenResult()) { ListOrdersByNextTokenResult ResultNextToken = ResponseNextToken.ListOrdersByNextTokenResult; if (ResultNextToken.IsSetOrders()) { foreach (var Order in ResultNextToken.Orders) { Orders.Add(Order); } } if (ResultNextToken.IsSetNextToken()) { NextToken = ResultNextToken.NextToken; } else { goto EndOfLoop; } } break; } } EndOfLoop: Console.Write(""); }); ListOrdersTask.Start(); ListOrdersTask.Wait((int)Math.Ceiling(TimeSpan.FromMinutes(Definitions.Timeout_Minutes).Add(TimeSpan.FromHours(Definitions.Timeout_Hours)).TotalMilliseconds)); return(Orders.ToArray()); }
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 Task <ListOrdersByNextTokenResponse> ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(newResponse <ListOrdersByNextTokenResponse>()); }
// Public API ------------------------------------------------------------// /// <summary> /// List Orders By Next Token /// </summary> /// <param name="request">List Orders By Next Token request</param> /// <returns>List Orders By Next Token Response from the service</returns> /// <remarks> /// If ListOrders returns a nextToken, thus indicating that there are more orders /// than returned that matched the given filter criteria, ListOrdersByNextToken /// can be used to retrieve those other orders using that nextToken. /// /// </remarks> public ListOrdersByNextTokenResponse ListOrdersByNextToken(ListOrdersByNextTokenRequest request) { return(Invoke <ListOrdersByNextTokenResponse>("ListOrdersByNextTokenResponse.xml")); }