关于亚马逊MWS API 看这一篇就够了
文章目录
献给那些刚接触亚马逊MWS API的小白们
一、什么是MWS API
简单的说MWS API就是亚马逊平台为所有开发能力的商家,或者第三方系统服务商提供的对外公布的API接口;后面我们吧MWS API简称为mws;
1.MWS API能为我们做什么
通过授权来允许亚马逊开发者来操作卖家相关信息,例如(获取交易订单,获取商品信息,获取报告)
库存管理 — 您可以执行库存批量上传、添加商品、检查库存数量、查看定价信息及其他库存管理任务。
订单管理 — 您可以下载订单信息、获取付款数据、确认订单以及安排报告时间。
报告管理 — 您可以请求多种报告、查询报告状态并下载报告。
如果您是亚马逊物流 (FBA) 卖家,还可以利用亚马逊MWS 执行以下操作:
创建发往亚马逊运营中心的入库货件 — 您可以自动完成该流程,为发往亚马逊运营中心的商品创建标签。
查看入库货件的状态 — 您可以查看货件是否已到达运营中心。如已到达,是否已得到处理。
提交配送订单 — 将您的系统与亚马逊MWS 进行整合后,您的买家即可随时提交多渠道配送订单。当您处理或批量处理订单时,也不会产生时间延迟。
追踪并管理出库货件请求 - 订单离开亚马逊运营中心后,您可以追踪货件,并帮助买家时刻了解送达时间
2.事前准备
想必刚接触的小白一定都有很大的诉求在获取订单信息,商品上下架这上面(接下来我会重点讲述订单获取,通过api和报告的方式分别来获取订单信息);
知道mws能为我们做什么后,肯定大家都有个疑问,那么我们要怎么才能用这个mws呢?
如果想使用mws api 一定要是mws的开发者,在申请mws开发者的前提必须是亚马逊商户;
所以总结:
1:注册个亚马逊店铺(这个就不用我教了哈,运营范畴)
2:店铺审核通过后申请成为mws开发者(具体申请mws可以网上参考,因为本篇主要讲述如何使用mws api)
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
3.MWS API参考
亚马逊mws的文档链接、介绍了所有的api的接口功能及特点http://docs.developer.amazonservices.com/zh_CN/dev_guide/DG_IfNew.html
具体大家需要哪个接口直接去上面找就对了;
二、准备调用接口的正准备工作
因为要以开发者名义去获取卖家交易信息,和操作卖家商品上下架等操作,所以第一步就是先授权开发者,下面展示如何引导卖家授权权限给我们的开发者,网上现在有2种方式授权,一种是通过key(通过key授权容易被封店不要使用),另一种是通过token(官方推荐);
登录卖家后台点击右上角设置-用户权限-新开发者授权-填下授权开发者信息
点击点击第三方开发人员和应用程序管理
点击为新开发者授权
授权成功后,你将获得授权后的token等信息
把卖家编号和mws token给开发者就完成了授权;如果卖家可以主动在商家后台解绑这个授权;
三:调用接口(官网推荐)
如果我们按照官网的要求去调用接口,那么就必须按照要求来封装请求
这里我们就不推荐了,直接使用官方提供的SDK来进行调用,
如果大家想自己去封装请求那么就参考前面提到的api地址去组装加签后请求;废话不多说,直接用他们的sdk开整;
获取订单信息
1.1:引入mws jdk
这里的sdk并不是所有,只涉及到亚马逊订单和商品信息数据,如果需要其他数据,可以自行去下载相对应的jar
1.2:确认请求参数时间
确认需要查询的时间,查询提供时间mws提供了4个时间参数分别是
@param createAfter 创建时间订单后
@param createBefore 创建时间订单前(非必填,默认现在时间减去2分钟)
@param lastUpdateAfter 最后更新订单时间后
@param lastUpdatedBefore 最后更新订单时间前(非必填,默认现在时间减去2分钟)
用例:加入我要查询6个月前的订单信息
伪代码:
Date date = new Date();
date = DateUtil.addMonths(date, -6);
/**
*
* 获取订单的方法
* @param createAfter 创建时间订单后
* @param createBefore 创建时间订单前(非必填,默认现在时间减去2分钟)
* @param lastUpdateAfter 最后更新订单时间后
* @param lastUpdatedBefore 最后更新订单时间前(非必填,默认现在时间减去2分钟)
* 传递参数有误 createAfter和lastUpdateAfter不能同时传递
* 时间格式"yyyy-MM-dd'T'HH:mm:ss'Z'"
* @return
*/
amazonOrderItem.getAmazonOrder(date, null, null, null);
确定时间参数后,进行拼接请求参数;
1.3:封装请求配置
// 先生成配置config
MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig();
// 对config进行设值
String connurl = "https://mws.amazonservices.com";
config.setServiceURL(connurl + "/Orders/2013-09-01");
// 定义请求客户端
// 这里的2个key使用自己的开发者账号的key
String accessKeyId = "XXXXXXX";
String secretAccessKey = "XXXXXXX";
MarketplaceWebServiceOrders client = new MarketplaceWebServiceOrdersClient(accessKeyId, secretAccessKey,config);
//这里的2个keyId和AccessKey需要自己根据开发者自己按需填写
// 封装请求参数对象,根据不同的业务封装不同的Request
ListOrdersRequest request = new ListOrdersRequest();
// 设置卖家id和token
request.setSellerId(sellerId);
request.setMWSAuthToken(token);
// 订单状态,暂时不涉及订单状态问题。
List<String> orderStatus = new ArrayList<String>();
orderStatus.add("Unshipped");
orderStatus.add("PartiallyShipped");
orderStatus.add("Shipped");
orderStatus.add("Pending");
request.setOrderStatus(orderStatus);
// 查询美国站,如有需要list后面继续添加
List<String> marketplaceIdList = new ArrayList<String>();
marketplaceIdList.add(marketplaceId);
request.setMarketplaceId(marketplaceIdList);
// 默认返回的最大的数据
request.setMaxResultsPerPage(100);
// 发起请求
ListOrdersResponse response = client.listOrders(request);
// 获取orderList
ListOrdersResult orderList = response.getListOrdersResult();
// 获取到订单list
List<Order> oList = orderList.getOrders();
// 根据订单实体进行信息获取
。。。。。。。。。
// 如果存在下一页那么就继续通过nextToken,递归调用listOrders接口
// 但接口请求是有频次限制的,一次最大调用15次,后面2分钟释放1次;(所以对大数据量的订单提现并不好,后面我会写关于报告请求的方式,下一篇章介绍)
运行结果:
总结
总结下来通过mws sdk来调用方便了很多
简单来说,配置config,组装client,请求,解析结果;