GetOrder不会在Amazon Orders API上返回买家信息

时间:2015-10-26 16:00:32

标签: c# amazon-web-services amazon-mws

我不确定我在这里遗漏了什么,所以让我带你完成我的逻辑流程:

  1. 调用GetOrderList,在给定时间范围内返回订单,状态为Unshipped,由枚举“OrderStatusEnum.Unshipped”表示。

  2. 调用GetOrders,传递上一次操作中的orderID列表。

  3. 根据文件:

    http://docs.developer.amazonservices.com/en_US/orders/2013-09-01/Orders_Datatypes.html

    我应该收回买家信息 - 更具体地说是亚马逊为客户生成的电子邮件地址。但是,Order数据类型(在两个调用之间共享)没有此数据的属性。见下文:

    Order DataType

    我是否遗漏了某些内容,或者这是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;
        }
    

1 个答案:

答案 0 :(得分:0)

我设法通过从提供的源文件构建来解决这个问题。看起来提供的dll不是正确的版本,或者是从不同的源构建的。

在构建自己的dll并使我的代码可以使用之后,我得到了我期望的数据。