Amazon訂單接口是Amazon MWS 開發接口中的一大塊,我們可以通過接口調用來獲得訂單數據。
在調用接口之前,首先我們要獲得相關店鋪商家的店鋪密鑰等信息。如下:
在此我將所有信息定義在一個類中,采用序列化的方式,方便存取值。

1 /// <summary> 2 /// 賬戶信息 3 /// </summary> 4 [Serializable] 5 public class AccountConfig : BaseConfig<AccountConfig> 6 { 7 /// <summary> 8 /// 應用程序名稱 9 /// </summary> 10 public string AppName { get; set; } 11 12 /// <summary> 13 /// 應用程序版本 14 /// </summary> 15 public string AppVersion { get; set; } 16 17 /// <summary> 18 /// 賬戶KeyId 19 /// </summary> 20 public string AccessKeyId { get; set; } 21 22 /// <summary> 23 /// 密鑰Id 24 /// </summary> 25 public string SecretAccessKey { get; set; } 26 27 /// <summary> 28 /// 商城Id 29 /// </summary> 30 public string MerchantId { get; set; } 31 32 /// <summary> 33 /// 商城唯一標識Id 34 /// </summary> 35 public string MarketplaceId { get; set; } 36 37 /// <summary> 38 /// 服務端URL 39 /// </summary> 40 public string ServiceUrl { get; set; } 41 }
然后我們回到文檔中,我們會發現,請求參數中,有兩個參數是必填的:CreatedAfter、MarketplaceId。調用接口的方法很簡單,無非是構造完整的對象,其實主要還是保持必填參數的完整性,這次我們拿ListOrder 接口來舉例:

1 /// <summary> 2 /// 獲得賬戶信息 3 /// </summary> 4 protected AccountConfig Account 5 { 6 get 7 { 8 return AccountConfig.Instance; 9 } 10 } 11 12 private MarketplaceWebServiceOrdersConfig GetConfig() 13 { 14 var config = new MarketplaceWebServiceOrdersConfig(); 15 config.ServiceURL = Account.ServiceUrl; 16 return config; 17 } 18 19 private MarketplaceWebServiceOrdersClient GetClient() 20 { 21 var config = this.GetConfig(); 22 var client = new MarketplaceWebServiceOrdersClient(Account.AppName, 23 Account.AppVersion, Account.AccessKeyId, Account.SecretAccessKey, config); 24 return client; 25 } 26 27 #region 獲得訂單列表(OrderList) 28 29 30 private List<Order> GetNextOrderList(ref string nextToken) 31 { 32 var client = this.GetClient(); 33 var request = new ListOrdersByNextTokenRequest(); 34 request.SellerId = Account.MerchantId; 35 request.NextToken = nextToken; 36 37 var response = client.ListOrdersByNextToken(request); 38 var result = response.ListOrdersByNextTokenResult; 39 nextToken = result.NextToken; 40 List<Order> orderList = result.Orders.Order; 41 42 return orderList; 43 } 44 45 /// <summary> 46 /// 獲得訂單列表(指定Request模式) 47 /// </summary> 48 /// <param name="request">ListOrdersRequest</param> 49 /// <returns></returns> 50 public List<Order> GetOrderList(DateTime createdAfter, DateTime createdBefore) 51 { 52 var request = new ListOrdersRequest(); 53 request.CreatedAfter = AmazonHelper.ConvertToISO8601(createdAfter); 54 request.CreatedBefore = AmazonHelper.ConvertToISO8601(createdBefore); 55 request.MarketplaceId = new MarketplaceIdList(); 56 request.MarketplaceId.Id = new List<string> { Account.MarketplaceId }; 57 request.SellerId = Account.MerchantId; 58 59 var client = GetClient(); 60 var response = client.ListOrders(request); 61 var result = response.ListOrdersResult; 62 var orderList = result.Orders.Order; 63 string nextToken = result.NextToken; 64 65 while (!string.IsNullOrEmpty(nextToken)) 66 { 67 List<Order> tempList = GetNextOrderList(ref nextToken); 68 orderList = orderList.Concat(tempList).ToList(); 69 } 70 71 return orderList; 72 } 73 #endregion
切記,在調用中不要忽視了在請求參數中給 SellerId 賦值。