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.

2578 lines
97 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NetLibrary.OnlineTrade;
using System.Text;
using NetLibrary;
using System.Net;
using System.Web.Script.Serialization;
using System.Xml.Linq;
using NetLibrary.Log;
using System.Xml;
using ApiNew;
using System.IO;
using TradeManage.SysManage;
namespace TradeManageNew
{
public class Amazon_SPApi
{
public string SellerId { get; set; }
public string country { get; set; }
public string MWSAuthToken { get; set; }
public string SumoolToKen { get; set; }
public string MarketplaceId { get; set; }
#region 读取订单列表
public List<OrderModel> GetOrders(DateTime? StartDate,string FulfillmentChannel, List<Alibaba_OrderCode> olist, out string ErrorMessage)
{
if (olist == null)
olist = new List<Alibaba_OrderCode>();
List<OrderModel> ListModel = new List<OrderModel>();
try
{
ErrorMessage = "";
if (StartDate == null)
StartDate = DateTime.Today.AddDays(-3);
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"CreatedAfter\":\"" + StartDate.Value.ToString("yyyy-MM-dd") + "T00: 00:00.000Z\",\"OrderStatuses\":\"Unshipped,PartiallyShipped\",\"FulfillmentChannels\":\"" + FulfillmentChannel + "\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
if (FulfillmentChannel == "AFN")
body = "{\"CreatedAfter\":\"" + StartDate.Value.ToString("yyyy-MM-dd") + "T00: 00:00.000Z\",\"OrderStatuses\":\"Shipped\",\"FulfillmentChannels\":\"" + FulfillmentChannel + "\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
//if (NextToken != "")
//{
// body = "{\"NextToken\":\"" + NextToken + "\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
//}
byte[] bytes = Encoding.Default.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/orders/v0/orders";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true|| re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
AmazonResultObject model = JsonConvert.Deserialize<AmazonResultObject>(re.ResultObject);
if (model != null && model.payload !=null&& model.payload.Orders != null)
{
foreach (var item in model.payload.Orders)
{
if (item.OrderStatus != null && item.OrderStatus == "Canceled")
continue;
if (item.OrderTotal == null || item.OrderTotal.Amount == null || item.OrderTotal.Amount == "")
continue;
OrderModel ordermd = new OrderModel();
ordermd.OrderCode = item.AmazonOrderId;//订单编号
if (ordermd.OrderCode == "112-6514054-6349010")
{
string a = "";
}
ordermd.PlatOrderCode = item.AmazonOrderId;//OrderLineItemID
if (ordermd.PlatOrderCode == null || ordermd.PlatOrderCode == "")
continue;
if (olist != null)
{
var amd = olist.Find(n => n.OrderCode == ordermd.PlatOrderCode);
if (amd != null)
continue;
}
ordermd.TotalPrice = Convert.ToDecimal(item.OrderTotal.Amount);
ordermd.MoneyCode = "USD";//币种
if (item.PurchaseDate != null)
ordermd.OrderDate = Convert.ToDateTime(item.PurchaseDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (item.FulfillmentChannel != null)
ordermd.BuyerID = item.FulfillmentChannel;
else
ordermd.BuyerID = "MFN";
if (item.BuyerInfo != null && item.BuyerInfo.BuyerEmail != null)
ordermd.BuyerMail = item.BuyerInfo.BuyerEmail;
System.Threading.Thread.Sleep(500);
var addrmd = GetOrdersAdress(ordermd.OrderCode);
if (addrmd == null)
{
System.Threading.Thread.Sleep(1000);
addrmd = GetOrdersAdress(ordermd.OrderCode);
}
if (addrmd != null)
{
ordermd.BuyerName = addrmd.ShippingAddress.Name;
ordermd.BuyerCountry = addrmd.ShippingAddress.CountryCode;
if(string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine1)==false)
ordermd.BuyerAddr = addrmd.ShippingAddress.AddressLine1;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine2) == false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.AddressLine2;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine3) == false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.AddressLine3;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.County)== false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.County;
if (!string.IsNullOrEmpty(addrmd.ShippingAddress.City))
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.City;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.Phone)== false)
ordermd.BuyerPhone=addrmd.ShippingAddress.Phone;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.StateOrRegion) == false)
ordermd.BuyerProvince = addrmd.ShippingAddress.StateOrRegion;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.City)== false)
ordermd.BuyerCity = addrmd.ShippingAddress.City;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.District) == false)
ordermd.BuyerArea = addrmd.ShippingAddress.District;
ordermd.BuyerMobile = "";
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressType)== false)
ordermd.BuyerFax = addrmd.ShippingAddress.AddressType;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.PostalCode)== false)
ordermd.BuyerZip = addrmd.ShippingAddress.PostalCode;
}
if (ordermd.BuyerAddr == null || ordermd.BuyerAddr=="")
{
continue;
}
ordermd.OrderRemark = "";
ordermd.LeaveWord = "";
if (item.LastUpdateDate != null)
ordermd.PayDate = Convert.ToDateTime(item.LastUpdateDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (item.LatestDeliveryDate != null)
ordermd.OutOrderDate = Convert.ToDateTime(item.LatestDeliveryDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (ordermd.OrderDate != null && ordermd.OrderDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.OrderDate = DateTime.Now;
}
if (ordermd.PayDate != null && ordermd.PayDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.PayDate = DateTime.Now;
}
if (ordermd.OutOrderDate != null && ordermd.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.OutOrderDate = DateTime.Now.AddDays(7);
}
ordermd.PostInfo = item.ShipServiceLevel;
ordermd.ListModel = new List<OrderDetailModel>();
var glist = GetOrdersItem(ordermd.OrderCode);
ordermd.escrowFee = 0;
if (glist != null)
{
foreach (var item2 in glist.OrderItems)
{
OrderDetailModel gmodel = new OrderDetailModel();
gmodel.productImgUrl = item2.ASIN;//订单编号
if (item2.ItemTax != null && item2.ItemTax.Amount != null)
ordermd.escrowFee += Convert.ToDecimal(item2.ItemTax.Amount);
if (item2.ShippingTax != null && item2.ShippingTax.Amount != null)
ordermd.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount);
gmodel.GoodsNum = Convert.ToInt32(item2.QuantityOrdered);
if (item2.ItemPrice != null && item2.ItemPrice.Amount != null)
{
gmodel.GoodsPrice = Convert.ToDecimal(item2.ItemPrice.Amount);
gmodel.MoneyCode = item2.ItemPrice.CurrencyCode;
}
gmodel.GoodsName = item2.Title;
gmodel.GoodsSKU = item2.SellerSKU;
gmodel.PostInfo = ordermd.PostInfo;
gmodel.OrderItemId = item2.OrderItemId;
ordermd.ListModel.Add(gmodel);
}
// model.TotalPrice = model.TotalPrice - model.escrowFee;
}
ListModel.Add(ordermd);
}
}
bool IsNext = false;
string nexttoken = "";
if (model!=null&& model.payload.NextToken!=null&& model.payload.NextToken != "")
{
IsNext = true;
nexttoken = model.payload.NextToken;
}
while (IsNext)
{
System.Threading.Thread.Sleep(3000);
string nexttoken2 = "";
var list2 = GetOrdersNext(nexttoken, olist, out nexttoken2);
if (list2 != null)
{
foreach (var md in list2)
{
ListModel.Add(md);
}
}
if (nexttoken2==null||nexttoken2 == "")
{
IsNext = false;
}
else
{
nexttoken = nexttoken2;
}
}
return ListModel;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return ListModel;
}
}
public List<OrderModel> GetOrdersNext(string nexttoken, List<Alibaba_OrderCode> olist, out string nexttoken2)
{
if (olist == null)
olist = new List<Alibaba_OrderCode>();
List<OrderModel> ListModel = new List<OrderModel>();
try
{
nexttoken2 = "";
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"NextToken\":\"" + nexttoken + "\",\"MarketplaceIds\":\"" + MarketplaceId + "\"}";
//if (NextToken != "")
//{
// body = "{\"NextToken\":\"" + NextToken + "\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
//}
byte[] bytes = Encoding.Default.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/orders/v0/orders";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string ErrorMessage = "";
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
AmazonResultObject model = JsonConvert.Deserialize<AmazonResultObject>(re.ResultObject);
if (model != null && model.payload != null && model.payload.Orders != null)
{
foreach (var item in model.payload.Orders)
{
if (item.OrderStatus != null && item.OrderStatus == "Canceled")
continue;
if (item.OrderTotal == null || item.OrderTotal.Amount == null || item.OrderTotal.Amount == "")
continue;
OrderModel ordermd = new OrderModel();
ordermd.OrderCode = item.AmazonOrderId;//订单编号
if (ordermd.OrderCode == "112-8452824-5762658"|| ordermd.OrderCode == "113-0294203-4944225")
{
string a = "";
}
ordermd.PlatOrderCode = item.AmazonOrderId;//OrderLineItemID
if (ordermd.PlatOrderCode == null || ordermd.PlatOrderCode == "")
continue;
if (olist != null)
{
var amd = olist.Find(n => n.OrderCode == ordermd.PlatOrderCode);
if (amd != null)
continue;
}
ordermd.TotalPrice = Convert.ToDecimal(item.OrderTotal.Amount);
ordermd.MoneyCode = "USD";//币种
if (item.PurchaseDate != null)
ordermd.OrderDate = Convert.ToDateTime(item.PurchaseDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (item.FulfillmentChannel != null)
ordermd.BuyerID = item.FulfillmentChannel;
else
ordermd.BuyerID = "MFN";
if (item.BuyerInfo != null && item.BuyerInfo.BuyerEmail != null)
ordermd.BuyerMail = item.BuyerInfo.BuyerEmail;
System.Threading.Thread.Sleep(500);
var addrmd = GetOrdersAdress(ordermd.OrderCode);
if (addrmd == null)
{
System.Threading.Thread.Sleep(1000);
addrmd = GetOrdersAdress(ordermd.OrderCode);
}
if (addrmd != null)
{
ordermd.BuyerName = addrmd.ShippingAddress.Name;
ordermd.BuyerCountry = addrmd.ShippingAddress.CountryCode;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine1) == false)
ordermd.BuyerAddr = addrmd.ShippingAddress.AddressLine1;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine2) == false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.AddressLine2;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressLine3) == false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.AddressLine3;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.County) == false)
ordermd.BuyerAddr += " " + addrmd.ShippingAddress.County;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.Phone) == false)
ordermd.BuyerPhone = addrmd.ShippingAddress.Phone;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.StateOrRegion) == false)
ordermd.BuyerProvince = addrmd.ShippingAddress.StateOrRegion;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.City) == false)
ordermd.BuyerCity = addrmd.ShippingAddress.City;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.District) == false)
ordermd.BuyerArea = addrmd.ShippingAddress.District;
ordermd.BuyerMobile = "";
if (string.IsNullOrEmpty(addrmd.ShippingAddress.AddressType) == false)
ordermd.BuyerFax = addrmd.ShippingAddress.AddressType;
if (string.IsNullOrEmpty(addrmd.ShippingAddress.PostalCode) == false)
ordermd.BuyerZip = addrmd.ShippingAddress.PostalCode;
}
if (ordermd.BuyerAddr == null || ordermd.BuyerAddr == "")
{
continue;
}
ordermd.OrderRemark = "";
ordermd.LeaveWord = "";
if (item.LastUpdateDate != null)
ordermd.PayDate = Convert.ToDateTime(item.LastUpdateDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (item.LatestDeliveryDate != null)
ordermd.OutOrderDate = Convert.ToDateTime(item.LatestDeliveryDate.Substring(0, 18).Replace("T", " ")).AddHours(8);
if (ordermd.OrderDate != null && ordermd.OrderDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.OrderDate = DateTime.Now;
}
if (ordermd.PayDate != null && ordermd.PayDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.PayDate = DateTime.Now;
}
if (ordermd.OutOrderDate != null && ordermd.OutOrderDate.Value <= Convert.ToDateTime("1753-01-01"))
{
ordermd.OutOrderDate = DateTime.Now.AddDays(7);
}
ordermd.PostInfo = item.ShipServiceLevel;
ordermd.ListModel = new List<OrderDetailModel>();
var glist = GetOrdersItem(ordermd.OrderCode);
ordermd.escrowFee = 0;
if (glist != null)
{
foreach (var item2 in glist.OrderItems)
{
OrderDetailModel gmodel = new OrderDetailModel();
gmodel.productImgUrl = item2.ASIN;//订单编号
if (item2.ItemTax != null && item2.ItemTax.Amount != null)
ordermd.escrowFee += Convert.ToDecimal(item2.ItemTax.Amount);
if (item2.ShippingTax != null && item2.ShippingTax.Amount != null)
ordermd.escrowFee += Convert.ToDecimal(item2.ShippingTax.Amount);
gmodel.GoodsNum = Convert.ToInt32(item2.QuantityOrdered);
if (item2.ItemPrice != null && item2.ItemPrice.Amount != null)
{
gmodel.GoodsPrice = Convert.ToDecimal(item2.ItemPrice.Amount);
gmodel.MoneyCode = item2.ItemPrice.CurrencyCode;
}
gmodel.GoodsName = item2.Title;
gmodel.GoodsSKU = item2.SellerSKU;
gmodel.PostInfo = ordermd.PostInfo;
gmodel.OrderItemId = item2.OrderItemId;
ordermd.ListModel.Add(gmodel);
}
// model.TotalPrice = model.TotalPrice - model.escrowFee;
}
ListModel.Add(ordermd);
}
}
if (model != null && model.payload.NextToken != "")
{
nexttoken2 = model.payload.NextToken;
}
return ListModel;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
nexttoken2 = "";
return null;
}
}
#endregion
#region 读取订单详情
public OrderModel GetOrdersInfo(string orderid, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
#endregion
try
{
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
// string body = "{\"CreatedAfter\":\"2022-02-25T07: 27:29.289Z\",\"OrderStatuses\":\"Unshipped,PartiallyShipped\",\"FulfillmentChannels\":\"MFN\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
// byte[] bytes = Encoding.Default.GetBytes(body);
// string bb = Convert.ToBase64String(bytes);
// str += "&BodyContent=" + bb;
str += "&Command=/orders/v0/orders/" + orderid;
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
return null;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return null;
}
}
#endregion
#region 读取订单地址
public AdressPayload GetOrdersAdress(string orderid)
{
string ServiceURL = "";
string ErrorMessage = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
// string body = "{\"CreatedAfter\":\"2022-02-25T07: 27:29.289Z\",\"OrderStatuses\":\"Unshipped,PartiallyShipped\",\"FulfillmentChannels\":\"MFN\",\"MarketplaceIds\":\"" + MarketplaceId + "\",\"MaxResultsPerPage\":50}";
// byte[] bytes = Encoding.Default.GetBytes(body);
// string bb = Convert.ToBase64String(bytes);
// str += "&BodyContent=" + bb;
str += "&Command=/orders/v0/orders/"+orderid+"/address";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetOrders", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonAdressRootResult model = JsonConvert.Deserialize<AmazonAdressRootResult>(XmlContent);
if (model.HasError == true)
{
ErrorMessage = model.Message;
ErrorFollow.TraceWrite("GetOrdersAdress", "", ErrorMessage);
return null;
}
AdressRoot model2 = JsonConvert.Deserialize<AdressRoot>(model.ResultObject);
if (model2.payload!=null&& model2.payload!=null)
return model2.payload;
return null;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrdersAdress", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return null;
}
}
#endregion
#region 读取订单sku
public OrderItemPayload GetOrdersItem(string orderid)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
str += "&Command=/orders/v0/orders/"+ orderid + "/orderItems";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string ErrorMessage = "";
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetOrdersItem", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonOrderItemResult model = JsonConvert.Deserialize<AmazonOrderItemResult>(XmlContent);
if (model.HasError == true)
{
ErrorMessage = model.Message;
ErrorFollow.TraceWrite("GetOrdersItem", "", ErrorMessage);
return null;
}
OrderItemRoot model2 = JsonConvert.Deserialize<OrderItemRoot>(model.ResultObject);
if (model2 != null && model2.payload != null)
{
return model2.payload;
}
return null;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrdersItem", ex.StackTrace, ex.Message);
// ErrorMessage = ex.Message;
return null;
}
}
#endregion
#region 读取sku排名
public List<AMGoodsPM> GetProuctPM(List<AMGoodsPM> list, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string Asins = "";
foreach (var amd in list)
{
Asins += amd.ASIN + ",";
}
Asins = Asins.TrimEnd(',');
string body = "{\"Asins\":\""+ Asins + "\",\"MarketplaceId\":\"" + MarketplaceId + "\",\"ItemType\":\"Asin\"}";
byte[] bytes = Encoding.Default.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/products/pricing/v0/competitivePrice";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetProuctPM", "", ErrorMessage);
return null;
}
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetProuctPM", "", ErrorMessage);
return null;
}
GoodsPMRoot model = JsonConvert.Deserialize<GoodsPMRoot>(re.ResultObject);
if (model != null&& model.payload!=null)
{
foreach (var pmd in model.payload)
{
var gmd = list.Find(n => n.ASIN == pmd.ASIN);
if (gmd!=null&&pmd.Product != null && pmd.Product.SalesRankings!=null)
{
int j= 0;
foreach(var ppmd in pmd.Product.SalesRankings)
{
j++;
if (ppmd.Rank.ToString() != "")
{
int rk = Convert.ToInt32(ppmd.Rank);
if (j == 1)
gmd.PM1 = rk;
else if (gmd.PM2 == 0 || rk < gmd.PM2)
gmd.PM2 = rk;
string ProductCategoryId = ppmd.ProductCategoryId;
}
}
}
}
}
return list;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return list;
}
}
#endregion
#region 新接口获取亚马逊商品大小类排名,可与亚马逊网站上显示的排名一致
public List<AMGoodsPM> GetProductPM_New(List<AMGoodsPM> list,out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string Asins = "";
foreach (var amd in list)
{
Asins += amd.ASIN + ",";
}
Asins = Asins.TrimEnd(',');
string body = "{\"marketplaceIds\":\"" + MarketplaceId + "\",\"identifiers\":\"" + Asins + "\",\"identifiersType\":\"ASIN\",\"includedData\":\"salesRanks\"}";
byte[] bytes = Encoding.Default.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/catalog/2022-04-01/items";
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetProuctPM", "", ErrorMessage);
return null;
}
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetProuctPM", "", ErrorMessage);
return null;
}
SyncAmazonCatalogModel model = JsonConvert.Deserialize<SyncAmazonCatalogModel>(re.ResultObject);
if (model != null && model.items != null)
{
foreach(var _list in list)
{
var item = model.items.Where(r => r.asin == _list.ASIN).FirstOrDefault();
if(item!=null && item.salesRanks != null)
{
var samllRanks = item.salesRanks[0].classificationRanks;
_list.PM2 = samllRanks != null && samllRanks.Count > 0 ? samllRanks[0].rank.Value : 0;
var bigRanks = item.salesRanks[0].displayGroupRanks;
_list.PM1 = bigRanks != null && bigRanks.Count > 0 ? bigRanks[0].rank.Value : 0;
}
}
}
return list;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return list;
}
}
#endregion
#region 填单
public bool createFeedDocument(List<Amzon_TrackBack> list, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"contentType\":\"text/xml;charset=UTF-8\"}";
byte[] bytes = Encoding.UTF8.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/feeds/2021-06-30/documents";
str += "&HttpMethod=Post";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("createFeedDocument", "", ErrorMessage);
return false;
}
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("createFeedDocument", "", ErrorMessage);
return false;
}
feedDocumentRoot model = JsonConvert.Deserialize<feedDocumentRoot>(re.ResultObject);
createPost(list, model.url, out ErrorMessage);
if (ErrorMessage == "")
{
createFeedPost(model.feedDocumentId,out ErrorMessage);
}
if (ErrorMessage != "")
{
return false;
}
return true;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("createFeedDocument", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return false;
}
}
public bool createPost(List<Amzon_TrackBack> list,string url, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
string FileContent = "";
var now = ToUTCDatetime(DateTime.Now);
//<?xml version="1.0" encoding="UTF-8"?><AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"><Header><DocumentVersion>1.01</DocumentVersion><MerchantIdentifier>A3CHOODG4BN7N0</MerchantIdentifier></Header><MessageType>OrderFulfillment</MessageType><Message><MessageID>1</MessageID><OrderFulfillment><AmazonOrderID>111-6291990-2499443</AmazonOrderID><FulfillmentDate>2020-08-06T04:07:54+08:00</FulfillmentDate><FulfillmentData><CarrierCode>FedEx</CarrierCode><ShippingMethod>Standard</ShippingMethod><ShipperTrackingNumber>61290989349120195308</ShipperTrackingNumber></FulfillmentData><Item><AmazonOrderItemCode>46111329146458</AmazonOrderItemCode><Quantity>1</Quantity></Item></OrderFulfillment></Message></AmazonEnvelope>
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>", SellerId);
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>");
if (omd.serviceName != null && omd.serviceName.Contains("UPS"))
xml.AppendFormat("<CarrierCode>UPS</CarrierCode>");
else
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>");
FileContent = EncodeBase64("utf-8", xml.ToString());
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
var data = Encoding.UTF8.GetBytes(xml.ToString());
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
List<string> ListHeader = new List<string>();
ListHeader.Add("Content-Type:text/xml;charset=UTF-8");
// head.Add("Content-Type:text/xml;charset=UTF-8");
string XmlContent = HttpRequest222(url, "Put", "text/xml;charset=UTF-8", null, HttpVersion.Version11, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetProuct", "", ErrorMessage);
return false;
}
return true;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return false;
}
}
public bool createFeedPost(string inputFeedDocumentId, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"feedType\":\"POST_ORDER_FULFILLMENT_DATA\",\"marketplaceIds\":[\"" + MarketplaceId + "\"],\"inputFeedDocumentId\":\"" + inputFeedDocumentId + "\"}";
byte[] bytes = Encoding.UTF8.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/feeds/2021-06-30/feeds";
str += "&HttpMethod=Post";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("createFeed", "", ErrorMessage);
return false;
}
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("createFeed", "", ErrorMessage);
return false;
}
return true;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("createFeedDocument", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return false;
}
}
#endregion
#region createFeedDocument
public bool createFeed(string fid, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"feedType\":\"POST_ORDER_FULFILLMENT_DATA\",\"marketplaceIds\":[\"ATVPDKIKX0DER\"],\"inputFeedDocumentId\":\"" + fid + "\"}";
byte[] bytes = Encoding.UTF8.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/feeds/2021-06-30/feeds";
str += "&HttpMethod=Post";
// string url = "https://tortuga-prod-na.s3-external-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.3.69ffbc5e-f431-448b-a28e-1d516422434a.T2YYS8DSUOROZJ?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220403T114414Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=AKIA5U6MO6RAILUODKJI%2F20220403%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=7f78cb20629b8d2d557e770ca5b924adf30c70c50cee56679d3a8dd92532351f";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("createFeedDocument", "", ErrorMessage);
return false;
}
return true;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return false;
}
}
public bool GetFeed(string fid, out string ErrorMessage)
{
string ServiceURL = "";
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://mws-eu.amazonservices.com";
break;
case "日本":
ServiceURL = "https://mws.amazonservices.jp";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
try
{
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"feedType\":\"POST_ORDER_FULFILLMENT_DATA\",\"marketplaceIds\":[\"ATVPDKIKX0DER\"],\"inputFeedDocumentId\":\"" + fid + "\"}";
byte[] bytes = Encoding.UTF8.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
// str += "&BodyContent=" + bb;
str += "&Command=/feeds/2021-06-30/feeds/"+fid;
str += "&HttpMethod=Get";
// string url = "https://tortuga-prod-na.s3-external-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.3.69ffbc5e-f431-448b-a28e-1d516422434a.T2YYS8DSUOROZJ?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220403T114414Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=AKIA5U6MO6RAILUODKJI%2F20220403%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=7f78cb20629b8d2d557e770ca5b924adf30c70c50cee56679d3a8dd92532351f";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("createFeedDocument", "", ErrorMessage);
return false;
}
return true;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite("GetOrders", ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
return false;
}
}
#endregion
#region Http请求2
public static string HttpRequest222(string url, string Method, string ContentType, List<string> ListHeader, Version ver, byte[] bytes, out string ErrorMessage)
{
try
{
ErrorMessage = "";
if (string.IsNullOrEmpty(ContentType) == true) ContentType = "application/x-www-form-urlencoded";
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = Method; //GET,POST
myRequest.ContentType = ContentType;
myRequest.KeepAlive = true;
//myRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; qihu theworld)";
//myRequest.Headers.Add("Content-Type:text/xml;charset=UTF-8");
// myRequest.Headers["Pragma"] = "no-cache"; //禁用缓存
// myRequest.Headers["Cache-Control"] = "no-cache"; //禁用缓存
myRequest.Timeout = 3 * 60 * 1000;
if (ver != null)
myRequest.ProtocolVersion = ver;
if (ListHeader != null)
{
foreach (var item in ListHeader)
{
myRequest.Headers.Add(item);
}
}
if (bytes != null && bytes.Length > 0)
{
//myRequest.GetRequestStream().Write(bytes, 0, bytes.Length);
Stream stream = myRequest.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
}
else
myRequest.ContentLength = 0;
//获得接口返回值
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream myResponseStream = myResponse.GetResponseStream();
StreamReader reader = new StreamReader(myResponseStream, Encoding.UTF8);
string content = reader.ReadToEnd();
reader.Close();
myResponseStream.Close();
myRequest.Abort();
myResponse.Close();
return content;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
ErrorMessage = ex.Message;
}
return "";
}
#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 static string EncodeBase64(string code_type, string code)
{
string encode = "";
byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
try
{
encode = Convert.ToBase64String(bytes);
}
catch
{
encode = code;
}
return encode;
}
#region 退货信息
public string GetGoodsReturnRequest(DateTime sdt, DateTime edt)
{
try
{
string ErrorMessage = "";
string ServiceURL = "";
List<AMRepotResult> rlist = new List<AMRepotResult>();
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
string body = "{\"reportType\":\"GET_XML_RETURNS_DATA_BY_RETURN_DATE\",\"dataStartTime\":\""+ sdt.ToString("yyyy-MM-dd") + "T00:00:00.000Z\",\"marketplaceIds\":[\"ATVPDKIKX0DER\"]}";
byte[] bytes = Encoding.Default.GetBytes(body);
string bb = Convert.ToBase64String(bytes);
str += "&BodyContent=" + bb;
str += "&Command=/reports/2021-06-30/reports";
str += "&HttpMethod=Post";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetGoodsReturnRequest", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetGoodsReturnRequest", "", ErrorMessage);
return null;
}
RetuenReport model = JsonConvert.Deserialize<RetuenReport>(re.ResultObject);
if (model != null)
{
return model.reportId;
}
return "";
}
catch (Exception ex)
{
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return null;
}
}
public string GetGoodsReturn(string reportId)
{
try
{
string ErrorMessage = "";
string ServiceURL = "";
List<AMRepotResult> rlist = new List<AMRepotResult>();
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId=" + SellerId;
// string body = "{\"reportType\":\"GET_XML_RETURNS_DATA_BY_RETURN_DATE\",\"dataStartTime\":\"" + sdt.ToString("yyyy - MM - dd") + "\",\"dataEndTime\":\"" + edt.ToString("yyyy - MM - dd") + "\",\"marketplaceIds\":[\"ATVPDKIKX0DER\"],}";
// byte[] bytes = Encoding.Default.GetBytes(body);
// string bb = Convert.ToBase64String(bytes);
// str += "&BodyContent=" + bb;
str += "&Command=/reports/2021-06-30/reports/"+ reportId;
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetGoodsReturn", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetGoodsReturnRequest", "", ErrorMessage);
return null;
}
RetuenReportDocumentId model = JsonConvert.Deserialize<RetuenReportDocumentId>(re.ResultObject);
if (model != null)
{
return model.reportDocumentId;
}
return "";
}
catch (Exception ex)
{
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return "";
}
}
public string Getdocuments(string docid)
{
try
{
string ErrorMessage = "";
string ServiceURL = "";
List<AMRepotResult> rlist = new List<AMRepotResult>();
#region 设置市场所在地借口地址
switch (country)
{
case "美国":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "加拿大":
ServiceURL = "https://sellingpartnerapi-na.amazon.com";
break;
case "欧洲":
ServiceURL = "https://sellingpartnerapi-eu.amazon.com";
break;
case "日本":
ServiceURL = "https://sellingpartnerapi-fe.amazon.com";
break;
case "中国":
ServiceURL = "https://mws.amazonservices.com.cn";
break;
}
#endregion
string url = "http://api.sumool.com/AmazonProxy/NewSendRequest";
string str = "EndPoint=" + ServiceURL;
str += "&SumoolToKen=" + SumoolToKen;
str += "&SellerId="+SellerId;
// string body = "{\"reportType\":\"GET_XML_RETURNS_DATA_BY_RETURN_DATE\",\"dataStartTime\":\"" + sdt.ToString("yyyy - MM - dd") + "\",\"dataEndTime\":\"" + edt.ToString("yyyy - MM - dd") + "\",\"marketplaceIds\":[\"ATVPDKIKX0DER\"],}";
// byte[] bytes = Encoding.Default.GetBytes(body);
// string bb = Convert.ToBase64String(bytes);
// str += "&BodyContent=" + bb;
str += "&Command=/reports/2021-06-30/documents/" + docid;
str += "&HttpMethod=Get";
var data = Encoding.UTF8.GetBytes(str);
string XmlContent = CustomIO.HttpRequest2(url, "Post", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, data, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetGoodsReturn", "", ErrorMessage);
return null;
}
JavaScriptSerializer JsonConvert = new JavaScriptSerializer();
AmazonResult re = JsonConvert.Deserialize<AmazonResult>(XmlContent);
if (re.HasError == true || re.ResultObject == null || re.ResultObject == "")
{
ErrorMessage = re.Message;
ErrorFollow.TraceWrite("GetGoodsReturnRequest", "", ErrorMessage);
return null;
}
RetuenReportDocumenturl model = JsonConvert.Deserialize<RetuenReportDocumenturl>(re.ResultObject);
if (model != null)
{
return model.url;
}
return "";
}
catch (Exception ex)
{
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return "";
}
}
public List<AMRepotOrders> GetGoodsReturnOrders(string url)
{
try
{
string ErrorMessage = "";
string ServiceURL = "";
List<AMRepotOrders> rlist = new List<AMRepotOrders>();
// var data = null;
string XmlContent = CustomIO.HttpRequest2(url, "Get", "application/x-www-form-urlencoded; charset=UTF-8", null, HttpVersion.Version10, null, out ErrorMessage);
if (ErrorMessage != "")
{
ErrorFollow.TraceWrite("GetGoodsReturnOrders", "", ErrorMessage);
return null;
}
string xml2 = XmlContent.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"amzn-envelope.xsd\"", "");
XElement xt2 = XElement.Parse(xml2);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml2);
XmlNodeList xnlNLFir = xmlDoc.SelectSingleNode("AmazonEnvelope").SelectSingleNode("Message").SelectNodes("return_details");//得到根节点
if (xnlNLFir != null)
{
foreach (XmlNode xnl in xnlNLFir)//遍历devset
{
AMRepotOrders rmd = new AMRepotOrders();
string orderid = xnl.SelectSingleNode("order_id").InnerText;
string order_date = xnl.SelectSingleNode("order_date").InnerText;
string return_request_status = xnl.SelectSingleNode("return_request_status").InnerText;
string return_request_date = xnl.SelectSingleNode("return_request_date").InnerText;
rmd.order_id = orderid;
rmd.return_request_status = return_request_status;
rmd.order_date = order_date;
rmd.return_request_date = return_request_date;
if (xnl != null)
{
XmlNodeList xnlNL = xnl.SelectNodes("item_details");//得到根节点
List<AMRepotOrdersDetail> AMRepotOrdersDetail = new List<AMRepotOrdersDetail>();
rmd.return_details = AMRepotOrdersDetail;
if (xnlNL != null)
{
foreach (XmlNode xnl2 in xnlNL)//遍历devset
{
if (xnl2.SelectSingleNode("asin") != null)
{
string asin = xnl2.SelectSingleNode("asin").InnerText;
string return_reason_code = xnl2.SelectSingleNode("return_reason_code").InnerText;
string merchant_sku = xnl2.SelectSingleNode("merchant_sku").InnerText;
string in_policy = xnl2.SelectSingleNode("in_policy").InnerText;
int return_quantity = 1;
if (xnl2.SelectSingleNode("return_quantity") != null && xnl2.SelectSingleNode("return_quantity").InnerText != "")
return_quantity = Convert.ToInt32(xnl2.SelectSingleNode("return_quantity").InnerText);
decimal refund_amount = 0;
if (xnl2.SelectSingleNode("refund_amount") != null && xnl2.SelectSingleNode("refund_amount").InnerText != "")
refund_amount = Convert.ToDecimal(xnl2.SelectSingleNode("refund_amount").InnerText);
AMRepotOrdersDetail dmd = new AMRepotOrdersDetail();
dmd.asin = asin;
dmd.return_reason_code = return_reason_code;
dmd.merchant_sku = merchant_sku;
dmd.return_quantity = return_quantity;
dmd.refund_amount = refund_amount;
dmd.in_policy = in_policy;
AMRepotOrdersDetail.Add(dmd);
}
}
}
List<AMRepotLabelsDetail> AMRepotLabelsDetail = new List<AMRepotLabelsDetail>();
rmd.label_details = AMRepotLabelsDetail;
XmlNodeList xnlNL2 = xnl.SelectNodes("label_details");//得到根节点
if (xnlNL2 != null)
{
foreach (XmlNode xnl2 in xnlNL2)//遍历devset
{
if (xnl2.SelectSingleNode("tracking_id") != null)
{
string tracking_id = xnl2.SelectSingleNode("tracking_id").InnerText;
string return_carrier = xnl2.SelectSingleNode("return_carrier").InnerText;
decimal label_cost = 0;
if (xnl2.SelectSingleNode("label_cost") != null && xnl2.SelectSingleNode("label_cost").InnerText != "")
label_cost = Convert.ToDecimal(xnl2.SelectSingleNode("label_cost").InnerText);
AMRepotLabelsDetail lmd = new AMRepotLabelsDetail();
lmd.tracking_id = tracking_id;
lmd.return_carrier = return_carrier;
lmd.label_cost = label_cost;
AMRepotLabelsDetail.Add(lmd);
}
else
{
string tracking_id = "";
string return_carrier = "";
decimal label_cost = 0;
if (xnl2.SelectSingleNode("label_cost") != null && xnl2.SelectSingleNode("label_cost").InnerText != "")
label_cost = Convert.ToDecimal(xnl2.SelectSingleNode("label_cost").InnerText);
AMRepotLabelsDetail lmd = new AMRepotLabelsDetail();
lmd.tracking_id = tracking_id;
lmd.return_carrier = return_carrier;
lmd.label_cost = label_cost;
AMRepotLabelsDetail.Add(lmd);
}
}
}
}
rlist.Add(rmd);
}
}
return rlist;
}
catch (Exception ex)
{
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return null;
}
}
#endregion
}
//如果好用,请收藏地址,帮忙分享。
public class BuyerInfo
{
/// <summary>
///
/// </summary>
public string BuyerEmail { get; set; }
}
public class AutomatedShippingSettings
{
/// <summary>
///
/// </summary>
public Boolean? HasAutomatedShippingSettings { get; set; }
}
public class DefaultShipFromLocationAddress
{
/// <summary>
///
/// </summary>
public string AddressLine2 { get; set; }
/// <summary>
///
/// </summary>
public string StateOrRegion { get; set; }
/// <summary>
///
/// </summary>
public string AddressLine1 { get; set; }
/// <summary>
///
/// </summary>
public string Phone { get; set; }
/// <summary>
///
/// </summary>
public string PostalCode { get; set; }
/// <summary>
///
/// </summary>
public string City { get; set; }
/// <summary>
///
/// </summary>
public string CountryCode { get; set; }
/// <summary>
///
/// </summary>
public string Name { get; set; }
}
public class AMShippingAddress
{
/// <summary>
///
/// </summary>
public string StateOrRegion { get; set; }
/// <summary>
///
/// </summary>
public string PostalCode { get; set; }
/// <summary>
///
/// </summary>
public string City { get; set; }
/// <summary>
///
/// </summary>
public string CountryCode { get; set; }
}
public class OrderTotal
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public string Amount { get; set; }
}
public class OrdersItem
{
/// <summary>
///
/// </summary>
public BuyerInfo BuyerInfo { get; set; }
/// <summary>
///
/// </summary>
public string AmazonOrderId { get; set; }
/// <summary>
///
/// </summary>
public string EarliestDeliveryDate { get; set; }
/// <summary>
///
/// </summary>
public string EarliestShipDate { get; set; }
/// <summary>
///
/// </summary>
public string SalesChannel { get; set; }
/// <summary>
///
/// </summary>
public AutomatedShippingSettings AutomatedShippingSettings { get; set; }
/// <summary>
///
/// </summary>
public string OrderStatus { get; set; }
/// <summary>
///
/// </summary>
public int NumberOfItemsShipped { get; set; }
/// <summary>
///
/// </summary>
public string OrderType { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsPremiumOrder { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsPrime { get; set; }
/// <summary>
///
/// </summary>
public string FulfillmentChannel { get; set; }
/// <summary>
///
/// </summary>
public Int32? NumberOfItemsUnshipped { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsReplacementOrder { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsSoldByAB { get; set; }
/// <summary>
///
/// </summary>
public string LatestShipDate { get; set; }
/// <summary>
///
/// </summary>
public string ShipServiceLevel { get; set; }
/// <summary>
///
/// </summary>
public DefaultShipFromLocationAddress DefaultShipFromLocationAddress { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsISPU { get; set; }
/// <summary>
///
/// </summary>
public string MarketplaceId { get; set; }
/// <summary>
///
/// </summary>
public string LatestDeliveryDate { get; set; }
/// <summary>
///
/// </summary>
public string PurchaseDate { get; set; }
/// <summary>
///
/// </summary>
public AMShippingAddress ShippingAddress { get; set; }
/// <summary>
///
/// </summary>
public string PaymentMethod { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsBusinessOrder { get; set; }
/// <summary>
///
/// </summary>
public OrderTotal OrderTotal { get; set; }
/// <summary>
///
/// </summary>
public List<string> PaymentMethodDetails { get; set; }
/// <summary>
///
/// </summary>
public Boolean? IsGlobalExpressEnabled { get; set; }
/// <summary>
///
/// </summary>
public string LastUpdateDate { get; set; }
/// <summary>
///
/// </summary>
public string ShipmentServiceLevelCategory { get; set; }
}
public class Payload
{
/// <summary>
///
/// </summary>
public List<OrdersItem> Orders { get; set; }
/// <summary>
///
/// </summary>
public string CreatedBefore { get; set; }
public string NextToken { get; set; }
}
public class AmazonResultObject
{
/// <summary>
///
/// </summary>
public Payload payload { get; set; }
}
public class AmazonResult
{
/// <summary>
///
/// </summary>
public Boolean? HasError { get; set; }
public string Message { get; set; }
public string ResultObject { get; set; }
}
//如果好用,请收藏地址,帮忙分享。
public class TaxCollection
{
/// <summary>
///
/// </summary>
public string Model { get; set; }
/// <summary>
///
/// </summary>
public string ResponsibleParty { get; set; }
}
public class ProductInfo
{
/// <summary>
///
/// </summary>
public string NumberOfItems { get; set; }
}
public class ItemTax
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public string Amount { get; set; }
}
public class ItemPrice
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public string Amount { get; set; }
}
public class PromotionDiscountTax
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public string Amount { get; set; }
}
public class PromotionDiscount
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public string Amount { get; set; }
}
public class OrderItemsItem
{
/// <summary>
///
/// </summary>
public TaxCollection TaxCollection { get; set; }
/// <summary>
///
/// </summary>
public ProductInfo ProductInfo { get; set; }
/// <summary>
///
/// </summary>
public BuyerInfo BuyerInfo { get; set; }
/// <summary>
///
/// </summary>
public ItemTax ItemTax { get; set; }
public ItemTax ShippingTax { get; set; }
/// <summary>
///
/// </summary>
public int QuantityShipped { get; set; }
/// <summary>
///
/// </summary>
public ItemPrice ItemPrice { get; set; }
/// <summary>
///
/// </summary>
public string ASIN { get; set; }
/// <summary>
///
/// </summary>
public string SellerSKU { get; set; }
/// <summary>
///
/// </summary>
public string Title { get; set; }
/// <summary>
///
/// </summary>
public string IsGift { get; set; }
/// <summary>
///
/// </summary>
public string ConditionSubtypeId { get; set; }
/// <summary>
///
/// </summary>
public string IsTransparency { get; set; }
/// <summary>
///
/// </summary>
public int QuantityOrdered { get; set; }
/// <summary>
///
/// </summary>
public PromotionDiscountTax PromotionDiscountTax { get; set; }
/// <summary>
///
/// </summary>
public string ConditionId { get; set; }
/// <summary>
///
/// </summary>
public PromotionDiscount PromotionDiscount { get; set; }
/// <summary>
///
/// </summary>
public string OrderItemId { get; set; }
}
public class OrderItemPayload
{
/// <summary>
///
/// </summary>
public List<OrderItemsItem> OrderItems { get; set; }
/// <summary>
///
/// </summary>
public string AmazonOrderId { get; set; }
}
public class AmazonOrderItemResult
{
/// <summary>
///
/// </summary>
public Boolean? HasError { get; set; }
public string Message { get; set; }
public string ResultObject { get; set; }
}
public class OrderItemRoot
{
/// <summary>
///
/// </summary>
public OrderItemPayload payload { get; set; }
}
//如果好用,请收藏地址,帮忙分享。
public class OrderShippingAddress
{
/// <summary>
///
/// </summary>
public string StateOrRegion { get; set; }
/// <summary>
///
/// </summary>
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
public string County { get; set; }
/// <summary>
///
/// </summary>
public string Phone { get; set; }
/// <summary>
///
/// </summary>
public string PostalCode { get; set; }
/// <summary>
///
/// </summary>
public string City { get; set; }
public string District { get; set; }
/// <summary>
///
/// </summary>
public string CountryCode { get; set; }
/// <summary>
///
/// </summary>
public string AddressType { get; set; }
/// <summary>
///
/// </summary>
public string Name { get; set; }
}
public class AdressPayload
{
/// <summary>
///
/// </summary>
public string AmazonOrderId { get; set; }
/// <summary>
///
/// </summary>
public OrderShippingAddress ShippingAddress { get; set; }
}
public class AdressRoot
{
/// <summary>
///
/// </summary>
public AdressPayload payload { get; set; }
}
public class AmazonAdressRootResult
{
/// <summary>
///
/// </summary>
public Boolean? HasError { get; set; }
public string Message { get; set; }
public string ResultObject { get; set; }
}
//如果好用,请收藏地址,帮忙分享。
public class LandedPrice
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public double Amount { get; set; }
}
public class ListingPrice
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public double Amount { get; set; }
}
public class Shipping
{
/// <summary>
///
/// </summary>
public string CurrencyCode { get; set; }
/// <summary>
///
/// </summary>
public int Amount { get; set; }
}
public class Price
{
/// <summary>
///
/// </summary>
public LandedPrice LandedPrice { get; set; }
/// <summary>
///
/// </summary>
public ListingPrice ListingPrice { get; set; }
/// <summary>
///
/// </summary>
public Shipping Shipping { get; set; }
}
public class CompetitivePricesItem
{
/// <summary>
///
/// </summary>
public string belongsToRequester { get; set; }
/// <summary>
///
/// </summary>
public string condition { get; set; }
/// <summary>
///
/// </summary>
public string subcondition { get; set; }
/// <summary>
///
/// </summary>
public Price Price { get; set; }
/// <summary>
///
/// </summary>
public string CompetitivePriceId { get; set; }
}
public class NumberOfOfferListingsItem
{
/// <summary>
///
/// </summary>
public string condition { get; set; }
/// <summary>
///
/// </summary>
public int Count { get; set; }
}
public class CompetitivePricing
{
/// <summary>
///
/// </summary>
public List<CompetitivePricesItem> CompetitivePrices { get; set; }
/// <summary>
///
/// </summary>
public List<NumberOfOfferListingsItem> NumberOfOfferListings { get; set; }
}
public class MarketplaceASIN
{
/// <summary>
///
/// </summary>
public string MarketplaceId { get; set; }
/// <summary>
///
/// </summary>
public string ASIN { get; set; }
}
public class Identifiers
{
/// <summary>
///
/// </summary>
public MarketplaceASIN MarketplaceASIN { get; set; }
}
public class SalesRankingsItem
{
/// <summary>
///
/// </summary>
public string ProductCategoryId { get; set; }
/// <summary>
///
/// </summary>
public int Rank { get; set; }
}
public class Product
{
/// <summary>
///
/// </summary>
public CompetitivePricing CompetitivePricing { get; set; }
/// <summary>
///
/// </summary>
public Identifiers Identifiers { get; set; }
/// <summary>
///
/// </summary>
public List<SalesRankingsItem> SalesRankings { get; set; }
}
public class PayloadItem
{
/// <summary>
///
/// </summary>
public string ASIN { get; set; }
/// <summary>
///
/// </summary>
public Product Product { get; set; }
/// <summary>
///
/// </summary>
public string status { get; set; }
}
public class GoodsPMRoot
{
/// <summary>
///
/// </summary>
public List<PayloadItem> payload { get; set; }
}
public class feedDocumentRoot
{
/// <summary>
///
/// </summary>
public string feedDocumentId { get; set; }
public string url { get; set; }
}
public class RetuenReport
{
/// <summary>
///
/// </summary>
public string reportId { get; set; }
}
public class RetuenReportDocumentId
{
/// <summary>
///
/// </summary>
public string reportDocumentId { get; set; }
}
public class RetuenReportDocumenturl
{
/// <summary>
///
/// </summary>
public string url { get; set; }
}
public class SyncAmazonCatalogModel
{
public int numberOfResults { get; set; }
public List<SyncAmazonCatalog_Items> items { get; set; }
}
public class SyncAmazonCatalog_Items
{
public string asin { get; set; }
public List<SyncAmazonCatalog_Items_salesRanks> salesRanks { get; set; }
}
public class SyncAmazonCatalog_Items_salesRanks
{
public string marketplaceId { get; set; }
public List<SyncAmazonCatalog_Items_salesRanks_classificationRanks> classificationRanks { get; set; }
public List<SyncAmazonCatalog_Items_salesRanks_displayGroupRanks> displayGroupRanks { get; set; }
}
/// <summary>
/// 小类排名
/// </summary>
public class SyncAmazonCatalog_Items_salesRanks_classificationRanks
{
public string classificationId { get; set; }
public string title { get; set; }
public string link { get; set; }
public int? rank { get; set; }
}
/// <summary>
/// 大类排名
/// </summary>
public class SyncAmazonCatalog_Items_salesRanks_displayGroupRanks
{
public string websiteDisplayGroup { get; set; }
public string title { get; set; }
public string link { get; set; }
public int? rank { get; set; }
}
}