Amazon订单接口是Amazon MWS 开发接口中的一大块,我们可以通过接口调用来获得订单数据。

   在调用接口之前,首先我们要获得相关店铺商家的店铺密钥等信息。如下:

在此我将所有信息定义在一个类中,采用序列化的方式,方便存取值。

/// <summary>
/// 账户信息
/// </summary>
[Serializable]
public class AccountConfig : BaseConfig<AccountConfig>
{
/// <summary>
/// 应用程序名称
/// </summary>
public string AppName { get; set; } /// <summary>
/// 应用程序版本
/// </summary>
public string AppVersion { get; set; } /// <summary>
/// 账户KeyId
/// </summary>
public string AccessKeyId { get; set; } /// <summary>
/// 密钥Id
/// </summary>
public string SecretAccessKey { get; set; } /// <summary>
/// 商城Id
/// </summary>
public string MerchantId { get; set; } /// <summary>
/// 商城唯一标识Id
/// </summary>
public string MarketplaceId { get; set; } /// <summary>
/// 服务端URL
/// </summary>
public string ServiceUrl { get; set; }
}

然后我们回到文档中,我们会发现,请求参数中,有两个参数是必填的:CreatedAfter、MarketplaceId。调用接口的方法很简单,无非是构造完整的对象,其实主要还是保持必填参数的完整性,这次我们拿ListOrder 接口来举例:

  

/// <summary>
/// 获得账户信息
/// </summary>
protected AccountConfig Account
{
get
{
return AccountConfig.Instance;
}
} private MarketplaceWebServiceOrdersConfig GetConfig()
{
var config = new MarketplaceWebServiceOrdersConfig();
config.ServiceURL = Account.ServiceUrl;
return config;
} private MarketplaceWebServiceOrdersClient GetClient()
{
var config = this.GetConfig();
var client = new MarketplaceWebServiceOrdersClient(Account.AppName,
Account.AppVersion, Account.AccessKeyId, Account.SecretAccessKey, config);
return client;
} #region 获得订单列表(OrderList) private List<Order> GetNextOrderList(ref string nextToken)
{
var client = this.GetClient();
var request = new ListOrdersByNextTokenRequest();
request.SellerId = Account.MerchantId;
request.NextToken = nextToken; var response = client.ListOrdersByNextToken(request);
var result = response.ListOrdersByNextTokenResult;
nextToken = result.NextToken;
List<Order> orderList = result.Orders.Order; return orderList;
} /// <summary>
/// 获得订单列表(指定Request模式)
/// </summary>
/// <param name="request">ListOrdersRequest</param>
/// <returns></returns>
public List<Order> GetOrderList(DateTime createdAfter, DateTime createdBefore)
{
var request = new ListOrdersRequest();
request.CreatedAfter = AmazonHelper.ConvertToISO8601(createdAfter);
request.CreatedBefore = AmazonHelper.ConvertToISO8601(createdBefore);
request.MarketplaceId = new MarketplaceIdList();
request.MarketplaceId.Id = new List<string> { Account.MarketplaceId };
request.SellerId = Account.MerchantId; var client = GetClient();
var response = client.ListOrders(request);
var result = response.ListOrdersResult;
var orderList = result.Orders.Order;
string nextToken = result.NextToken; while (!string.IsNullOrEmpty(nextToken))
{
List<Order> tempList = GetNextOrderList(ref nextToken);
orderList = orderList.Concat(tempList).ToList();
} return orderList;
}
#endregion

切记,在调用中不要忽视了在请求参数中给 SellerId 赋值。

Amzon MWS API开发之订单接口的更多相关文章

  1. Amzon MWS API开发之 上传数据

    亚马逊上传数据,现有能操作的功能有很多:库存数量.跟踪号.价格.商品....... 我们可以设置FeedType值,根据需要,再上传对应的xml文件即可. 下面可以看看FeedType类型 这次我们拿 ...

  2. Amzon MWS API开发之 请求报告

    时间一晃而过又过了两周,博客园更新的速度确实有点慢,今天我要分享的是对请求报告的调用. 在文档中,相信大家也看了下面这个流程图吧? 相关流程,在文档中也有细说,我就不一一去Copy了:http://d ...

  3. 淘宝API开发系列---阿里.聚石塔.开放平台的使用

    好久没有继续跟进淘宝的API使用了,有很多做相关应用的同行都来咨询,很多都因为自己开发工作比较忙而没有来得及好的处理,前几天,有一个朋友叫帮忙指导如何使用淘宝API,由于原来有一些成熟的例子应用,因此 ...

  4. ebay的api开发技术说明,有点乱

    使用eBay API的基本步骤引入 开始eBay API,例如,以下基本步骤需要: 1.    注册开发者账号: https://developer.ebay.com/join/Default.asp ...

  5. mpvue 开发小程序接口数据统一管理

    mpvue项目里做API与数据分离统一管理 小程序里请求数据接口使用wx:request,因为考虑项目比较大,最好把wx:request封装起来,统一使用管理 utils.js 配置开发环境和线上环境 ...

  6. day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知

    目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...

  7. 天气预报API开发

    天气预报API开发 一.        寻觅篇 最近想要跟着视频练习一下利用API开发一个天气预报系统,就在网上找了一下可以用的API,结果好多都已经失效了... 1.       百度车联网天气预报 ...

  8. API 开发实践

    整个2015年,如果要给自己打上一个标签的话,那应该就是 API. 在各个不同的系统中定制各种 API 框架. 在做商城对接各种电商 ERP 的 API 开发中,我采用的是兼容SHOPEX 的 API ...

  9. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

随机推荐

  1. Swift闭包(Closure)

    语法: { (parameters) ->return type in statements} 实例:采用函数实现: let names =["Chris", "A ...

  2. Could not load the "defaultimg" image referenced from a nib in the bundle with identifier "com.abc"

    出现这个错误提示,是因为在xib中使用了.jpg格式的图片,在图片名称后面加上.jpg即可;

  3. SVN全量备份+增量备份脚本

    一.全量备份 环境:一台主SVN,一台备SVN(主要提供备份功能),后续可通过钩子脚本进行实时备份,后续发给大家. 工作原理:通过svn的hotcopy命令过行热备份,并进行一系列的检查,备份后通过r ...

  4. [译]GC专家系列1: 理解Java垃圾回收

    原文链接:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/ 了解Java的垃圾回收(GC)原 ...

  5. 将Ecshop后台fckeditor升级更改为kindeditor 4.1.10编辑器

    ecshop在win8部分电脑上,不管用任何浏览器,都打不开,即使升级到最新版本都不行,问题应该吃在fckeditor兼容上.fckeditor 很久未升级,换掉该编辑器是最佳方法 第一步:下载kin ...

  6. phpcms v9修改栏目描述的多行文本为编辑器方法

    phpcms v9在添加栏目的时候,栏目描述为多行文本,无法满足有图片,以及格式的修改调整,那么仿站网今天告诉大家如何将他改为编辑器,方法如下 找到phpcms/moudles/admin/templ ...

  7. RabbitMQ基础总结

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之 ...

  8. Oracle中的USEREVN()

    Oracle中的USEREVN() 1.USEREVN() 返回当前用户环境的信息,opt可以是: ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CL ...

  9. class_create(),device_create自动创建设备文件结点

    class_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代.相比devfs,udev有很多优 ...

  10. EXTJS 4.2 资料 控件textfield中fieldLabel去掉冒号,控件label的长度

    代码: labelSeparator: '', // 去掉laebl中的冒号 labelWidth: 10,//控件label的长度