对接亚马逊 SP-API(Amazon Selling Partner API) 第六章:Fulfillment Inbound 模块
1. API 對比
| CreateInboundShipmentPlan | createInboundShipmentPlan | 返回創(chuàng)建 入庫貨件所需的信息。 |
| CreateInboundShipment | createInboundShipment | 創(chuàng)建入庫貨件。 |
| UpdateInboundShipment | updateInboundShipment | 更新現(xiàn)有入庫貨件。 |
| PutTransportContent | putTransportDetails | 向亞馬遜發(fā)送入庫貨件的運輸信息。 |
| EstimateTransportRequest | estimateTransport | 請求入庫貨件的預計運費。 |
| GetTransportContent | getTransportDetails | 返回入庫貨件的當前運輸信息。 |
| ConfirmTransportRequest | confirmTransport | 確認您接受亞馬遜合作承運人的預計運費,并請求亞馬遜合作承運人配送您的入庫貨件。 |
| VoidTransportRequest | voidTransport | 取消之前確認的使用亞馬遜合作承運人配送入庫貨件的請求。 |
| GetPackageLabels | getLabels | 返回用于打印入庫貨件包裹標簽的 PDF 文檔數(shù)據(jù)。 |
| GetBillOfLading | getBillOfLading | 返回用于打印入庫貨件提單的 PDF 文檔數(shù)據(jù)。 |
| ListInboundShipments | getShipments | 根據(jù)您指定的條件返回入庫貨件列表 |
| ListInboundShipmentsByNextToken | 使用?NextToken?參數(shù)返回下一頁入庫貨件。 | |
| ListInboundShipmentItems | getShipmentItems getShipmentItemsByShipmentId | 返回指定入庫貨件的商品列表或在指定時間段內(nèi)更新的商品列表。 |
| ListInboundShipmentItemsByNextToken | 使用?NextToken?參數(shù)返回下一頁入庫貨件商品。 | |
| GetServiceStatus | 返回?“配送入庫貨件 API”部分?的運行狀態(tài)。 | |
| getInboundGuidance getPreorderInfo confirmPreorder getPrepInstructions |
2.?MWS 流程
3. SP-API? 流程
????????3.1. 創(chuàng)建貨件計劃:createInboundShipmentPlan
參照 MWS 流程?步驟 2 - 創(chuàng)建一個入庫貨件計劃
備注:只創(chuàng)建貨件計劃是無法在亞馬遜后臺查詢的,確認了貨件計劃才可以查得到。
public void createInboundShipmentPlanTest() throws ApiException {CreateInboundShipmentPlanRequest body = new CreateInboundShipmentPlanRequest();// AddressAddress address = new Address();address.setName("XXX");address.setAddressLine1("XXX");address.setCity("XXX");address.setStateOrProvinceCode("XXX");address.setCountryCode("CA");address.setPostalCode("000000");body.setShipFromAddress(address);/** LabelPrepPreference 是您在 CreateInboundShipmentPlan 操作使用的一個關鍵參數(shù)。此參數(shù)指明了您將要發(fā)送至亞馬遜物流的商品的標簽準備首選項。* 以下是 LabelPrepPreference 的有效值:* SELLER_LABEL - 指明您將自行為每個需要商品標簽的商品(不是無需貼標簽的混雜庫存中的商品)貼標。* AMAZON_LABEL_ONLY - 亞馬遜將為入庫貨件中需要標簽的商品貼標。如果亞馬遜確定沒有成功對商品貼標所需的信息,入庫貨件計劃不會包含該商品。* AMAZON_LABEL_PREFERRED - 亞馬遜將為入庫貨件中需要標簽的商品貼標。如果亞馬遜確定沒有對商品成功貼標所需的信息, 入庫貨件計劃會包含該商品,且賣家必須為其貼標。* 注: 除非您注冊了“亞馬遜物流貼標服務”,否則 SELLER_LABEL 即為 LabelPrepPreference 的唯一有效值?!皝嗰R遜物流貼標服務”不適用于印度 (IN)。* */body.setLabelPrepPreference(LabelPrepPreference.SELLER_LABEL);// InboundShipmentPlanRequestItemsInboundShipmentPlanRequestItemList inboundShipmentPlanRequestItems = new InboundShipmentPlanRequestItemList();InboundShipmentPlanRequestItem inboundShipmentPlanRequestItem = new InboundShipmentPlanRequestItem();inboundShipmentPlanRequestItem.setSellerSKU("XXX");inboundShipmentPlanRequestItem.setQuantity(1000);inboundShipmentPlanRequestItems.add(inboundShipmentPlanRequestItem);body.setInboundShipmentPlanRequestItems(inboundShipmentPlanRequestItems);CreateInboundShipmentPlanResponse response = api.createInboundShipmentPlan(body);}? ? ? ? ?題外: 分倉 --> 合倉
只創(chuàng)建了一個SKU的計劃,卻有兩個 DestinationFulfillmentCenterId。
????????解決:(感謝阿科大佬)
備注:需要將賬號默認庫存配置設置成合倉。合倉的費用會非常貴!(運營立馬掐滅了我修改配置想法..)
路徑:Account Setting --> Fulfillment by Amazon --> Inbound Setting --> Inventory Placement Option --> Inventory Placement Service
配置完后先測試一下,如果解決了就沒問題了。我修改完配置已經(jīng)變成一個了。
?不行的話,再執(zhí)行下列操作(多個SKU的情況下需要用到)。
調(diào)用 getPrepInstructions 獲取 PrepInstruction。(沒有則為"NONE")
在 Item 中添加查詢出來的參數(shù)。
// 避免分倉PrepDetailsList prepDetails = new PrepDetailsList();PrepDetails prepDetail = new PrepDetails();prepDetail.setPrepInstruction(PrepInstruction.LABELING);prepDetail.setPrepOwner(PrepOwner.SELLER);prepDetails.add(prepDetail);inboundShipmentPlanRequestItem.setPrepDetailsList(prepDetails);????????BUG 1:?Reason: XX State field must be two characters.
{"errors": [{"code": "InvalidInput","message": " Reason: XX State field must be two characters.","details": ""}] }????????解決:
參數(shù)中 AddressLine 和 CountryCode 必須是一致的。不能 AddressLine 是CA地址,CountryCode 填US。
????????BUG 2:?NOT_IN_PRODUCT_CATALOG
<Error><Type>Sender</Type><Code>InvalidRequestException</Code><Message>This operation may be partially successful, Please check the status. Reason: [Item(s) ineligible from being inbounded, with reason: NOT_IN_PRODUCT_CATALOG. Corresponding items for the error: [[FNSKU: XXX, MSKU: XXX]]].</Message> </Error>????????解決:
在亞馬遜后臺檢查該產(chǎn)品是否為FBA發(fā)貨
位置:后臺 --> Inventory --> Manage?FBA Inventory --> 相關SKU -->?配送類型更改為【所有】
? ? ? ? 3.2. 確認貨件計劃:createInboundShipment
參照 MWS 流程?步驟 4 - 創(chuàng)建一個入庫貨件
? ? ? ? 3.3. 上傳資料(沒賬號測試了,等以后處理了在補充資料。如果有愿意提供賬號的可以聯(lián)系我!)
Feeds API 使用方式參照官方教程:Feeds API v2021-06-30 Use Case Guide
3.3.1. 上傳紙箱內(nèi)容
????????說明:上傳 xml。
Feed Type: POST_FBA_INBOUND_CARTON_CONTENTS
3.3.2. 上傳箱子尺寸
????????說明:上傳 excel。
Feed Type: POST_FLAT_FILE_FROM_EXCEL_FBA_CREATE_CARTON_INFO(此類型為隱藏類型,一般人我不告訴他們的,且知且珍惜)
? ? ? ? 3.3. 發(fā)貨:updateInboundShipment
參照 MWS 流程?步驟 9 - 將您的貨件標記為已發(fā)貨
? ? ? ? 3.4. 獲取貼箱標:getLabels
備注:貼箱標是需要發(fā)給物流商的。
@Testpublic void getLabelsTest() throws ApiException {String shipmentId = "FBAAAAAAAA";String pageType = "PackageLabel_Letter_2";String labelType = "BARCODE_2D";Integer numberOfPackages = null;List<String> packageLabelsToPrint = null;Integer numberOfPallets = null;Integer pageSize = null;Integer pageStartIndex = null;GetLabelsResponse response = api.getLabels(shipmentId, pageType, labelType, numberOfPackages, packageLabelsToPrint, numberOfPallets, pageSize, pageStartIndex);// TODO: test validations}然后就可以獲取到一個下載的URL。(URL在15秒后會失效)?
總結(jié)
以上是生活随笔為你收集整理的对接亚马逊 SP-API(Amazon Selling Partner API) 第六章:Fulfillment Inbound 模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNI-APP,推广二维码页面实现
- 下一篇: 线性代数:方程组