GetOrder 不返回亚马逊订单上的买家信息 API
GetOrder not returning buyer info on Amazon Orders API
我不确定我是否遗漏了什么,所以让我带您了解一下我的逻辑流程:
调用 GetOrderList,返回给定时间范围内的订单,状态为未发货,由枚举 "OrderStatusEnum.Unshipped".
表示
调用 GetOrders,传递上一操作中的订单 ID 列表。
根据文档:
http://docs.developer.amazonservices.com/en_US/orders/2013-09-01/Orders_Datatypes.html
我应该取回买家信息 - 更具体地说是亚马逊为客户生成的电子邮件地址。但是,Order 数据类型(在两个调用之间共享)没有此数据的属性。见下文:
我是不是遗漏了什么,或者这是 C# 客户端库的问题?
这是我编写的调用 GetOrders 的方法:
public List<Order> GetOrders( List<Order> orderList )
{
var orders = new List<Order>();
if ( orderList.Count <= 50 )
{
var request = new GetOrderRequest
{
SellerId = this.Context.MerchantID,
AmazonOrderId = new OrderIdList { Id = orderList.Select( ol => ol.AmazonOrderId ).ToList() }
};
var response = GetService().GetOrder( request );
orders.AddRange( response.GetOrderResult.Orders.Order );
}
else
{
var orderIds = orderList.Select( ol => ol.AmazonOrderId ).ToList();
var pages = orderIds.Count/50;
if ( orderIds.Count%50 > 0 )
pages++;
for ( var i = 0; i < pages; i++ )
{
var request = new GetOrderRequest
{
SellerId = this.Context.MerchantID,
AmazonOrderId = new OrderIdList { Id = orderIds.Skip( i * 50 ).Take( 50 ).ToList() }
};
var response = GetService().GetOrder( request );
orders.AddRange( response.GetOrderResult.Orders.Order );
}
}
return orders;
}
其中调用了 GetService():
public MarketplaceWebServiceOrders.MarketplaceWebServiceOrders GetService()
{
var config = new MarketplaceWebServiceOrdersConfig
{
ServiceURL = this.ServiceUrl + ConfigurationManager.AppSettings["Environment.OrdersEndpoint"]
};
var service = new MarketplaceWebServiceOrdersClient(
this.ApplicationName,
this.ApplicationVersion,
this.Context.AccessKeyID,
this.Context.SecretAccessKey,
config
);
return service;
}
我设法通过从提供的源文件构建来解决这个问题。看起来提供的 dll 版本不正确,或者是从不同的来源构建的。
在构建我自己的 dll 并使我的代码可以使用它之后,我得到了我期望的数据。
我不确定我是否遗漏了什么,所以让我带您了解一下我的逻辑流程:
调用 GetOrderList,返回给定时间范围内的订单,状态为未发货,由枚举 "OrderStatusEnum.Unshipped".
表示
调用 GetOrders,传递上一操作中的订单 ID 列表。
根据文档:
http://docs.developer.amazonservices.com/en_US/orders/2013-09-01/Orders_Datatypes.html
我应该取回买家信息 - 更具体地说是亚马逊为客户生成的电子邮件地址。但是,Order 数据类型(在两个调用之间共享)没有此数据的属性。见下文:
我是不是遗漏了什么,或者这是 C# 客户端库的问题?
这是我编写的调用 GetOrders 的方法:
public List<Order> GetOrders( List<Order> orderList )
{
var orders = new List<Order>();
if ( orderList.Count <= 50 )
{
var request = new GetOrderRequest
{
SellerId = this.Context.MerchantID,
AmazonOrderId = new OrderIdList { Id = orderList.Select( ol => ol.AmazonOrderId ).ToList() }
};
var response = GetService().GetOrder( request );
orders.AddRange( response.GetOrderResult.Orders.Order );
}
else
{
var orderIds = orderList.Select( ol => ol.AmazonOrderId ).ToList();
var pages = orderIds.Count/50;
if ( orderIds.Count%50 > 0 )
pages++;
for ( var i = 0; i < pages; i++ )
{
var request = new GetOrderRequest
{
SellerId = this.Context.MerchantID,
AmazonOrderId = new OrderIdList { Id = orderIds.Skip( i * 50 ).Take( 50 ).ToList() }
};
var response = GetService().GetOrder( request );
orders.AddRange( response.GetOrderResult.Orders.Order );
}
}
return orders;
}
其中调用了 GetService():
public MarketplaceWebServiceOrders.MarketplaceWebServiceOrders GetService()
{
var config = new MarketplaceWebServiceOrdersConfig
{
ServiceURL = this.ServiceUrl + ConfigurationManager.AppSettings["Environment.OrdersEndpoint"]
};
var service = new MarketplaceWebServiceOrdersClient(
this.ApplicationName,
this.ApplicationVersion,
this.Context.AccessKeyID,
this.Context.SecretAccessKey,
config
);
return service;
}
我设法通过从提供的源文件构建来解决这个问题。看起来提供的 dll 版本不正确,或者是从不同的来源构建的。
在构建我自己的 dll 并使我的代码可以使用它之后,我得到了我期望的数据。