亚马逊 spapi — 生成 Java SDK

本文档详细介绍了如何使用SwaggerCodegen从selling-partner-api-models生成Java SDK,包括下载源码、配置依赖、解决编译问题以及最佳实践。通过生成的SDK,开发者可以方便地调用亚马逊SPAPI接口,实现与亚马逊平台的订单、履约、支付等功能的对接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这篇我们参考亚马逊提供的开发文档 Generating a Java SDK with LWA token exchange and authentication 来生成SPAPI(Amazon Selling Partner API)的 Java SKD,使用SDK可以调用SPAPI的相关接口,开发自己的应用对接亚马逊平台,实现订单、履约、支付等待功能。

selling-partner-api-models

Github - amzn/selling-partner-api-models 下载SPAPI源码。selling-partner-api-models/clients/ 目录下有API SDK(Application Programming Interface,Software Development Kit)共用的依赖,重点关注 sellingpartner-api-aa-java(认证授权模块)sellingpartner-api-documents-helper-java(API文档助手模块)。认证授权模块负责鉴权,现成的代码,只需要提供必要的参数;API文档助手模块提供了文档上传下载的代码,文档安全传输相关的加解密操作也是现成的,我们只需要使用里面现成的工具类即可,调用一些API的时候会用到。

image-20220526102935753

selling-partner-api-models/models/ 目录下是各模块的API配置文件(.json),这个在官网的开发文档也可以看到,比如 Sellers API v1 model。打开 Swagger Editor,将配置文件中的内容贴到左边的编辑框里可视化API定义的内容。

image-20220530105544978

image-20220530105704239

使用 Swagger Codegen 生成代码

我们下载 Swagger 代码生成器(Swagger Codegen),用于根据API配置文件生成SDK代码。

echo "下载 swagger-codegen-cli-2.4.13.jar 到 ~/IdeaProjects 目录下" > /dev/null
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O ~/IdeaProjects/swagger-codegen-cli.jar 

image-20220525175502272

以上面图中卖家账户接口的API配置(sellers.json)为例,我们使用Swagger Codegen Cli生成卖家账户接口的API SDK代码。

echo "使用 swagger-codegen-cli.jar 根据 Sellers.json 和 templates 目录中的代码模板生成 Java SDK 代码到 ~/IdeaProjects/spapi/sellers 目录下" > /dev/null
java -jar ~/IdeaProjects/swagger-codegen-cli.jar \
generate -i ~/IdeaProjects/selling-partner-api-models-main/models/sellers-api-model/Sellers.json \
-l java \
-t ~/IdeaProjects/selling-partner-api-models-main/clients/sellingpartner-api-aa-java/resources/swagger-codegen/templates/ \
-o ~/IdeaProjects/spapi/sellers

image-20220525173859808

API SDK代码结构

使用IDEA打开这个项目看下代码结构,可以按自己需求选择作为Maven或者Gradle项目打开,里面两种类型的配置文件都有。

/docs 目录下是接口相关的文档,内容比较简陋,不如直接看官网的文档,比如 Sellers API v1 reference

io.swagger.client.api 包下是API的入口类,里面定义了各个接口的调用方法,直接用就行。每个接口会定义多种方式,比如:以 Async 结尾的异步调用,需要实现回调接口;以 WithHttpInfo 结尾的方法会返回统一响应体 ApiResponse 等等。

image-20220602164954759

io.swagger.client.model 是这个模块的API特有的一些实体类,比如请求响应体。

io.swagger.client.auth 和下图红框中的对象是通用的,每个模块生成代码的时候都会有,我们将多个模块的代码合到一起的时候可以共用。

image-20220531195430439

添加API SDK需要的依赖

我们再回头看看 io.swagger.client.api 中的 SellerApi 会发现有依赖的类(比如:AWSAuthenticationCredentials)找不到,导致编译报错了,报错代码是生成的建造者模式(Builder)代码,设置鉴权相关的属性的。如果生成代码的时候,不通过下面这段脚本指定使用的模板,那就不会生成 Builder 代码,没有依赖报错。不过还是用模板比较好,因为最终调用接口的时候还是要设置鉴权相关属性的,用生成的 Builder 代码比较方便。

-t ~/IdeaProjects/selling-partner-api-models-main/clients/sellingpartner-api-aa-java/resources/swagger-codegen/templates/

报错的依赖都在 selling-partner-api-models/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/ 中。

通过打包配置依赖的方式解决

开发文档的例子 是将 sellingpartner-api-aa-java 模块打包生成依赖给API SDK使用,在IDEA的 Maven 窗口中,找到对应的 sellingpartnerapi-aa-java 模块,双击 install 安装这个依赖。

image-20220609173646604

然后在API SDK配置这个依赖,重新加载下报错就消失了。如果公司有自己的 Maven 仓库,还可以将这个发布到仓库中,这样就不需要每个人都在本地安装一遍了。

image-20220609174930177

将依赖代码复制到API SDK中

我们也可以将里面的类直接复制到API SDK中,因为都是一些简单的对象。

sellingpartner-api-aa-java 将 src 下连包带代码整个复制到API SDK中,并添加 sellingpartnerapi-aa-java 中需要的而这边没有的依赖,Maven 重新加载即可。

image-20220609175608101

最佳实践

以上是SDK生成的全部过程,这里我们再看下较为合理的实践方式。

先创建个项目,将 sellingpartnerapi-aa-javasellingpartner-api-documents-helper-java 两个模块整个复制到项目中。

然后创建子模块(比如:fruitbasket-amazon-spapi-models)用于存放生成的代码。

image-20220612215621563

我们将复制过来的 sellingpartnerapi-aa-javasellingpartner-api-documents-helper-java 作为依赖配置到子模块中(如下图红框)。

然后将我们生成的代码复制到子模块中。黄色框外是通用的代码,复制一份进来就可以了;黄色框中是根据不同模块的API配置文件(.json)生成的,我们适当的分下包。

image-20220612221010310

最后只需要将生成的代码中的依赖配置文件指定的依赖添加到这个子模块的配置文件中,有很多依赖其实已经在 sellingpartnerapi-aa-javasellingpartner-api-documents-helper-java 中有配置,可以省略。

另外生成的代码都在 io.swagger.client 包下,可以根据自己的需求改这个包名,复制代码进来的时候跟着改下即可。

image-20220612222232617

到此本文的内容都已分享完毕,祝大家顺利。

### 亚马逊 FBA API 接入方法及使用教程 亚马逊 Fulfillment by Amazon (FBA) 是一种服务,允许卖家将其库存储存在亚马逊的配送中心,并由亚马逊负责订单履行、客户服务和退货管理。为了实现自动化管理和数据分析,开发者可以通过亚马逊 SP-API 访问 FBA 的功能。 #### 一、准备工作 在接入亚马逊 FBA API 前,需要完成以下准备事项: 1. **注册开发者账户** 开发者需先申请成为亚马逊 MWS 或 SP-API 的认证开发者[^1]。 2. **获取必要的凭证** 需要收集以下信息用于身份验证和授权: - 卖家 ID (`sellerId`) - 应用程序客户端 ID (`clientId`) 和秘密密钥 (`clientSecret`) - AWS Access Key ID 和 Secret Access Key - Role ARN(如果适用) 3. **安装 SDK 工具包** 使用官方提供的 `Amazon-SP-API-SDK` 来简化开发流程。该 SDK 支持多种编程语言,包括 Python、Java、PHP 等。 #### 二、API 请求流程 以下是完整的请求流程说明: 1. **设置参数** 定义访问所需的参数,例如时间范围、操作类型等。这些参数通常作为查询字符串附加到 URL 中[^2]。 2. **生成签名** 根据亚马逊的安全协议,每次请求都需要计算 HMAC-SHA256 数字签名以确保安全性。此步骤可通过 SDK 自动完成。 3. **发起 HTTP 请求** 构建带有适当头部字段的 GET/POST 请求,并向指定端点发送数据。例如,在 PHP 中可利用 cURL 执行网络通信[^3]。 4. **解析返回结果** 成功接收服务器反馈后,依据所选格式(JSON/XML)提取有用的信息进行后续处理。 #### 三、代码示例 下面展示一段基于 Python 实现的简单脚本片段来调用某个假定的功能模块——假设我们想检索特定时间段内的销售报告摘要: ```python import boto3 from sp_api.api import Reports from sp_api.base.reportTypes import ReportType # 初始化会话配置对象 session_config = { 'refresh_token': '<your_refresh_token>', 'lwa_app_id': '<your_lwa_app_id>', 'lwa_client_secret': '<your_lwa_client_secret>', 'aws_access_key': '<your_aws_access_key>', 'aws_secret_key': '<your_aws_secret_key>', 'role_arn': '<optional_role_arn>' } report_api_instance = Reports(**session_config) def create_and_download_sales_report(): try: # 创建新的销售业绩报表实例 report_response = report_api_instance.create_report( reportType=ReportType.GET_FBA_SALES_RETURN_DATA, dataStartTime='2023-09-01T00:00:00Z', dataEndTime='2023-09-30T23:59:59Z' ) print(f"Report creation status code:{report_response.payload.get('status')}") # 下载已完成生成的文件资源链接... except Exception as e: print(e) ``` 以上仅为示意性质;实际应用时可能还需要考虑错误重试机制以及异步通知监听等功能扩展[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有八千部下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值