You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1174 lines
56 KiB
C#

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<OrderModel> GetOrders(DateTime? StartDate, DateTime? StopDate, string AccountName,List<Alibaba_OrderCode> olist, out string ErrorMessage)
{
ErrorMessage = "";
List<OrderModel> ListModel = new List<OrderModel>();
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<string> FulfillmentChannel = new List<string>();
FulfillmentChannel.Add("MFN");
request.FulfillmentChannel = FulfillmentChannel;
List<string> orderStatus = new List<string>();
orderStatus.Add("Unshipped");
orderStatus.Add("PartiallyShipped");
request.OrderStatus = orderStatus;
List<string> marketplace = new List<string>();
// 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<string> markplacelist = new List<string>();
// markplacelist.Add("ATVPDKIKX0DER");
// OrdersRequest.MarketplaceId = markplacelist;
// List<string> status = new List<string>();
// 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<OrderDetailModel>();
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<Order> nextorders = new List<Order>();
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<OrderDetailModel>();
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<OrderModel> GetFBAOrders(DateTime? StartDate, DateTime? StopDate, string AccountName, out string ErrorMessage)
{
ErrorMessage = "";
List<OrderModel> ListModel = new List<OrderModel>();
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<string> FulfillmentChannel = new List<string>();
FulfillmentChannel.Add("AFN");
request.FulfillmentChannel = FulfillmentChannel;
List<string> orderStatus = new List<string>();
//orderStatus.Add("Unshipped");
//orderStatus.Add("PartiallyShipped");
//orderStatus.Add("Pending");
orderStatus.Add("Shipped");
request.OrderStatus = orderStatus;
List<string> marketplace = new List<string>();
// 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<string> markplacelist = new List<string>();
// markplacelist.Add("ATVPDKIKX0DER");
// OrdersRequest.MarketplaceId = markplacelist;
// List<string> status = new List<string>();
// 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<OrderDetailModel>();
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<Order> nextorders = new List<Order>();
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<OrderDetailModel>();
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<string> alist = new List<string>();
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<Amzon_TrackBack> list, out string error)
{
long resultId = 0;
try
{
var now = ToUTCDatetime(DateTime.Now);
//var dic = GetAMServiceUrl();
//List<ERP_AM_Upload_Feed> feeds = new List<ERP_AM_Upload_Feed>();
//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<string>(new string[] { "A1PA6795UKMFR9", "A1RKKUPIHCS9HS", "A13V1IB3VIYZZH", "APJ6JRA9NG5V4", "A1F83G8C2ARO7P" });
else
request.MarketplaceIdList.Id = new List<string>(new string[] { marketplaceId });
var xml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
xml.Append("<AmazonEnvelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"amzn-envelope.xsd\">");
xml.Append("<Header>");
xml.Append("<DocumentVersion>1.01</DocumentVersion>");
xml.AppendFormat("<MerchantIdentifier>{0}</MerchantIdentifier>", merchantId);
xml.Append("</Header>");
xml.Append("<MessageType>OrderFulfillment</MessageType>");
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("<Message>");
xml.Append("<MessageID>" + i + "</MessageID>");
xml.Append("<OrderFulfillment>");
xml.AppendFormat("<AmazonOrderID>{0}</AmazonOrderID>", omd.PlatOrderCode);
xml.AppendFormat("<FulfillmentDate>{0}T{1}+08:00</FulfillmentDate>", now.ToString("yyyy-MM-dd"), now.ToString("hh:mm:ss"));
xml.Append("<FulfillmentData>");
//xml.AppendFormat("<CarrierName>{0}</CarrierName>", omd.serviceName);
//xml.AppendFormat("<ShippingMethod>Standard</ShippingMethod>");
xml.AppendFormat("<CarrierCode>FedEx</CarrierCode>");
xml.AppendFormat("<ShippingMethod>Standard</ShippingMethod>");
xml.AppendFormat("<ShipperTrackingNumber>{0}</ShipperTrackingNumber>", omd.TrackCode);
xml.Append("</FulfillmentData>");
xml.Append("<Item>");
xml.AppendFormat("<AmazonOrderItemCode>{0}</AmazonOrderItemCode>", md.GoodsDesc);
xml.Append("<Quantity>"+md.GoodsNum+"</Quantity>");
xml.Append("</Item>");
xml.Append("</OrderFulfillment>");
xml.Append("</Message>");
i++;
}
}
xml.Append("</AmazonEnvelope>");
// 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<Amzon_OrderGoods> 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; }
}
}