场景

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

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

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

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

  2. 然后创建发货(createInboundShipment),

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

再了解到这些后我做了如下尝试

实操

准备工作

  • 亚马逊店铺账号
  • 开发者权限 如不会搭建开发者环境请点这里
  • 配置AWS认证 如不会配置AWS认证请点这里,完成6以前的操作就可以调用sp-api了

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

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());

获取的结果如下:

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

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

 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());

获取的结果如下:

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

第二、完整流程

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,请求未通过。

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

跟第一步获取的贴箱单不一样,同时也不知道通过fulfillment-inbound-api如何指定拼箱操作。希望有大佬研究过这一块的指出错误,同时也欢迎大家相互交流学习。

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

  1. 高德地图开发-常用api踩坑使用

    一.高德地图的加载初始化 在这就踩过很多坑,新建项目正常显示没问题,放到我们的项目就是不显示,加载不出来, 这个时候不要慌,只要确保下面三部完成就莫问题了 1.引入高德地图开发者api <scr ...

  2. node.js + Electron 调用 Windows API 踩坑日记

    前排提示:深坑,建议使用 C#.C++.VB 等方式 + 本地网络传输或进程管道通信替代. TOOLS 工具 Node.js(12.18.1) Electron(此处使用 ^2.0.0,因为 cef ...

  3. mongodb踩坑:复制集(尤其是单台服务器多个mongo服务的)服务节点挂载问题

    如果帮助了你,希望可以点赞.评论,你的点赞与评论是我最大的创作动力! 问题 我在一台服务器上开了3个mongo服务组成一个mongo的复制集,这也是网上常见的教授搭建复制集的方式.然后我再另一台服务器 ...

  4. Android获取不到运动步数(踩坑)

    Android获取不到运动步数(踩坑) 获取运动步数 某些手机获取不到步数 获取运动步数 使用SensorManager,也就是手机内置的传感器获取运动步数,通过该方法可获取到当前运动步数.开机后总运 ...

  5. 【100个 Unity踩坑小知识点】| Unity调用API ,动态获取Android权限,附带所有Android权限表格

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  6. 高德定位SDK踩坑-高精度模式下获取不到GPS定位(无网络环境)

    高德定位SDK踩坑-高精度模式下获取不到GPS定位(无网络环境) 关键字:定位模式 高精度模式 GPS定位 无网络 一句话描述问题:高精度模式在断网环境下不可靠.有几率重复报错或使用缓存定位,不使用G ...

  7. 让你在 API 设计中少踩坑的实战分享

    本文来自作者 奔跑吧架构师 在 GitChat 上分享 「让你在 API 设计中少踩坑的实战分享」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 在项目开发中,实际的编码只占用了整个项目不 ...

  8. 小程序实现语音识别歌曲的功能,对接讯飞的api,踩坑篇!!

    最近公司要求在小程序里实现识别搜索歌曲的功能,然后对接的是讯飞的api,本来我一个做前端的,对接第三方的文档这些应该留给后端做才对的,前端就上传一个录音给后端让他去调接口返回数据给我就好了.可是当我对 ...

  9. Android 获取短信验证码并自动填充(踩坑小米、荣耀、OPPO、华为)

    Android 获取短信验证码并自动填充(踩坑小米.荣耀.OPPO) 前言 最近弄了个短信自动填充功能,一开始觉得很简单,不就是动态注册个广播接收器去监听短信消息不就可以了吗?结果没这么简单,问题就出 ...

最新文章

  1. 【ACM】杭电OJ 2036(待更)
  2. 时隔两年,EfficientNet v2来了!更快,更小,更强!
  3. SystemTap工具的使用基础
  4. interp1 函数-------一维数据插值函数
  5. 百练OJ:1007:DNA排序
  6. nlp 中文停用词数据集
  7. qt按钮禁用和激活禁用_为什么试探法只是经验法则:禁用按钮的情况
  8. android签名忘记密码,修改Android签名证书keystore的密码、别名alias以及别名密码
  9. 面试官系统精讲Java源码及大厂真题 - 10 Map源码会问哪些面试题
  10. TeraData数据库,将Excel文件存入数据库并取出打开
  11. 常见错误:未能加载文件或程序集
  12. 扫地机器人滤网顺序_扫地机器人如何维护 扫地机器人维护技巧【介绍】
  13. 高考计算机专业最低分数线是多少,2021最低多少分可以稳上二本 高考二本分数线是多少...
  14. android控件的touch事件_Android touch 事件分发时序
  15. Debian 配置Bind9 DNS服务器
  16. HTML 基础之 学生信息表
  17. dbv mysql_mysql数据库版本控制dbv使用
  18. python 经典图书排行榜_书榜 | 计算机书籍(3.30-4.5)销售排行榜
  19. 同工作组计算机连接用户名和密码错误,登录失败: 未知的用户名或错误密码
  20. Java-微信授权and手机号授权

热门文章

  1. 3D模型【摩天大楼】
  2. linux 485串口运行一段时间之后 无反应,Supper tiny4412 用友善之臂官方文档资料移植uboot出错  出现OK后就没反应了 求大神解救...
  3. 新一代信息技术-大数据
  4. 一文读懂RS-232与RS-422及RS-485三者之间的特性与区别
  5. rs232 距离_一文读懂RS232、RS422、RS485三者之间的特性与区别
  6. sum-check protocol in zkproof
  7. 疫情何时结束?中国各城市首轮感染高峰期预测!(更新版)
  8. Mac电脑如何一键查看快捷键,进来看看
  9. Fenix — 比 MyBatis 更加强大的 Spring Data JPA 扩展库
  10. Cannot create __weak reference in file using manual refe