生产级 Amazon Selling Partner API Go SDK
填补官方 SDK 空白,提供 Go 语言的完整 SP-API 实现。基于 Amazon SP-API 官方文档 和 Go 最佳实践开发。
当前版本: v1.3.0 | Go 要求: 1.25+ | 状态: ✅ 生产就绪
- 🎯 完整 API 支持 - 57 个 API 版本,314 个操作方法
- 🔐 完整的 LWA 认证 - 支持 Regular 和 Grantless 操作
- 🔄 智能令牌缓存 - 自动刷新和提前过期处理
- 🚦 速率限制 - 内置 Token Bucket 算法,支持动态更新
- 🔒 RDT 支持 - 处理受限数据访问
- 🔁 Go 1.25 迭代器 - 所有 27 个分页 API 支持自动分页迭代
- 🔓 自动解密 - Reports API 自动下载和解密加密报告
- 🌐 HTTP 中间件 - 可扩展的请求/响应处理
- ♻️ 自动重试 - 智能错误检测和重试逻辑
- 🤖 自动监控 - 每日自动检测官方 API 变更,确保 SDK 始终同步最新规范
- 🧪 高测试覆盖率 - 154+ 测试用例,所有核心模块已测试
- 📖 完整文档 - 中文注释和详细示例
- 🚀 生产就绪 - 所有代码已编译验证和测试
- 📚 基于官方规范 - 直接从 Amazon 官方 OpenAPI 规范自动生成代码
- ✅ 文档驱动 - 所有实现严格遵循官方 SP-API 文档
- 🐹 Go 惯用法 - 充分利用 Go 语言特性和社区最佳实践
- 🔒 类型安全 - 完整的类型定义和编译时检查
- 🧪 高质量 - 完整的测试覆盖和错误处理
- ⚡ Go 1.25 - 使用最新 Go 特性(迭代器、性能优化)
- 📊 OpenTelemetry - 分布式追踪,兼容 Jaeger/Zipkin
- 📈 Prometheus - 标准指标导出,Grafana 就绪
- 🔍 完整可观测性 - 日志 + 追踪 + 指标
- 🪵 结构化日志 - Zap 集成
- 🔌 熔断器 - Circuit Breaker 防止级联失败
- ⚡ JSON 优化 - 性能提升 3-5 倍
- 📦 大文件传输 - 流式上传/下载
- 🔁 自动分页迭代器 - 27 个 API 支持,代码减少 70%
- 🔓 自动报告解密 - AES-256-CBC 一键解密
- 🚀 生产级示例 - SQS 订单同步等
类型 | 文档 | 说明 |
---|---|---|
📘 API 参考 | pkg.go.dev | 完整 API 文档 |
📘 API 参考 | 本地查看 | GoDoc 使用指南 |
🚀 快速入门 | 示例代码 | 10+ 可运行示例 |
📖 功能指南 | 完整功能清单 | 38 项功能详解 |
📖 功能指南 | 分页迭代器 | Go 1.25 迭代器 |
📖 功能指南 | 报告解密 | AES-256 解密 |
📖 功能指南 | Grantless 操作 | 无需授权 API |
🏗️ 架构设计 | 系统架构 | 设计决策 |
👨💻 开发指南 | 开发规范 | 开发流程 |
🤝 贡献 | 贡献指南 | 如何提交 PR |
📌 官方文档: Amazon SP-API 文档
go get github.com/vanling1111/amazon-sp-api-go-sdk
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/vanling1111/amazon-sp-api-go-sdk/internal/models"
"github.com/vanling1111/amazon-sp-api-go-sdk/pkg/spapi"
orders "github.com/vanling1111/amazon-sp-api-go-sdk/pkg/spapi/orders-v0"
)
func main() {
// 1. 创建基础 SP-API 客户端
baseClient, err := spapi.NewClient(
spapi.WithRegion(models.RegionNA),
spapi.WithCredentials(
"your-client-id",
"your-client-secret",
"your-refresh-token",
),
)
if err != nil {
log.Fatal(err)
}
defer baseClient.Close()
// 2. 创建 Orders API 客户端
ordersClient := orders.NewClient(baseClient)
// 3. 调用 API 方法
ctx := context.Background()
params := map[string]string{
"MarketplaceIds": "ATVPDKIKX0DER",
"CreatedAfter": time.Now().Add(-7 * 24 * time.Hour).Format(time.RFC3339),
}
result, err := ordersClient.GetOrders(ctx, params)
if err != nil {
log.Fatal(err)
}
fmt.Println("订单获取成功:", result)
}
// 创建 Grantless 操作的客户端
client, err := spapi.NewClient(
spapi.WithRegion(models.RegionEU),
spapi.WithGrantlessCredentials(
"your-client-id",
"your-client-secret",
[]string{"sellingpartnerapi::notifications"},
),
)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// 使用客户端访问 Grantless API...
更多示例请查看 examples/ 目录。
本 SDK 完整支持 57 个 Amazon SP-API 版本,包括:
- 🛒 核心业务: Orders, Feeds, Reports, Catalog Items, Listings
- 📦 库存物流: FBA Inventory, Fulfillment, Merchant Fulfillment, Shipping
- 💰 定价财务: Product Pricing, Fees, Finances, Seller Wallet
- 📢 通知消息: Notifications, Messaging, Solicitations
- 🏭 Vendor API: Direct Fulfillment 全系列, Orders, Invoices, Shipments
- ⚡ 高级功能: A+ Content, Replenishment, AWD, Data Kiosk 等
📋 完整列表: pkg/spapi/ 目录 | 🤖 自动监控: 每日检测官方 API 更新
# 运行所有测试
go test ./...
# 运行测试并查看覆盖率
go test -cover ./...
核心模块测试覆盖率达到 92%+,所有测试持续通过。
# 克隆仓库
git clone https://github.com/vanling1111/amazon-sp-api-go-sdk.git
cd amazon-sp-api-go-sdk
# 运行测试
go test ./...
# 构建项目
go build ./...
# 代码检查(可选)
golangci-lint run
更多开发信息请参考 开发指南。
欢迎参与贡献!请参考以下文档:
- 📚 直接从官方 OpenAPI 规范生成,确保与 Amazon API 完全一致
- 🤖 每日自动监控 - GitHub Actions 每天自动检测官方 57 个 API 的 OpenAPI 规范变更
- 🔔 变更通知 - 检测到 API 变更时自动创建 GitHub Issue 提醒维护者
- 🔄 自动化工具链,可快速同步官方 API 更新
- 🧪 高测试覆盖率,核心模块达到 92%+
- 📖 完整的中文文档和示例代码
- Issues: 提交 Bug 或功能请求
- Discussions: 技术讨论和问答
- 官方文档: Amazon SP-API 文档
本项目采用双许可证模式:
✅ 适用于:
- 个人学习和研究
- 学术研究项目
- 开源项目
- 必须开源你的完整项目(AGPL-3.0)
- 包含原始版权声明
- 向所有用户提供源代码(包括网络用户)
✅ 适用于:
- 商业产品和服务
- SaaS/托管服务
- 企业内部使用
- 闭源软件集成
📧 获取商业许可:vanling1111@gmail.com
📄 详细条款: LICENSE | 📊 许可证对比: 见 LICENSE 文件
感谢所有贡献者的付出!
本项目是独立开发的 SDK,不隶属于 Amazon。使用本 SDK 时请遵守 Amazon Selling Partner API 使用协议。
本软件按"现状"提供,不提供任何明示或暗示的保证。使用本软件的风险由您自行承担。
关注本项目 ⭐ 以获取最新进展!
注意:请在使用前仔细阅读 LICENSE 文件,确保您的使用场景符合许可证要求。