using System; using System.Collections.Generic; using System.Linq; using System.Text; using MarketplaceWebServiceOrders; using MarketplaceWebServiceOrders.Model; using NetLibrary.Log; using NetLibrary.OnlineTrade; using MarketplaceWebService; using MarketplaceWebService.Model; using MarketplaceWebServiceProducts; using MarketplaceWebServiceProducts.Model; using System.IO; namespace ApiNew { public class Amazonapinew { 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 Amazonapinew() { applicationName = "AmazonAPIInterface"; applicationVersion = "1.0"; } #region 读取订单列表 public List GetOrders(DateTime? StartDate, DateTime? StopDate, string AccountName,List olist, 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(-7); if (StartDate != null) lastUpdatedAfter = StartDate.Value; else lastUpdatedAfter = System.DateTime.Now.AddDays(-15); request.LastUpdatedAfter = lastUpdatedAfter; //DateTime lastUpdatedBefore = new DateTime(); //request.LastUpdatedBefore = lastUpdatedBefore; List FulfillmentChannel = new List(); FulfillmentChannel.Add("MFN"); request.FulfillmentChannel = FulfillmentChannel; 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(); //if (item.AmazonOrderId == "114-1407976-7267467") //{ // string a = ""; //} if (item.OrderStatus == "Canceled") continue; if (item.OrderTotal == null) continue; if (olist != null) { var amd = olist.Find(n => n.OrderCode == item.AmazonOrderId); if (amd != null) continue; } 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 = item.ShippingAddress.AddressType; model.BuyerZip = item.ShippingAddress.PostalCode; model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = item.LatestDeliveryDate; if (model.OrderDate != null && model.OrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OrderDate = DateTime.Now; } if (model.PayDate != null&&model.PayDate.Value<=Convert.ToDateTime("1753-01-01")) { model.PayDate = DateTime.Now; } if (model.OutOrderDate != null && model.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OutOrderDate = DateTime.Now.AddDays(7); } 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(10000); } #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) { //if (item.AmazonOrderId == "114-1407976-7267467") //{ // string a = ""; //} #region 转换 OrderModel model = new OrderModel(); if (item.OrderStatus == "Canceled") continue; if (item.OrderTotal == null) continue; if (olist != null) { var amd = olist.Find(n => n.OrderCode == item.AmazonOrderId); if (amd != null) continue; } 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 = item.ShippingAddress.AddressType; model.BuyerZip = item.ShippingAddress.PostalCode; model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = item.LatestDeliveryDate; if (model.OrderDate != null && model.OrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OrderDate = DateTime.Now; } if (model.PayDate != null && model.PayDate.Value <= Convert.ToDateTime("1753-01-01")) { model.PayDate = DateTime.Now; } if (model.OutOrderDate != null && model.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OutOrderDate = DateTime.Now.AddDays(7); } model.PostInfo = item.ShipServiceLevel; model.escrowFee = 0;//税 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); model.escrowFee = 0; foreach (var item2 in OrderItemsResponse.ListOrderItemsResult.OrderItems) { if (item2.QuantityOrdered <= 0) continue; OrderDetailModel model2 = new OrderDetailModel(); //if (model.OrderCode == "113-1761551-7453021") //{ // var md = item2.TaxCollection.Model; //} if (item2.ItemTax != null && item2.ItemTax.Amount!=null) model.escrowFee +=Convert.ToDecimal(item2.ItemTax.Amount); if (item2.ShippingTax != null && item2.ShippingTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount); model2.productImgUrl = item2.ASIN; 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); model.escrowFee = 0; foreach (var item2 in OrderItemsByNextTokenRequest.ListOrderItemsByNextTokenResult.OrderItems) { if (item2.QuantityOrdered <= 0) continue; //if (model.OrderCode == "113-1761551-7453021") //{ // var md = item2.TaxCollection.Model; //} if (item2.ItemTax != null && item2.ItemTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ItemTax.Amount); if (item2.ShippingTax != null && item2.ShippingTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount); OrderDetailModel model2 = new OrderDetailModel(); model2.productImgUrl = item2.ASIN; 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 #region 读取订单列表 public List GetFBAOrders(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(-4); if (StartDate != null) lastUpdatedAfter = StartDate.Value; request.LastUpdatedAfter = lastUpdatedAfter; //DateTime lastUpdatedBefore = new DateTime(); //request.LastUpdatedBefore = lastUpdatedBefore; List FulfillmentChannel = new List(); FulfillmentChannel.Add("AFN"); request.FulfillmentChannel = FulfillmentChannel; List orderStatus = new List(); //orderStatus.Add("Unshipped"); //orderStatus.Add("PartiallyShipped"); //orderStatus.Add("Pending"); orderStatus.Add("Shipped"); 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(); if (item.OrderStatus == "Canceled") continue; if (item.OrderTotal == null) continue; //if (item.AmazonOrderId == "112-7634530-2741868") //{ // string a = ""; //} 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 = ""; if (item.ShippingAddress != null) { 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 = item.ShippingAddress.AddressType; model.BuyerZip = item.ShippingAddress.PostalCode; } model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = item.LatestDeliveryDate; if (model.OrderDate != null && model.OrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OrderDate = DateTime.Now; } if (model.PayDate != null && model.PayDate.Value <= Convert.ToDateTime("1753-01-01")) { model.PayDate = DateTime.Now; } if (model.OutOrderDate != null && model.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OutOrderDate = DateTime.Now.AddDays(7); } 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(); if (item.OrderStatus == "Canceled") continue; if (item.OrderTotal == null) continue; 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 = ""; if (item.ShippingAddress != null) { 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 = item.ShippingAddress.AddressType; model.BuyerZip = item.ShippingAddress.PostalCode; } model.OrderRemark = ""; model.LeaveWord = ""; model.PayDate = item.LastUpdateDate; model.OutOrderDate = item.LatestDeliveryDate; if (model.OrderDate != null && model.OrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OrderDate = DateTime.Now; } if (model.PayDate != null && model.PayDate.Value <= Convert.ToDateTime("1753-01-01")) { model.PayDate = DateTime.Now; } if (model.OutOrderDate != null && model.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01")) { model.OutOrderDate = DateTime.Now.AddDays(7); } 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) { if (model.OrderCode == "112-5448654-4524204") { string b = ""; } 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); model.escrowFee = 0; foreach (var item2 in OrderItemsResponse.ListOrderItemsResult.OrderItems) { if (item2.QuantityOrdered <= 0) continue; OrderDetailModel model2 = new OrderDetailModel(); model2.productImgUrl = item2.ASIN; if (item2.ItemTax != null && item2.ItemTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ItemTax.Amount); if (item2.ShippingTax != null && item2.ShippingTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount); model2.GoodsNum = Convert.ToInt32(item2.QuantityOrdered); if (item2.ItemPrice != null) { 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); model.escrowFee = 0; foreach (var item2 in OrderItemsByNextTokenRequest.ListOrderItemsByNextTokenResult.OrderItems) { if (item2.QuantityOrdered <= 0) continue; OrderDetailModel model2 = new OrderDetailModel(); model2.productImgUrl = item2.ASIN; if (item2.ItemTax != null && item2.ItemTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ItemTax.Amount); if (item2.ShippingTax != null && item2.ShippingTax.Amount != null) model.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount); model2.GoodsNum = Convert.ToInt32(item2.QuantityOrdered); if (item2.ItemPrice != null) { 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 #region 读取 public void GetProudct() { MarketplaceWebServiceProductsConfig config = new MarketplaceWebServiceProductsConfig(); #region 设置市场所在地借口地址 switch (country) { case "美国": config.ServiceURL = "https://mws.amazonservices.com/Products/2011-10-01"; break; case "加拿大": config.ServiceURL = "https://mws.amazonservices.ca"; break; case "欧洲": config.ServiceURL = "https://mws-eu.amazonservices.com"; break; case "日本": config.ServiceURL = "https://mws.amazonservices.jp"; break; case "印度": config.ServiceURL = "https://mws.amazonservices.in"; break; case "中国": config.ServiceURL = "https://mws.amazonservices.com.cn"; 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); MarketplaceWebServiceProducts.MarketplaceWebServiceProductsClient service = new MarketplaceWebServiceProductsClient(accessKeyId, secretAccessKey, "CSharpSampleCode", applicationVersion, config); //GetCompetitivePricingForASIN GetCompetitivePricingForASINRequest pquest = new GetCompetitivePricingForASINRequest(); pquest.MarketplaceId = marketplaceId; pquest.SellerId = merchantId;// sellerId; //string mwsAuthToken = "amzn.mws.d8ad4919-990d-95ca-3a6c-b7c31dc44f99"; pquest.MWSAuthToken = MWSAuthToken;// mwsAuthToken; //pquest.MWSAuthToken = ""; List alist = new List(); alist.Add("51857023592250"); ASINListType md = new ASINListType(); md.ASIN = alist; pquest.ASINList = md; GetCompetitivePricingForASINResponse ASINResponse = service.GetCompetitivePricingForASIN(pquest); string aaa=ASINResponse.GetCompetitivePricingForASINResult[0].Product.SalesRankings.SalesRank[0].Rank.ToString(); } #endregion public DateTime ToUTCDatetime(DateTime datetime) { if (country == "美国" || country == "加拿大") { var d = datetime.AddHours(-12).ToString("yyyy-MM-dd HH:mm:ss"); return DateTime.Parse(d); } else if (country == "欧洲") { var d = datetime.AddHours(-7).ToString("yyyy-MM-dd HH:mm:ss"); return DateTime.Parse(d); } else if (country == "日本") { var d = datetime.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss"); return DateTime.Parse(d); } else { var d = datetime.ToString("yyyy-MM-dd HH:mm:ss"); return DateTime.Parse(d); } } public Stream ToStream(string str) { byte[] array = Encoding.ASCII.GetBytes(str); MemoryStream stream = new MemoryStream(array); return stream; } public bool UploadAMOrder2(List list, out string error) { long resultId = 0; try { var now = ToUTCDatetime(DateTime.Now); //var dic = GetAMServiceUrl(); //List feeds = new List(); //var now = DateTime.Now.AddMinutes(-10); //using (var db = new AMDB()) //{ // var status = EnumAMStatusCode.Confirmed.ToEnumString(); // var estatus = EnumAMExeStatusCode.WaitUpload.ToEnumString(); // var status1 = EnumAMStatusCode.InProgress.ToEnumString(); // feeds = db.ERP_AM_Feeds.Where(u => (u.StatusCode == status && u.ExeStatus == estatus) // || (u.StatusCode == status1 && u.FulfillmentDate < now)).ToList(); //} // var item = GetAM_Upload_FeedById(id, companyId); // resultId = item.UploadTrackNumberResultTbId; // var accInfo = PFAccountBL.GetAMAccountPFData(item.AccountId, companyId); #region config var config = new MarketplaceWebServiceConfig(); // var mwsUrl = "https://mws.amazonservices.com"; switch (country) { case "美国": config.ServiceURL = "https://mws.amazonservices.com"; break; case "加拿大": config.ServiceURL = "https://mws.amazonservices.ca"; break; case "欧洲": config.ServiceURL = "https://mws-eu.amazonservices.com"; break; case "日本": config.ServiceURL = "https://mws.amazonservices.jp"; break; case "印度": config.ServiceURL = "https://mws.amazonservices.in"; break; case "中国": config.ServiceURL = "https://mws.amazonservices.com.cn"; break; } // var merchantId = merchantId; // var marketplaceId =marketplaceId; var accessKey = accessKeyId; var secretKey = secretAccessKey; // config.ServiceURL = mwsUrl; config.SetUserAgentHeader( "CSharpSampleCode", applicationVersion, "C#", new string[] { }); MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKey, secretKey, config); #endregion // North America (includes Canada, US, and Mexico) https://mws.amazonservices.com //Brazil https://mws.amazonservices.com //Europe (includes Spain, UK, France, Germany, and Italy) https://mws-eu.amazonservices.com //India https://mws.amazonservices.in // https://mws.amazonservices.com.cn //Japan https://mws.amazonservices.jp //Australia https://mws.amazonservices.com.au #region Req var request = new SubmitFeedRequest(); request.Merchant = merchantId; request.MarketplaceIdList = new IdList(); if (country == "欧洲") request.MarketplaceIdList.Id = new List(new string[] { "A1PA6795UKMFR9", "A1RKKUPIHCS9HS", "A13V1IB3VIYZZH", "APJ6JRA9NG5V4", "A1F83G8C2ARO7P" }); else request.MarketplaceIdList.Id = new List(new string[] { marketplaceId }); var xml = new StringBuilder(""); xml.Append(""); xml.Append("
"); xml.Append("1.01"); xml.AppendFormat("{0}", merchantId); xml.Append("
"); xml.Append("OrderFulfillment"); int i = 1; foreach (var omd in list) { //if (omd.OrderDate != "" && DateTime.Now.AddHours(-8) <= Convert.ToDateTime(omd.OrderDate)) //{ // now = ToUTCDatetime(Convert.ToDateTime(omd.OrderDate).AddHours(3)); //} foreach (var md in omd.BackGoodsList) { xml.Append(""); xml.Append("" + i + ""); xml.Append(""); xml.AppendFormat("{0}", omd.PlatOrderCode); xml.AppendFormat("{0}T{1}+08:00", now.ToString("yyyy-MM-dd"), now.ToString("hh:mm:ss")); xml.Append(""); //xml.AppendFormat("{0}", omd.serviceName); //xml.AppendFormat("Standard"); xml.AppendFormat("FedEx"); xml.AppendFormat("Standard"); xml.AppendFormat("{0}", omd.TrackCode); xml.Append(""); xml.Append(""); xml.AppendFormat("{0}", md.GoodsDesc); xml.Append(""+md.GoodsNum+""); xml.Append(""); xml.Append(""); xml.Append(""); i++; } } xml.Append("
"); // string path = @"E:\2017文档\tfs2017\学校2\erp基础版2\erp\TradeManage\TestApi\bin\Debug\am.txt"; request.FeedContent = ToStream(xml.ToString()); request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent); request.FeedContent.Position = 0; request.FeedType = "_POST_ORDER_FULFILLMENT_DATA_"; #endregion #region resp error = ""; var response = service.SubmitFeed(request); // ErrorFollow.TraceWrite("response", "", response.ToString()); if (response.IsSetSubmitFeedResult()) { // ErrorFollow.TraceWrite("ok", "", response.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId); SubmitFeedResult submitFeedResult = response.SubmitFeedResult; if (submitFeedResult.IsSetFeedSubmissionInfo()) { FeedSubmissionInfo feedSubmissionInfo = submitFeedResult.FeedSubmissionInfo; if (feedSubmissionInfo.IsSetFeedSubmissionId()) { var feedId = feedSubmissionInfo.FeedSubmissionId; // System.Threading.Thread.Sleep(2000); // GetFeedSubmissionResult(feedId); return true; // var s = UpdateUploadTrackFeedSubmissionId(item.ID, feedId); } } } #endregion return false; } catch (Exception ex) { error = ex.Message; ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); return false; } } public string GetFeedSubmissionResult(string feedid) { MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); #region 设置市场所在地借口地址 switch (country) { case "美国": config.ServiceURL = "https://mws.amazonservices.com"; break; case "加拿大": config.ServiceURL = "https://mws.amazonservices.ca"; break; case "欧洲": config.ServiceURL = "https://mws-eu.amazonservices.com"; break; case "日本": config.ServiceURL = "https://mws.amazonservices.jp"; break; case "印度": config.ServiceURL = "https://mws.amazonservices.in"; break; case "中国": config.ServiceURL = "https://mws.amazonservices.com.cn"; 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); MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, "CSharpSampleCode", applicationVersion, config); GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest(); request.Merchant = merchantId; var sm = new MemoryStream(); request.FeedSubmissionId = feedid; request.FeedSubmissionResult = sm; var response = service.GetFeedSubmissionResult(request); StreamReader reader = new StreamReader(sm); string text = reader.ReadToEnd(); ErrorFollow.TraceWrite("GetFeedSubmissionResult", text, ""); return text; } public string GetReportList() { MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); #region 设置市场所在地借口地址 switch (country) { case "美国": config.ServiceURL = "https://mws.amazonservices.com"; break; case "加拿大": config.ServiceURL = "https://mws.amazonservices.ca"; break; case "欧洲": config.ServiceURL = "https://mws-eu.amazonservices.com"; break; case "日本": config.ServiceURL = "https://mws.amazonservices.jp"; break; case "印度": config.ServiceURL = "https://mws.amazonservices.in"; break; case "中国": config.ServiceURL = "https://mws.amazonservices.com.cn"; 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); MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, "CSharpSampleCode", applicationVersion, config); GetReportListRequest request = new GetReportListRequest(); request.Merchant = merchantId; var sm = new MemoryStream(); request.AvailableFromDate = DateTime.Now.AddDays(-5); request.AvailableToDate = DateTime.Now; var response = service.GetReportList(request); StreamReader reader = new StreamReader(sm); string text = reader.ReadToEnd(); return text; } } public class Amzon_TrackBack { public List BackGoodsList { get; set; } public int? IsJoin { get; set; } public string Message { get; set; } public string OrderCode { get; set; } public string OrderDate { get; set; } public int? OrderId { get; set; } public int? PlatId { get; set; } public string PlatOrderCode { get; set; } public int? Post { get; set; } public string PostInfo { get; set; } public string PostInfo2 { get; set; } public string serviceName { get; set; } public int? ShopId { get; set; } public string TrackCode { get; set; } } public class Amzon_OrderGoods { public decimal? BGPrice { get; set; } public int? ChaseId { get; set; } public int? CKGoodsNum { get; set; } public int? DetailId { get; set; } public string GoodsCode { get; set; } public string GoodsDesc { get; set; } public string GoodsEnglisgName { get; set; } public int? GoodsId { get; set; } public int? GoodsInNum { get; set; } public int? GoodsLeftNum { get; set; } public string GoodsName { get; set; } public int? GoodsNum { get; set; } public string GoodsOldCode { get; set; } public decimal? GoodsPrice { get; set; } public string GoodsSKU { get; set; } public decimal? Height { get; set; } public decimal? Height2 { get; set; } public int? Id { get; set; } public string JoinOrderCode { get; set; } public int? LockNum { get; set; } public decimal? Long { get; set; } public decimal? Long2 { get; set; } public string MoneyCode { get; set; } public string OldTypeCode { get; set; } public string OldTypeDesc { get; set; } public string OrderCode { get; set; } public int? OrderId { get; set; } public int? OutNum { get; set; } public int? PlatId { get; set; } public string PostionCode { get; set; } public string productImgUrl { get; set; } public string productImgUrl2 { get; set; } public decimal? Solid { get; set; } public int? SpareNum { get; set; } public string TypeCode { get; set; } public string TypeDesc { get; set; } public decimal? Weight { get; set; } public decimal? Width { get; set; } public decimal? Width2 { get; set; } } }