using System; using System.Collections.Generic; using System.Linq; using System.Text; using MarketplaceWebServiceOrders; using MarketplaceWebServiceOrders.Model; using NetLibrary.Log; using NetLibrary.OnlineTrade; namespace TradeServer { public class AmazonNew { public string accessKeyId { get; set; } public string secretAccessKey { get; set; } public string merchantId { get; set; } public string marketplaceId { get; set; } public string country { get; set; } public string applicationName { get; set; } public string applicationVersion { get; set; } public string MWSAuthToken { get; set; } public AmazonNew() { applicationName = "AmazonAPIInterface"; applicationVersion = "1.0"; } #region 读取订单列表 public List GetOrders(DateTime? StartDate, DateTime? StopDate, string AccountName, out string ErrorMessage) { ErrorMessage = ""; List ListModel = new List(); try { MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); #region 设置市场所在地借口地址 switch (country) { case "美国": config.ServiceURL = "https://mws.amazonservices.com/Orders/2013-09-01"; break; case "加拿大": config.ServiceURL = "https://mws.amazonservices.ca/Orders/2013-09-01"; break; case "欧洲": config.ServiceURL = "https://mws-eu.amazonservices.com/Orders/2013-09-01"; break; case "日本": config.ServiceURL = "https://mws.amazonservices.jp/Orders/2013-09-01"; break; case "中国": config.ServiceURL = "https://mws.amazonservices.com.cn/Orders/2013-09-01"; break; } #endregion //MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig(); //config.ServiceURL = "https://mws.amazonservices.com/Orders/2013-09-01"; // MarketplaceWebServiceOrders.MarketplaceWebServiceOrders service = new MarketplaceWebServiceOrdersClient("AKIAIFTXDPZEJBIKCUMQ", "ituSmcpZ6v9JOLa13rdPm/94jp7ZzIY8ZTxbHiMG", "CSharpSampleCode", "1.0", config); MarketplaceWebServiceOrders.MarketplaceWebServiceOrders service = new MarketplaceWebServiceOrdersClient(accessKeyId, secretAccessKey, "CSharpSampleCode", applicationVersion, config); ListOrdersRequest request = new ListOrdersRequest(); // string sellerId = "AUK1LBRRMNKYN"; request.SellerId = merchantId;// sellerId; //string mwsAuthToken = "amzn.mws.d8ad4919-990d-95ca-3a6c-b7c31dc44f99"; request.MWSAuthToken = MWSAuthToken;// mwsAuthToken; //DateTime createdAfter = DateTime.Now.AddDays(-10); // request.CreatedAfter = createdAfter; //DateTime createdBefore = new DateTime(); //request.CreatedBefore = createdBefore; DateTime lastUpdatedAfter = DateTime.Now.AddDays(-10); request.LastUpdatedAfter = lastUpdatedAfter; //DateTime lastUpdatedBefore = new DateTime(); //request.LastUpdatedBefore = lastUpdatedBefore; List orderStatus = new List(); orderStatus.Add("Unshipped"); orderStatus.Add("PartiallyShipped"); request.OrderStatus = orderStatus; List marketplace = new List(); // marketplaceId.Add("ATVPDKIKX0DER"); marketplace.Add(marketplaceId); request.MarketplaceId = marketplace; // ListOrdersRequest OrdersRequest = new ListOrdersRequest(); //OrdersRequest.MWSAuthToken = "amzn.mws.d8ad4919-990d-95ca-3a6c-b7c31dc44f99"; // OrdersRequest.SellerId = "AUK1LBRRMNKYN"; // OrdersRequest.CreatedAfter = System.DateTime.Now.AddDays(-15); //// OrdersRequest.LastUpdatedAfter = System.DateTime.Now.AddDays(-15); // // if (StopDate != null) // // OrdersRequest.LastUpdatedBefore = StopDate.Value; // #region 设置等待发货状态 // List markplacelist = new List(); // markplacelist.Add("ATVPDKIKX0DER"); // OrdersRequest.MarketplaceId = markplacelist; // List status = new List(); // status.Add("Unshipped"); // status.Add("PartiallyShipped"); // OrdersRequest.OrderStatus = status; // #endregion ListOrdersResponse OrdersResponse = service.ListOrders(request); int i = 1; foreach (var item in OrdersResponse.ListOrdersResult.Orders) { #region 转换 OrderModel model = new OrderModel(); model.OrderCode = item.AmazonOrderId; model.TotalPrice = Convert.ToDecimal(item.OrderTotal.Amount); model.MoneyCode = item.OrderTotal.CurrencyCode; model.OrderDate = item.PurchaseDate; if (country == "美国") model.OrderDate = model.OrderDate.Value.AddHours(8); model.BuyerID = ""; model.BuyerName = item.ShippingAddress.Name; model.BuyerCountry = item.ShippingAddress.CountryCode; model.BuyerAddr = item.ShippingAddress.AddressLine1; if (string.IsNullOrEmpty(item.ShippingAddress.AddressLine2) == false) model.BuyerAddr += "," + item.ShippingAddress.AddressLine2; if (string.IsNullOrEmpty(item.ShippingAddress.AddressLine3) == false) model.BuyerAddr += "," + item.ShippingAddress.AddressLine3; if (string.IsNullOrEmpty(item.ShippingAddress.County) == false) model.BuyerAddr += "," + item.ShippingAddress.County; model.BuyerPhone = item.ShippingAddress.Phone; model.BuyerProvince = item.ShippingAddress.StateOrRegion; model.BuyerCity = item.ShippingAddress.City; model.BuyerArea = item.ShippingAddress.District; model.BuyerMobile = ""; model.BuyerMail = item.BuyerEmail; model.BuyerFax = ""; model.BuyerZip = item.ShippingAddress.PostalCode; model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = null; model.PostInfo = item.ShipServiceLevel; model.ListModel = new List(); ListModel.Add(model); #endregion } #region 采集分页订单 string nexttoken = OrdersResponse.ListOrdersResult.NextToken; while (nexttoken != null) { #region 延迟1分钟,避免被限制 if (i > 4) { System.Threading.Thread.Sleep(60000); } #endregion ListOrdersByNextTokenRequest nextrequest = new ListOrdersByNextTokenRequest(); nextrequest.NextToken = nexttoken; nextrequest.SellerId = merchantId; List nextorders = new List(); var nextresponse = service.ListOrdersByNextToken(nextrequest); foreach (var item in nextresponse.ListOrdersByNextTokenResult.Orders) { #region 转换 OrderModel model = new OrderModel(); model.OrderCode = item.AmazonOrderId; model.TotalPrice = Convert.ToDecimal(item.OrderTotal.Amount); model.MoneyCode = item.OrderTotal.CurrencyCode; model.OrderDate = item.PurchaseDate; if (country == "美国") model.OrderDate = model.OrderDate.Value.AddHours(8); model.BuyerID = ""; model.BuyerName = item.ShippingAddress.Name; model.BuyerCountry = item.ShippingAddress.CountryCode; model.BuyerAddr = item.ShippingAddress.AddressLine1; if (string.IsNullOrEmpty(item.ShippingAddress.AddressLine2) == false) model.BuyerAddr += "," + item.ShippingAddress.AddressLine2; if (string.IsNullOrEmpty(item.ShippingAddress.AddressLine3) == false) model.BuyerAddr += "," + item.ShippingAddress.AddressLine3; if (string.IsNullOrEmpty(item.ShippingAddress.County) == false) model.BuyerAddr += "," + item.ShippingAddress.County; model.BuyerPhone = item.ShippingAddress.Phone; model.BuyerProvince = item.ShippingAddress.StateOrRegion; model.BuyerCity = item.ShippingAddress.City; model.BuyerArea = item.ShippingAddress.District; model.BuyerMobile = ""; model.BuyerMail = item.BuyerEmail; model.BuyerFax = ""; model.BuyerZip = item.ShippingAddress.PostalCode; model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = null; model.PostInfo = item.ShipServiceLevel; model.ListModel = new List(); ListModel.Add(model); #endregion } nexttoken = nextresponse.ListOrdersByNextTokenResult.NextToken; i++; } #endregion ListOrderItemsRequest OrderItemsRequest = new ListOrderItemsRequest(); OrderItemsRequest.SellerId = merchantId; #region 获取订单分配内容 i = 0; foreach (OrderModel model in ListModel) { i++; #region 延迟2秒,避免被限制 if (i > 10) { System.Threading.Thread.Sleep(2 * 1000); i = 0; } #endregion try { #region 获取OrderItems信息 OrderItemsRequest.AmazonOrderId = model.OrderCode; ListOrderItemsResponse OrderItemsResponse = service.ListOrderItems(OrderItemsRequest); foreach (var item2 in OrderItemsResponse.ListOrderItemsResult.OrderItems) { if (item2.QuantityOrdered <= 0) continue; OrderDetailModel model2 = new OrderDetailModel(); model2.GoodsNum = Convert.ToInt32(item2.QuantityOrdered); model2.GoodsPrice = Convert.ToDecimal(item2.ItemPrice.Amount); model2.MoneyCode = item2.ItemPrice.CurrencyCode; model2.GoodsName = item2.Title; model2.GoodsSKU = item2.SellerSKU; model2.PostInfo = model.PostInfo; model2.OrderItemId = item2.OrderItemId; model.ListModel.Add(model2); } System.Threading.Thread.Sleep(1000); string tk = OrderItemsResponse.ListOrderItemsResult.NextToken; while (tk != null) { #region 延迟2秒,避免被限制 if (i > 10) { System.Threading.Thread.Sleep(2 * 1000); i = 0; } #endregion ListOrderItemsByNextTokenRequest NextOrderItemsRequest = new ListOrderItemsByNextTokenRequest(); NextOrderItemsRequest.NextToken = tk; NextOrderItemsRequest.SellerId = merchantId; ListOrderItemsByNextTokenResponse OrderItemsByNextTokenRequest = service.ListOrderItemsByNextToken(NextOrderItemsRequest); foreach (var item2 in OrderItemsByNextTokenRequest.ListOrderItemsByNextTokenResult.OrderItems.OrderItem) { if (item2.QuantityOrdered <= 0) continue; OrderDetailModel model2 = new OrderDetailModel(); model2.GoodsNum = Convert.ToInt32(item2.QuantityOrdered); model2.GoodsPrice = Convert.ToDecimal(item2.ItemPrice.Amount); model2.MoneyCode = item2.ItemPrice.CurrencyCode; model2.GoodsName = item2.Title; model2.GoodsSKU = item2.SellerSKU; model2.PostInfo = model.PostInfo; model2.OrderItemId = item2.OrderItemId; model.ListModel.Add(model2); } } #endregion } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); ErrorMessage = ex.Message; return null; } } #endregion } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); ErrorMessage = ex.Message; return null; } return ListModel; } #endregion } }