獻(xiàn)給那些剛接觸亞馬遜MWS API的小白們
一、什么是MWS API
簡(jiǎn)單的說MWS API就是亞馬遜平臺(tái)為所有開發(fā)能力的商家,或者第三方系統(tǒng)服務(wù)商提供的對(duì)外公布的API接口;后面我們吧MWS API簡(jiǎn)稱為mws;
1.MWS API能為我們做什么
通過授權(quán)來允許亞馬遜開發(fā)者來操作賣家相關(guān)信息,例如(獲取交易訂單,獲取商品信息,獲取報(bào)告)
庫存管理 — 您可以執(zhí)行庫存批量上傳、添加商品、檢查庫存數(shù)量、查看定價(jià)信息及其他庫存管理任務(wù)。
訂單管理 — 您可以下載訂單信息、獲取付款數(shù)據(jù)、確認(rèn)訂單以及安排報(bào)告時(shí)間。
報(bào)告管理 — 您可以請(qǐng)求多種報(bào)告、查詢報(bào)告狀態(tài)并下載報(bào)告。
如果您是亞馬遜物流 (FBA) 賣家,還可以利用亞馬遜MWS 執(zhí)行以下操作:
創(chuàng)建發(fā)往亞馬遜運(yùn)營中心的入庫貨件 — 您可以自動(dòng)完成該流程,為發(fā)往亞馬遜運(yùn)營中心的商品創(chuàng)建標(biāo)簽。
查看入庫貨件的狀態(tài) — 您可以查看貨件是否已到達(dá)運(yùn)營中心。如已到達(dá),是否已得到處理。
提交配送訂單 — 將您的系統(tǒng)與亞馬遜MWS 進(jìn)行整合后,您的買家即可隨時(shí)提交多渠道配送訂單。當(dāng)您處理或批量處理訂單時(shí),也不會(huì)產(chǎn)生時(shí)間延遲。
追蹤并管理出庫貨件請(qǐng)求 - 訂單離開亞馬遜運(yùn)營中心后,您可以追蹤貨件,并幫助買家時(shí)刻了解送達(dá)時(shí)間
2.事前準(zhǔn)備
想必剛接觸的小白一定都有很大的訴求在獲取訂單信息,商品上下架這上面(接下來我會(huì)重點(diǎn)講述訂單獲取,通過api和報(bào)告的方式分別來獲取訂單信息);
知道m(xù)ws能為我們做什么后,肯定大家都有個(gè)疑問,那么我們要怎么才能用這個(gè)mws呢?
如果想使用mws api 一定要是mws的開發(fā)者,在申請(qǐng)mws開發(fā)者的前提必須是亞馬遜商戶;
所以總結(jié):
1:注冊(cè)個(gè)亞馬遜店鋪(這個(gè)就不用我教了哈,運(yùn)營范疇)
2:店鋪審核通過后申請(qǐng)成為mws開發(fā)者(具體申請(qǐng)mws可以網(wǎng)上參考,因?yàn)楸酒饕v述如何使用mws api)
示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。
3.MWS API參考
亞馬遜mws的文檔鏈接、介紹了所有的api的接口功能及特點(diǎn)docs.developer.amazonservices.com/zh_CN/dev_g…
具體大家需要哪個(gè)接口直接去上面找就對(duì)了;
二、準(zhǔn)備調(diào)用接口的正準(zhǔn)備工作
因?yàn)橐蚤_發(fā)者名義去獲取賣家交易信息,和操作賣家商品上下架等操作,所以第一步就是先授權(quán)開發(fā)者,下面展示如何引導(dǎo)賣家授權(quán)權(quán)限給我們的開發(fā)者,網(wǎng)上現(xiàn)在有2種方式授權(quán),一種是通過key(通過key授權(quán)容易被封店不要使用),另一種是通過token(官方推薦);
登錄賣家后臺(tái)點(diǎn)擊右上角設(shè)置-用戶權(quán)限-新開發(fā)者授權(quán)-填下授權(quán)開發(fā)者信息
點(diǎn)擊點(diǎn)擊第三方開發(fā)人員和應(yīng)用程序管理
點(diǎn)擊為新開發(fā)者授權(quán)
授權(quán)成功后,你將獲得授權(quán)后的token等信息
把賣家編號(hào)和mws token給開發(fā)者就完成了授權(quán);如果賣家可以主動(dòng)在商家后臺(tái)解綁這個(gè)授權(quán);
三:調(diào)用接口(官網(wǎng)推薦)
如果我們按照官網(wǎng)的要求去調(diào)用接口,那么就必須按照要求來封裝請(qǐng)求
這里我們就不推薦了,直接使用官方提供的SDK來進(jìn)行調(diào)用,
如果大家想自己去封裝請(qǐng)求那么就參考前面提到的api地址去組裝加簽后請(qǐng)求;廢話不多說,直接用他們的sdk開整;
獲取訂單信息
1.1:引入mws jdk
這里的sdk并不是所有,只涉及到亞馬遜訂單和商品信息數(shù)據(jù),如果需要其他數(shù)據(jù),可以自行去下載相對(duì)應(yīng)的jar
1.2:確認(rèn)請(qǐng)求參數(shù)時(shí)間
確認(rèn)需要查詢的時(shí)間,查詢提供時(shí)間mws提供了4個(gè)時(shí)間參數(shù)分別是
@param createAfter 創(chuàng)建時(shí)間訂單后
@param createBefore 創(chuàng)建時(shí)間訂單前(非必填,默認(rèn)現(xiàn)在時(shí)間減去2分鐘)
@param lastUpdateAfter 最后更新訂單時(shí)間后
@param lastUpdatedBefore 最后更新訂單時(shí)間前(非必填,默認(rèn)現(xiàn)在時(shí)間減去2分鐘)
用例:加入我要查詢6個(gè)月前的訂單信息
偽代碼:
date = DateUtil.addMonths(date, -6);
/**
*
* 獲取訂單的方法
* @param createAfter 創(chuàng)建時(shí)間訂單后
* @param createBefore 創(chuàng)建時(shí)間訂單前(非必填,默認(rèn)現(xiàn)在時(shí)間減去2分鐘)
* @param lastUpdateAfter 最后更新訂單時(shí)間后
* @param lastUpdatedBefore 最后更新訂單時(shí)間前(非必填,默認(rèn)現(xiàn)在時(shí)間減去2分鐘)
* 傳遞參數(shù)有誤 createAfter和lastUpdateAfter不能同時(shí)傳遞
* 時(shí)間格式"yyyy-MM-dd'T'HH:mm:ss'Z'"
* @return
*/
amazonOrderItem.getAmazonOrder(date, null, null, null);
確定時(shí)間參數(shù)后,進(jìn)行拼接請(qǐng)求參數(shù);
1.3:封裝請(qǐng)求配置
MarketplaceWebServiceOrdersConfig config = new MarketplaceWebServiceOrdersConfig();
// 對(duì)config進(jìn)行設(shè)值
String connurl = "https://mws.amazonservices.com";
config.setServiceURL(connurl + "/Orders/2013-09-01");
// 定義請(qǐng)求客戶端
// 這里的2個(gè)key使用自己的開發(fā)者賬號(hào)的key
String accessKeyId = "XXXXXXX";
String secretAccessKey = "XXXXXXX";
MarketplaceWebServiceOrders client = new MarketplaceWebServiceOrdersClient(accessKeyId, secretAccessKey,config);
//這里的2個(gè)keyId和AccessKey需要自己根據(jù)開發(fā)者自己按需填寫
// 封裝請(qǐng)求參數(shù)對(duì)象,根據(jù)不同的業(yè)務(wù)封裝不同的Request
ListOrdersRequest request = new ListOrdersRequest();
// 設(shè)置賣家id和token
request.setSellerId(sellerId);
request.setMWSAuthToken(token);
// 訂單狀態(tài),暫時(shí)不涉及訂單狀態(tài)問題。
List<String> orderStatus = new ArrayList<String>();
orderStatus.add("Unshipped");
orderStatus.add("PartiallyShipped");
orderStatus.add("Shipped");
orderStatus.add("Pending");
request.setOrderStatus(orderStatus);
// 查詢美國站,如有需要list后面繼續(xù)添加
List<String> marketplaceIdList = new ArrayList<String>();
marketplaceIdList.add(marketplaceId);
request.setMarketplaceId(marketplaceIdList);
// 默認(rèn)返回的最大的數(shù)據(jù)
request.setMaxResultsPerPage(100);
// 發(fā)起請(qǐng)求
ListOrdersResponse response = client.listOrders(request);
// 獲取orderList
ListOrdersResult orderList = response.getListOrdersResult();
// 獲取到訂單list
List<Order> oList = orderList.getOrders();
// 根據(jù)訂單實(shí)體進(jìn)行信息獲取
。。。。。。。。。
// 如果存在下一頁那么就繼續(xù)通過nextToken,遞歸調(diào)用listOrders接口
// 但接口請(qǐng)求是有頻次限制的,一次最大調(diào)用15次,后面2分鐘釋放1次;(所以對(duì)大數(shù)據(jù)量的訂單提現(xiàn)并不好,后面我會(huì)寫關(guān)于報(bào)告請(qǐng)求的方式,下一篇章介紹)
運(yùn)行結(jié)果:
總結(jié)
總結(jié)下來通過mws sdk來調(diào)用方便了很多
簡(jiǎn)單來說,配置config,組裝client,請(qǐng)求,解析結(jié)果;