Amazon SP-API 踩坑之获取的贴箱单不正确以及如何拼箱的问题

场景

最近要作货品部门的需求,涉及到发货和入库相关的API,对此研究了fulfillment-inbound-apijava

官方文档路径:fulfillment-inbound-apipython

从货品部门了解到的具体步骤为:git

  1. 建立一个发货计划(createInboundShipmentPlan)github

  2. 而后建立发货(createInboundShipment),api

  3. 最后获取贴箱单(getLabels)微信

再了解到这些后我作了以下尝试markdown

实操

准备工做

第1、获取曾经发货的相关信息

1.先获取曾经建立过的发货-getShipments

String queryType="SHIPMENT";
String marketplaceId = "ATVPDKIKX0DER";
GetShipmentsResponse shipments = null;
List<String> shipmentStatusList = Arrays.asList("WORKING","SHIPPED","RECEIVING","CANCELLED","DELETED","CLOSED","ERROR","IN_TRANSIT","DELIVERED","CHECKED_IN");
ArrayList<String> shipmentIdList = new ArrayList<>();
try {
     shipments = 		       fbaInboundApi.getShipments(queryType,marketplaceId,shipmentStatusList,shipme   ntIdList,start_time,end_time,null);
} catch (ApiException e) {
     e.printStackTrace();
}
GetShipmentsResult payload = shipments.getPayload();
System.out.println("payload.getShipmentData() = " + payload.getShipmentData());
复制代码

获取的结果以下:oop

image-20210624101159674.png

2.获取曾经建立过发货的贴箱单-getLabels

注意:pageSize=5是事先向货品询问好某个shipmentId本次发货一共五个贴箱单。post

GetLabelsResponse labels = null;
try {
  labels = fbaInboundApi.getLabels("shipmentId", "PackageLabel_Letter_2", "BARCODE_2D", null, null, null, 5, null);
} catch (ApiException e) {
  e.printStackTrace();
}
System.out.println("DownloadURL = " + labels.getPayload().getDownloadURL());
复制代码

获取的结果以下:学习

image-20210624111847727.png

在有了第一步获取的信息以后,打算着手研究整套流程。

第2、完整流程

createInboundShipmentPlan-->createInboundShipment-->getLabels

Java建立-createInboundShipmentPlan

CreateInboundShipmentPlanRequest body = new CreateInboundShipmentPlanRequest();
Address address = new Address();
address.setName("your shop");
address.setAddressLine1("your address");
address.setDistrictOrCounty("your districtOrCounty");
address.setCity("your city");
address.setStateOrProvinceCode("your stateOrProvinceCode");
address.setCountryCode("your countryCode");
address.setPostalCode("your postalCode");
body.setShipFromAddress(address);
body.setLabelPrepPreference(LabelPrepPreference.SELLER_LABEL);
body.setShipToCountryCode("US");
body.setShipToCountrySubdivisionCode("US-CA");
InboundShipmentPlanRequestItemList list = new InboundShipmentPlanRequestItemList();
InboundShipmentPlanRequestItem inboundShipmentPlanRequestItem = new InboundShipmentPlanRequestItem();
inboundShipmentPlanRequestItem.setASIN("your asin");
inboundShipmentPlanRequestItem.setSellerSKU("your seller sku");
inboundShipmentPlanRequestItem.setCondition(Condition.NEWITEM);
inboundShipmentPlanRequestItem.setQuantity(1);
inboundShipmentPlanRequestItem.setQuantityInCase(1);
PrepDetailsList prepDetails = new PrepDetailsList();
PrepDetails details = new PrepDetails();
details.setPrepInstruction(PrepInstruction.LABELING);
details.setPrepOwner(PrepOwner.SELLER);
prepDetails.add(details);
inboundShipmentPlanRequestItem.setPrepDetailsList(prepDetails);
list.add(inboundShipmentPlanRequestItem);
body.setInboundShipmentPlanRequestItems(list);
CreateInboundShipmentPlanResponse shipmentPlan = null;
System.out.println("body = " + body);
try {
  shipmentPlan = fbaInboundApi.createInboundShipmentPlan(body);
} catch (ApiException e) {
  e.printStackTrace();
} finally {
  System.out.println("shipmentPlan.getErrors() = " + shipmentPlan.getErrors());
  System.out.println("shipmentPlan.getPayload() = " + shipmentPlan.getPayload());
}
复制代码

发起请求以后报错400,请求未经过。

image-20210624104400227.png

注:在仔细检查完参数以后再次尝试仍是失败,转战python以后相同的参数发送请求成功。因为笔者水平有限,一时无法解决这个问题。经过python最终获取到的贴箱单以下:

image-20210624112757493.png

跟第一步获取的贴箱单不同,同时也不知道经过fulfillment-inbound-api如何指定拼箱操做。但愿有大佬研究过这一块的指出错误,同时也欢迎你们相互交流学习。



PS:你们看了后以为对本身有帮助能够三连留言,欢迎提出宝贵意见,如想进行技术交流欢迎加入Amazon各种API开发交流群!请添加技术人员微信:x118422邀请进群~

相关文章
相关标签/搜索