# 销售伙伴API开发者指南
# 内容
# 关于本指南
本指南是为那些想为销售伙伴创建应用程序的开发者准备的。也就是说,为卖家、供应商或两者的应用程序。本指南中仅适用于卖家应用的部分被标记为:仅适用于卖家应用。仅适用于供应商申请的部分被标记为:仅适用于供应商申请。所有其他章节适用于所有销售伙伴的申请。
# 术语
**销售伙伴。**销售伙伴可以是卖方或供应商。
**卖家。**卖家在亚马逊的零售网站上列出并销售自己的商品。商品售出后,要么(1)由卖家直接使用卖家管理的库存进行履行,要么(2)通过亚马逊履行(FBA)计划,使用卖家的FBA库存进行履行。
**供应商。**供应商提供由亚马逊在亚马逊零售网站上销售的库存。有两种主要类型的供应商。零售采购供应商和直接履行供应商。
**零售采购供应商。**零售采购供应商向亚马逊出售库存,并将其运送到亚马逊的履行中心。然后,亚马逊将库存出售并运送给在亚马逊零售网站上购物的客户。零售采购商可以是一个品牌所有者或经销商。在某些情况下,他们管理他们提供给亚马逊的产品的清单。
**直接履行供应商。**直接履行供应商代表亚马逊向客户发送订单。客户在亚马逊的零售网站上购买产品后,直接履行供应商将订单直接运送给客户。
**公共应用。**一个公开的、由销售伙伴授权的应用。
**私人应用。**只有你的组织可以使用,并且是自我授权的应用。
# 什么是销售伙伴API?
销售伙伴API是一个基于REST的API,帮助亚马逊销售伙伴以编程方式访问其订单、发货、付款等数据。使用销售伙伴API的应用程序可以提高销售效率,减少劳动力需求,并改善对客户的响应时间,帮助销售伙伴发展其业务。
# 主要特点
通过销售伙伴API,你可以。
设置一个OAuth授权工作流程,让销售伙伴从亚马逊卖家中心合作伙伴网络详情页或自己的网站上启动。
生成一个SDK,可以帮助您进行LWA令牌交换和认证。
通过调用沙盒环境来测试你的应用程序。
# 全球应用
您只需在您选择的地区和市场中注册一次开发者,就能创建一个销售伙伴API应用程序,该应用程序可由来自任何地区或市场的销售伙伴授权。您只需要一套开发者凭证(您的AWS访问密钥ID和AWS秘密访问密钥)就可以对任何销售伙伴API端点进行调用,只要该端点与授权您的应用程序的销售伙伴在同一地区。
**仅适用于卖方应用程序。**如果您有一个混合销售伙伴API应用程序,您对亚马逊市场网络服务(Amazon MWS)端点的调用具有与亚马逊MWS应用程序相同的限制。也就是说,当您调用亚马逊MWS端点时,您必须使用与该端点来自的区域相关的亚马逊MWS访问密钥。
欲了解更多信息,请参阅销售伙伴API端点。
#销售伙伴API端点
销售伙伴API端点与一个特定的AWS区域相关。AWS区域很重要,因为它是凭证范围的一部分,在调用销售伙伴API时需要计算签名。欲了解更多信息,请参阅凭证范围。
销售区域 | 端点 | AWS地区 |
---|---|---|
北美(加拿大、美国、墨西哥和巴西市场)。 | https://sellingpartnerapi-na.amazon.com | us-east-1 |
欧洲(西班牙、英国、法国、荷兰、德国、意大利、瑞典、波兰、埃及、土耳其、阿拉伯联合酋长国和印度市场)。 | https://sellingpartnerapi-eu.amazon.com | eu-west-1 |
远东(新加坡、澳大利亚和日本市场)。 | https://sellingpartnerapi-fe.amazon.com | us-west-2 |
# marketplaceId值
marketplaceId
标识了请求中的市场。
北美*
国家 | marketplaceId | 国家代码 |
---|---|---|
加拿大 | A2EUQ1WTGCTBG2 | CA |
美国 | ATVPDKIKX0DER | US |
墨西哥 | A1AM78C64UM0Y8 | MX |
巴西 | A2Q3Y263D00KWC | BR |
欧洲
国家 | marketplaceId | 国家代码 |
---|---|---|
西班牙 | A1RKKUPIHCS9HS | ES |
英国 | A1F83G8C2ARO7P | GB |
法国 | A13V1IB3VIYZZH | FR |
荷兰 | A1805IZSGTT6HS | NL |
德国 | A1PA6795UKMFR9 | DE |
意大利 | APJ6JRA9NG5V4 | IT |
瑞典 | A2NODRKZP88ZB9 | SE |
波兰 | A1C3SOZRARQ6R3 | PL |
埃及 | ARBP9OOSHTCHU | EG |
土耳其 | A33AVAJ2PDY3EV | TR |
沙特阿拉伯 | A17E79C6D8DWNP | SA |
阿拉伯联合酋长国 | A2VIGQ35RCS4UG | AE |
印度 | A21TJRUUN4KGV | IN |
**远东
国家 | marketplaceId | 国家代码 |
---|---|---|
新加坡 | A19VAU5U5O7RUS | SG |
澳大利亚 | A39IBJ37TRP1C6 | AU |
日本 | A1VC38T7YXB528 | JP |
# 注册为开发者
在你注册你的销售伙伴API应用程序之前,你必须注册为销售伙伴API开发者。你注册为开发者的方式根据你创建的应用程序的类型而略有不同。为了注册成为开发者,应用程序被分为三种类型。
**所有公开的应用程序。**公开的、由卖方或供应商授权的应用程序。
**私人卖家应用。**卖家的应用,只对你的组织可用,并且是自我授权的。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
欲了解更多信息,请参阅术语。
下面的程序告诉你如何注册为开发者,这取决于你想创建的应用程序的类型。
注册为开发者(适用于所有公共应用程序)。
使用你想与你的开发者账户相关联的凭证,登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
3.如果你还没有为这个销售账户完成一个开发者配置文件,请点击继续开发者配置文件按钮。否则点击你的开发者资料链接。
4.完成该表格。在数据访问部分,在下拉框中,选择我的组织建立和提供公开可用的应用程序。
要注册为开发者(用于私人卖家的应用程序)。
使用你想与你的开发者账户相关联的凭证,登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
3.如果你还没有为这个销售账户完成一个开发者配置文件,请点击继续开发者配置文件按钮。否则点击你的开发者资料链接。
4.完成该表格。在数据访问部分,在下拉框中,选择我的组织在亚马逊上销售,我只想集成管理我自己的业务。
要注册为开发人员(用于私人供应商应用)。
进入你的市场的供应商中心。参见Vendor Central URLs以获得按市场划分的URLs列表。
- 使用Vendor Central账户的凭证登录,该账户具有你想让你的应用程序访问的供应商组。
关于供应商组的更多信息,请参阅关于供应商组。
在集成菜单中,点击API集成。
出现开发者中心页面。
4.如果你还没有为这个供应商账户完成一个开发者配置文件,请点击继续进行开发者配置文件按钮。否则点击你的开发者资料链接。
5.完成该表格。在数据访问部分,在下拉框中,选择我的组织在亚马逊上销售,我只想集成管理我自己的业务。
欲了解更多信息,请参阅术语。
# 检查你的注册为开发者的请求的状态
在你提交了注册为开发者的请求后,亚马逊会评估所提供的信息并批准或拒绝你的请求。如果被拒绝,你可以解决拒绝的原因,然后重新提交你的开发者资料。您检查请求状态的方式根据应用程序的类型略有不同。为了检查您注册为开发人员的请求的状态,申请被分为两种类型。
**所有公开的申请和私人卖家申请。**这些是。(1)公开的、由卖方或供应商授权的应用程序,以及(2)仅对你的组织可用的、自我授权的卖方应用程序。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
欲了解更多信息,请参见术语。
下面的程序告诉你如何根据你想创建的应用程序的类型,检查你注册为开发者的请求的状态。
要检查你的申请状态(对于所有公开的应用程序和私人卖家的应用程序)
用你在注册为开发者时使用的凭证登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
3.按照你的开发者注册正在审查中横幅上的指示。该横幅将改变以反映你的申请的状态。
检查你的申请状态(对于私人供应商的申请) 1.
用你注册为开发者时使用的凭证登录供应商中心。
在集成菜单中,点击API集成。
出现开发者中心的页面。
按照你的开发者注册正在审查中横幅上的指示。该横幅将改变以反映你的应用程序的状态。
在我们将你注册为开发者后,你可以创建和配置IAM策略和实体。要查看你的开发者信息,请参阅查看你的应用程序信息和证书。
# 创建和配置IAM策略和实体
下面的步骤解释了如何创建和配置IAM策略和实体,最终目的是创建一个IAM角色,你在注册你的应用程序时提供。在这个工作流程中,你创建了一个IAM用户(附加了AWS STS (opens new window)策略),该用户承担了一个IAM角色,该角色具有调用Selling Partner API的权限。
步骤
# 步骤1. 创建一个AWS账户
你需要一个AWS账户,因为Selling Partner API安全模型使用AWS认证凭证。如果你还不是AWS客户,你可以创建一个免费的AWS账户。欲了解更多信息,请参阅[AWS免费层](https://aws.amazon.com/free)。
# 第2步. 创建一个IAM用户
创建一个IAM用户,以获得AWS密钥来验证对销售伙伴API的调用。我们建议专门为此目的创建一个新的IAM用户。使用IAM用户来承担您在步骤4.创建IAM角色中创建的IAM角色。
要创建一个IAM用户
如果你还没有登录,请登录AWS管理控制台,并在console.aws.amazon.com/iam (opens new window)打开IAM控制台。
在左侧的导航窗格中,单击用户,然后单击添加用户按钮。
- 为新用户输入一个用户名。
- 选择程序性访问,然后点击下一步。权限按钮。
在设置权限页面,接受默认值并点击**下一步。标签。**你将在[创建IAM角色](#step-4-create-an-iam-role)时设置权限。
在添加标签(可选)页面,如果你想要的话,添加可选标签,然后点击下一步。审查按钮。
在审查页,审查你所做的选择。你可以忽略这个用户没有权限的警告。你将在[创建IAM角色](#step-4-create-an-iam-role)时设置权限。当你准备好进行时,点击创建用户按钮。
你的新IAM用户的AWS访问密钥ID将被显示。
单击显示以查看AWS秘密访问密钥。要保存AWS访问密钥,请点击下载.csv,然后将文件保存到一个安全的位置。
**重要的是:**这是你查看或下载AWS秘密访问密钥的唯一机会,你将需要它来验证你对销售伙伴API的调用。将AWS访问密钥ID和AWS秘密访问密钥保存在一个安全的地方。**在此步骤之后,您将无法再次访问AWS访问密钥。**如果您丢失了AWS秘密访问密钥,您将需要创建一个新的IAM用户,并拥有其自己的新密钥集。
点击关闭。
在用户名称栏,点击你的新IAM用户,并记下用户ARN。你将在步骤4.创建IAM角色中需要它。
欲了解更多信息,请参阅AWS文档中的在您的AWS帐户中创建IAM用户 (opens new window)。
# 第三步. 创建一个IAM策略
这个IAM策略定义了对销售伙伴API进行调用的权限。您将把它附加到您在步骤4.创建IAM角色中创建的IAM角色。
要创建IAM策略
登录AWS管理控制台,在console.aws.amazon.com/iam (opens new window)打开IAM控制台。
在左侧的导航窗格中,单击政策。
如果这是你第一次选择政策,会出现欢迎来到管理政策页面。点击开始**。
点击创建策略按钮。
点击JSON标签。
将以下代码粘贴到文本框中,替换现有代码,然后点击审查策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:*:*:*"
}
]
}
2
3
4
5
6
7
8
9
10
11
在审查策略页,为你正在创建的策略输入一个名称和一个描述(可选)。我们建议将你的IAM策略命名为 "SellingPartnerAPI"。
7.查看策略的摘要,看看你的策略所授予的权限,然后点击创建策略按钮。
你的新IAM策略会出现在列表中。
欲了解更多信息,请参阅AWS文档中的创建IAM策略 (opens new window)。
# 第4步. 创建一个IAM角色
创建一个IAM角色,信任你在步骤2.创建IAM用户中创建的IAM用户,并拥有调用Selling Partner API的权限。
要创建一个IAM角色
如果你还没有登录,请登录AWS管理控制台,并在console.aws.amazon.com/iam (opens new window)打开IAM控制台。
在左侧的导航窗格中,单击角色,然后单击创建角色按钮。
在创建角色页面,单击另一个AWS帐户。
在账户ID框中,输入你在步骤2.创建IAM用户中创建IAM用户的AWS账户的账户标识符,然后单击下一步。权限按钮。
- 在附加权限策略页面,在策略名称下,选择你在步骤3.创建IAM策略中创建的策略,然后点击下一步。标签。
提示:点击过滤策略,然后选择客户管理来缩小选择范围。
在添加标签(可选)页面上,如果你想添加可选标签,就添加这些标签,然后点击下一步。审查按钮。
在创建角色页面,在角色名称框中输入一个角色名称,在角色描述框中输入一个可选的角色描述,然后点击创建角色按钮。
在角色名称下,单击新角色的名称。
出现摘要页
保存你的角色ARN。你将需要它。
当你注册你的应用程序时。
在 [Step 5. Add an AWS Security Token Service policy to your IAM user](#step-5-Add-an-AWS-Security-Token-Service-policy to-your-IAM-user)。
欲了解更多信息,请参阅AWS文档中的创建一个角色以将权限委托给IAM用户 (opens new window)。
# 步骤5. 为您的IAM用户添加AWS安全令牌服务策略
将AWS安全令牌服务(AWS STS) (opens new window)策略添加到您的IAM用户中,使您能够请求临时的AWS访问密钥,您可以用它来验证您对销售伙伴API的请求。这些凭证在设定的时间段后过期,帮助您控制对AWS资源的访问。
如果您还没有登录,请登录AWS管理控制台,并在console.aws.amazon.com/iam (opens new window)打开IAM控制台。
在左侧的导航窗格中,单击用户,然后单击您要向其添加AWS STS策略的用户。在这个工作流程中,选择你在步骤2.创建一个IAM用户中创建的用户。你可能会为其他用例选择一个不同的IAM用户。
在权限标签上,点击添加内联策略。
在创建策略页面,点击选择一个服务。
点击STS服务。
提示:在搜索框中输入STS以缩小选择范围。
点击写旁边的箭头来展开它。
- 选择AssumeRole。
点击资源旁边的箭头展开,然后点击添加********。
9.在添加ARN(s)对话框中,在为角色指定ARN框中输入步骤4.创建IAM角色中的角色ARN,单击添加,然后单击审查策略按钮。
在审查政策页面,在名称框中输入你的政策名称。审查你所做的选择。如果你准备好了,点击创建政策按钮。
# 注册你的应用程序
在你注册你的应用程序之前,[创建和配置你的IAM策略和实体](#Creating-and-configuring-IAM-policies and-entities)。注册应用程序的方式根据应用程序的类型而略有不同。为了注册你的应用程序,应用程序被分组为两种类型。
**所有公开申请和私人卖家申请。**这些是。(1)公开的、由卖方或供应商授权的应用,以及(2)仅对你的组织可用的、自我授权的卖方应用。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
欲了解更多信息,请参阅术语。
下面的程序告诉你如何注册你的应用程序,这取决于应用程序的类型。
注册你的申请(适用于所有公开申请和私人卖家申请)
使用你用来注册为开发者的凭证,登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
点击添加新的应用程序客户端按钮。
出现应用程序注册页面。
- 完成表格。
注意:如果你注册的是公共应用,在你选择API类型后会出现一个卖家复选框和一个卖家复选框。选择卖家、卖家或两者,取决于你的应用所针对的销售伙伴类型。你可以申请的角色列表根据你的选择而不同。
要注册你的申请(对于私人供应商申请)
用你用来注册为开发者的凭证,登录供应商中心。
在集成菜单中,点击API集成。
出现开发者中心页面。
点击添加新的应用程序客户端按钮。
出现应用程序注册页面。
- 完成表格。
**重要的是,**当注册您的应用程序时,您提供的IAM ARN必须是您从步骤3.创建IAM策略附加到IAM实体的。在这个工作流程中,该IAM实体是来自步骤4.创建IAM角色的IAM角色。如果你使用你的IAM用户注册你的应用程序,请确保IAM策略被附加到它。否则你对销售伙伴API的调用将会失败。我们建议使用IAM角色注册您的应用程序,如该工作流程所示,以帮助您更好地控制对AWS资源的访问。
# 更新您的应用程序信息
在你注册你的应用程序之后,你可能会发现你后来想要更新你的应用程序信息。例如,你可能想改变与你的应用程序相关的IAM ARN或添加另一个OAuth重定向URI。
**注意:**当你为你的应用程序更新IAM ARN时,旧的IAM ARN和新的IAM ARN都会在14天内有效。这让你有时间为新的IAM ARN更新你的授权工作流程。14天后,旧的IAM ARN将过期。
你更新你的应用程序信息的方式根据应用程序的类型略有不同。为了更新你的申请信息,申请被分为两种类型。
**所有公开申请和私人卖家申请。**这些是。(1)公开的、由卖方或供应商授权的应用程序,以及(2)仅对您的组织可用、自我授权的卖方应用程序。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
欲了解更多信息,请参阅术语。
要更新你的申请信息(对于所有公共申请和私人卖家申请)
使用你用来注册为开发者的凭证登录卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
3.点击你想更新信息的应用程序旁边的编辑应用程序按钮。
出现应用程序注册页面。
4.编辑你要更新的页面上的值,然后点击保存并退出。
更新您的申请信息(针对私人供应商申请) 1.
用你用来注册为开发者的凭证登录供应商中心。
在集成菜单中,点击API集成。
出现开发者中心页面。
3.点击你想更新信息的应用旁边的编辑应用按钮。
出现应用程序注册页面。
4.编辑你要更新的页面上的值,然后点击保存并退出。
# 查看你的应用程序信息和证书
在你注册你的应用之后,你可以查看你的应用信息,以及你的亚马逊登录(LWA)凭证。你查看这些信息的方式因应用类型的不同而略有不同。为了查看您的申请信息和凭证,申请被分为两种类型。
**所有公共应用和私人卖家应用。**这些是。(1)公开的、由卖方或供应商授权的应用程序,以及(2)只对你的组织可用的、自我授权的卖方应用程序。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
更多信息,请参阅术语。
下面的程序告诉你如何根据应用类型查看你的应用信息和证书。
查看您的申请信息和证书(适用于私人卖家申请和任何类型销售伙伴的公开申请)
使用你用来注册为开发者的凭证,登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
开发者中心**页面显示关于你的应用程序的信息,包括与它们相关的IAM ARN。
3.点击LWA证书下的查看**你想要的应用程序。
你的LWA客户标识符和该应用程序的客户秘密就会出现。你将需要这些凭证来申请LWA访问令牌。欲了解更多信息,请参阅步骤1.请求使用亚马逊访问令牌登录。
查看您的应用信息和证书(针对私人供应商应用)。
用你在注册为开发者时使用的凭证登录供应商中心。
在集成菜单中,点击API集成。
在开发者中心页面显示关于你的应用程序的信息,包括与它们相关的IAM ARN。
3.点击查看下的LWA凭证,查看你想要的应用程序。
你的LWA客户标识符和该应用程序的客户秘密就会出现。你将需要这些凭证来申请LWA访问令牌。欲了解更多信息,请参阅步骤1.请求使用亚马逊访问令牌登录。
#授权销售伙伴API应用程序
销售伙伴API的授权模式是基于Login with Amazon (opens new window),即亚马逊的OAuth 2.0的实现。在这个模型中,销售伙伴通过与亚马逊和你的网站显示的页面互动来授权你的应用程序。销售伙伴采取的行动会触发你的网站或亚马逊的回应。销售伙伴的浏览器是用户代理,在您的网站和亚马逊之间的每个销售伙伴行动中传递参数。为了实现OAuth授权,你必须将你的网站配置为:(1)接受并处理亚马逊传递给它的参数,以及(2)重定向销售伙伴的浏览器并将参数传递给亚马逊。
# 我的应用程序是如何被授权的?
你的应用程序的授权方式取决于应用程序的类型。以下是按授权方式分组的应用程序类型。
**卖家的公共应用。**公开的、由卖家授权的应用。这些应用程序可以使用以下方法进行授权。
- Amazon Seller Central Partner Network authorization workflow. 从Amazon Seller Central Partner Network详情页发起的OAuth授权工作流程。
- 网站授权工作流程。 一个从你自己的网站发起的OAuth授权工作流程。
**供应商的公共应用程序。**公开的应用程序,并由供应商授权。这些应用程序可以使用以下方法进行授权。
- 网站授权工作流程。](#Website-authorization-workflow) 一个从你自己的网站发起的OAuth授权工作流程。
**卖家或供应商的私人应用程序。**只对你的组织可用的应用程序。这些可以是卖家或供应商的应用程序。这些应用程序可以使用以下方法进行授权。
- Self authorization. 一个自我授权程序。
**注意。**你可以在没有销售伙伴明确授权的情况下调用[无授权操作](#无授权操作)。
欲了解更多信息,请参阅术语。
##构建一个OAuth授权URI
OAuth授权URI是创建和测试销售伙伴API授权工作流程的一个关键组成部分。OAuth授权URI会将浏览器重定向到亚马逊的同意页面,在那里,销售伙伴可以同意你的应用程序代表他们对销售伙伴API进行调用。如果销售伙伴没有登录到Seller Central(针对卖家)或Vendor Central(针对供应商),首先会出现一个登录页面。
如果销售伙伴从你自己的网站开始授权你的应用程序(网站授权工作流程),你的网站会使用一个OAuth授权URI,将销售伙伴重定向到亚马逊同意页面。即使销售伙伴从亚马逊卖家中心合作伙伴网络开始授权你的应用程序(亚马逊卖家中心合作伙伴网络授权工作流程),你仍然需要一个OAuth授权URI来测试你的授权工作流程的草稿状态,然后在亚马逊卖家中心合作伙伴网络中创建一个实时列表。
为了构建一个OAuth授权URI,应用程序被分为两种类型。
**所有公共应用和私人卖家应用。**这可以是:(1)公开的、由卖家或供应商授权的应用,以及(2)只对你的组织可用的、自我授权的卖家应用。
**私人卖家应用。**只对你的组织可用,并且是自我授权的卖家应用。
欲了解更多信息,请参阅术语。
下面的程序告诉你如何根据应用程序的类型来构建OAuth授权URI。
构建一个OAuth授权URI(适用于所有公共应用和私人卖家应用)。
获取你希望销售伙伴授权你的应用程序的市场的卖方中心URL。参见卖方中心URLs以获得按市场划分的URLs列表。例如:
https://sellercentral.amazon.com
。将卖方中心的URL与
/apps/authorize/consent?application_id={你的应用ID}
结合起来。例如:
https://sellercentral.amazon.com/apps/authorize/consent?application_id=amzn1.sellerapps.app.0bf296b5-36a6-4942-a13e-EXAMPLEfcd28
。
构建一个OAuth授权URI(用于私人供应商应用)。
获取你希望销售伙伴授权你的应用程序的市场的供应商中心URL。参见供应商中心URLs,以获得按市场划分的URLs列表。例如:
https://vendorcentral.amazon.com
。将供应商中心的URL与`/apps/authorize/consent?{你的应用ID}'结合起来。
例如:
https://vendorcentral.amazon.com/apps/authorize/consent?application_id=amzn1.sellerapps.app.0bf296b5-36a6-4942-a13e-EXAMPLEfcd28
。
你需要为销售伙伴将授权你的应用程序的市场构建OAuth授权URI。例如,如果卖家有一个墨西哥的Seller Central账户,他们将需要一个墨西哥的OAuth授权URI(例如:https://sellercentral.amazon.com.mx/apps/authorize/consent?application_id=amzn1.sellerapps.app.0bf296b5-36a6-4942-a13e-EXAMPLEfcd28
)来启动对你应用程序的授权。授权是区域性的,所以当授权完成后,你的应用程序将可以访问北美地区任何市场上的卖方账户。同样的概念也适用于使用Vendor Central的供应商。
如果你正在创建一个OAuth授权URI来测试你的授权工作流程,请添加版本=beta参数。这表明该授权工作流程是针对处于草案状态的应用程序。例如:https://sellercentral-europe.amazon.com/apps/authorize/consent?application_id=amzn1.sellerapps.app.0bf296b5-36a6-4942-a13e-EXAMPLEfcd28&version=beta
。
关于创建和测试授权工作流的信息,请参见Amazon Seller Central Partner Network authorization workflow和网站授权工作流。
##从亚马逊市场网络服务迁移授权
仅适用于卖家应用。
如果卖家已经授权你代表他们调用亚马逊市场网络服务,你可以使用授权API将该授权迁移到混合销售伙伴API应用程序。这样就不需要为你的混合SP-API应用程序向该卖家请求授权。
**注意。**混合SP-API应用程序的授权在一年后过期。请务必让你的销售伙伴在他们的授权过期前每年重新授权你的SP-API混合应用。
欲了解更多信息,请参阅授权API使用案例指南 (opens new window)。
# 亚马逊卖家中心合作伙伴网络授权工作流程
仅适用于卖家应用
亚马逊卖家中心合作伙伴网络(Amazon SCPN)授权工作流程是一个OAuth授权工作流程,销售伙伴从亚马逊SCPN详细页面启动。当您在亚马逊SCPN上列出一个销售伙伴API应用时,销售伙伴可以通过点击详细页面上的授权现在按钮来授权您的应用。
测试你的授权工作流程
在亚马逊SCPN上列出你的应用之前,你应该在你的应用处于草稿状态时测试你的授权工作流程。你的测试工作流程不会与最终的生产工作流程完全相同,但你将能够确保你的应用程序能够与亚马逊交换参数并接收授权信息。
建立一个测试授权工作流程*。
确保你的应用程序处于草稿状态。
构建一个或多个OAuth授权URI用于测试。在OAuth URI中包含
version=beta
参数,以表明该工作流程是用于授权处于草稿状态的应用程序。欲了解更多信息,请参阅构建OAuth授权URI。3.在步骤3.销售伙伴签入你的网站,确保你的工作流在亚马逊回调URI中添加
version=beta
参数,以表明该工作流是用于授权处于草稿状态的应用程序。
现在你已经准备好与一个值得信赖的销售伙伴一起测试你的授权工作流程了。另外,你也可以使用你自己的销售账户凭证来测试工作流程。而不是从【步骤1】开始。销售伙伴从亚马逊卖家中心合作伙伴网络发起授权](#step-1-the-selling-partner-initiates-authorization-from-the-amazon-seller-central-partner-network),销售伙伴通过导航到你之前构建的OAuth授权URI开始测试工作流程。
**注意:**如果你有一个以上的区域OAuth授权URI,一定要给销售伙伴与他们经营的区域相对应的OAuth授权URI。
当你完成测试授权工作流程后,你可以将其转换为生产工作流程。
要将你的测试授权工作流程转换为生产工作流程。
在Amazon SCPN中列出你的应用程序。这将使你的应用程序从草稿状态变为发布状态。
2.更新你的工作流程,使其不再在步骤3.销售伙伴登录你的网站中向亚马逊回调URI添加
version=beta
参数。现在,任何销售伙伴都可以从[第1步]开始授权你发布的应用程序。销售伙伴从亚马逊卖家中心合作伙伴网络发起授权](#step-1-the-selling-partner-initiates-authorization-from-the-amazon-seller-central-partner-network) 。
步骤
[第四步,亚马逊向您发送授权信息](#step-4-amazon-sends-you-the authorization-information)
# 步骤1. 销售伙伴从亚马逊卖方中心合作伙伴网络发起授权
销售伙伴登录Seller Central,并进入亚马逊Seller Central合作伙伴网络(Amazon SCPN)。
2.销售伙伴进入您的应用程序的详细页面,点击立即授权按钮。出现您的申请的同意页面。
# 步骤2。销售伙伴同意授权您的申请
销售伙伴查看同意页面,审查并接受您的应用程序所要求的数据访问,然后点击登录到[您的应用程序名称],现在按钮继续。销售伙伴可以点击取消按钮,退出而不进行授权。
亚马逊将您的登录URI(您在应用注册时提供的)加载到浏览器中,添加以下查询参数。
参数 | 描述 |
---|---|
amazon_callback_uri | 一个用于将浏览器重定向到亚马逊的URI。 |
amazon_state | 一个由亚马逊生成的状态值,用于防范跨站请求伪造攻击。 |
selling_partner_id | 授权你的应用程序的销售伙伴的标识符。 |
**注意:**如果这是一个测试工作流程(销售伙伴通过导航到你的OAuth授权URI开始),亚马逊包括version=beta
参数。如果这是一个生产工作流程(销售伙伴从亚马逊SCPN开始),亚马逊不包括该参数。
比如说。
https://d2yzyfnnpjylxu.cloudfront.net/index.html?amazon_callback_uri=https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57&amazon_state=amazonstateexample&selling_partner_id=A3FHEXAMPLEYWS
你的网站的登录页面出现。
# 第三步。销售伙伴签入你的网站
销售伙伴登录你的网站。如果销售伙伴还没有账户,他们将完成您的注册程序。
你的应用程序将亚马逊的回调URI(在上一步中由亚马逊传递)加载到浏览器中,加入以下参数。
参数 | 描述 |
---|---|
redirect_uri | 一个URI,用于将浏览器重定向到你的应用程序。这必须是您在注册您的应用程序时指定的OAuth重定向URI。如果你不包括redirect_uri参数,默认是你在注册你的应用程序时指定的第一个OAuth重定向URI. 可选 |
amazon_state | 亚马逊在上一步传递的amazon_state 值。 |
state | 一个由你的应用程序生成的状态值。你的应用程序使用这个值来维护这个请求和响应之间的状态,有助于防范跨站请求伪造攻击。 重要的是:由于OAuth信息是通过URI查询参数传递的,我们强烈建议你做到以下几点。(1) 确保状态令牌是短暂的,并且对你的用户来说是独一无二的,以及(2) 设置 |
**注意:**如果你包括version=beta
参数,工作流就会授权一个处于草稿状态的应用程序。如果你不包括这个参数,工作流程将授权一个在Amazon Seller Central Partner Network上发布的应用程序。
比如说。
https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57?redirect_uri=https://d2yzyfnnpjylxu.cloudfront.net/landing.html&amazon_state=amazonstateexample&state=-37131022&version=beta
或者
https://amazon.com/apps/authorize/confirm/amzn1.sellerapps.app.2eca283f-9f5a-4d13-b16c-474EXAMPLE57?redirect_uri=https://d2yzyfnnpjylxu.cloudfront.net/landing.html&amazon_state=amazonstateexample&state=-37131022
# 第四步. 亚马逊向您发送授权信息
卖家中心会短暂地显示一个页面,表明亚马逊正在授权您访问销售伙伴的数据。当这个页面显示时,会有以下动作发生。
- 亚马逊将您的OAuth重定向URI加载到浏览器中(您在注册您的应用程序时指定的第一个URI),添加以下查询参数。
参数 | 描述 |
---|---|
state | 你在上一步中传递的状态值。 |
selling_partner_id | 授权你的申请的销售伙伴的标识。 |
mws_auth_token | MWSAuthToken值,您在创建调用Amazon Marketplace Web Service的查询字符串时使用。mws_auth\token参数仅在销售伙伴授权混合销售伙伴API(SP-API)应用程序时传递。请注意,如果您是授权混合SP-API应用程序的销售伙伴和应用程序所有者(意味着您自我授权了自己的亚马逊MWS应用程序),您将不会收到MWSAuthToken。欲了解更多信息,请参阅混合销售伙伴API应用程序。 |
spapi_oauth_code | Login with Amazon (LWA)授权码,你用它来交换LWA刷新令牌。欲了解更多信息,请参见Step 5. 你的应用程序将LWA授权码换成LWA刷新令牌。 注意: LWA授权码在5分钟后过期。请确保在它过期前将其换成LWA刷新令牌。 |
比如说。
https://client-example.com?state=state-example&mws_auth_token=mwsauthtokenexample&selling_partner_id=sellingpartneridexample&spapi_oauth_code=spapioauthcodeexample
你的应用程序会验证状态值。
你的应用程序保存
selling_partner_id
、mws_auth_token
(如果通过)和spapi_oauth_code
值。你的网站的登陆页面显示。
# 第5步. 您的应用程序将LWA授权码换成LWA刷新令牌
Login with Amazon SDK for JavaScript可以帮助你将LWA授权码换成LWA刷新令牌。
注意: LWA授权码在5分钟后失效。请确保在过期前将其换成LWA刷新令牌。
欲了解更多信息,请参见Login with Amazon 文档。
用LWA授权码换取LWA刷新令牌。
- 你的应用程序调用Login with Amazon (LWA)授权服务器(
https://api.amazon.com/auth/o2/token
),将LWA授权码换成LWA刷新令牌。该调用必须包括以下查询参数。
参数 | 描述 |
---|---|
grant_type | 请求的访问授权类型。必须是**authorization_code*。 |
code | 你在Step 4. Amazon sends you the authorization information中收到的LWA授权代码。 |
redirect_uri | 你的应用程序的重定向URI。 |
client_id | 你的LWA凭证的一部分。要获得此值,请参见查看您的应用程序信息和证书。 |
client_secret | 你的LWA凭证的一部分。要获得此值,请参见查看您的应用程序信息和证书。 |
比如说。
POST /auth/o2/token HTTP/l.l
主机:api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=authorization_code&code=SplxlOexamplebYS6WxSbIA&client_id=foodev&client_secret=Y76SDl2F
2
3
4
- LWA授权服务器返回LWA刷新令牌。响应为JSON格式,包括以下元素。
参数 | 描述 |
---|---|
access_token | 一个令牌,授权你的应用程序代表销售伙伴采取某些行动。参见连接到销售伙伴 API。 |
token_type | 返回令牌的类型。应该是不记名的。 |
expires_in | 访问令牌失效前的秒数。 |
refresh_token | 一个长期存在的令牌,可以换成一个新的访问令牌。参见连接到销售伙伴API。 |
HTTP/l.l 200 OK
Content-Type: application/json;
charset UTF-8
Cache - Control: no-store
Pragma: no-cache
{
"access_token": "Atza|IQEBLjAsAexampleHpi0U-Dme37rR6CuUpSR",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "Atzr|IQEBLzAtAhexamplewVz2Nn6f2y-tpJX2DeX"
}
2
3
4
5
6
7
8
9
10
11
你的应用程序保存
refresh_token
值。浏览器向销售伙伴显示一个页面,指出使用你的应用程序的下一步。
LWA刷新令牌是一个长期存在的令牌,你可以用它来交换LWA访问令牌。通过这种令牌交换获得的访问令牌必须包含在对所有销售伙伴API操作的调用中,除了限制性操作 (opens new window)和无授权操作,它们使用的授权模型有些不同。访问令牌发出后,其有效期为一小时。同一访问令牌可用于多次API调用,直到过期。
要使用生成的SDK将刷新令牌换成访问令牌,请参阅使用生成的Java SDK连接到销售伙伴API 。要手动将刷新令牌换成访问令牌,请参阅连接到销售伙伴API。
##对于混合型销售伙伴API应用程序
如果在[Step 4. Amazon sends you the authorization information](#step-4-amazon-sends-you-the authorization-information)中返回了MWS auth token,您的应用程序也被授权代表销售伙伴对亚马逊市场网络服务进行调用。更多信息,请参阅混合销售伙伴API应用。
#网站授权工作流程
网站授权工作流程是一个OAuth授权工作流程,是由你自己的网站发起的。销售伙伴登录到你的网站,并点击你配置的 "授权 "按钮来启动授权。欲了解更多信息,请参阅步骤0.设置一个 "授权 "按钮。
**注意:**以下步骤中的例子是针对卖方应用的,使用基于卖方中心URL的OAuth授权URI。对于卖家应用,你可以用Vendor Central URL代替卖家中心的URL。欲了解更多信息,请参阅构建OAuth授权URI。
测试你的授权工作流程
在创建生产型网站授权工作流之前,你应该在你的应用程序处于草稿状态时测试你的授权工作流。通过测试,你可以确保你的应用程序可以与亚马逊交换参数并接收授权信息。
建立一个测试授权工作流程*
确保你的应用程序处于草稿状态。
- 在Step 0.Set up an "Authorize" button,当你构建一个或多个OAuth授权URI时,将
version=beta
参数添加到OAuth URI(s),以表明该工作流是为了授权处于草稿状态的应用程序。
- 在Step 0.Set up an "Authorize" button,当你构建一个或多个OAuth授权URI时,将
现在你已经准备好与一个值得信赖的销售伙伴一起测试你的授权工作流程。另外,你也可以使用你自己的销售账户凭证来测试工作流程。从[步骤1.销售伙伴从您的网站发起授权]开始(#步骤1-销售伙伴从您的网站发起授权)。
当你完成了授权工作流程的测试,你可以将其转换为生产工作流程。
将你的测试授权工作流程转换为生产工作流程。
在亚马逊卖家中心合作伙伴网络中列出你的应用程序。这将使您的应用程序从草稿状态变为发布状态。
**重要的是,**你的应用程序必须处于发布状态,Webstore授权工作流程才能发挥作用。
2.从你在步骤0.设置 "授权 "按钮中构建的OAuth授权URI中删除
version=beta
参数。现在,任何销售伙伴都可以从步骤1.销售伙伴从你的网站发起授权开始授权你发布的应用程序。
步骤
[第0步,设置一个 "授权 "按钮](#第0步-设置-"授权 "按钮)
[第三步,亚马逊向您发送授权信息](#Step-3-Amazon-sends-you-the Authorization-information)
# 步骤0.设置一个 "授权 "按钮
在你的应用网站上设置一个 "授权 "按钮(或类似的东西),销售伙伴可以点击它来启动对你的应用的授权。当销售伙伴点击该按钮时,你的网站会将OAuth授权URI加载到浏览器中,销售伙伴会被重定向到一个亚马逊的登录页面。登录后,会出现一个同意页面,销售伙伴可以在此同意你的应用程序代表他们调用销售伙伴API。关于构建OAuth授权URI的信息,请参阅构建OAuth授权URI。
**注意:**如果你有一个以上地区的OAuth授权URI,一定要设置你的 "授权 "按钮,使销售伙伴被重定向到他们自己地区的Seller Central(卖家)或Vendor Central(供应商)的登录页面。
设置你的 "授权 "按钮是一个一次性的任务。
# 步骤1。销售伙伴从你的网站发起授权
销售伙伴登录你的网站。如果销售伙伴还没有账户,他们将完成您的注册程序。
销售伙伴点击你在步骤0.设置 "授权 "按钮中设置的 "授权 "按钮。如果你有一个以上的区域 "授权 "按钮,请确保销售伙伴被引导到与他们销售的区域相对应的按钮。
你的应用程序将OAuth授权URI加载到浏览器,添加以下查询参数。
参数 | 描述 |
---|---|
redirect_uri | 一个URI,用于将浏览器重定向到你的应用程序。这必须是您在注册您的应用程序时指定的OAuth重定向URI。如果你不包括redirect_uri参数,默认是你在注册你的应用程序时指定的第一个OAuth重定向URI. 可选 |
state | 一个由你的应用程序生成的状态值。你的应用程序使用这个值来维护这个请求和响应之间的状态,有助于防范跨站请求伪造攻击。 重要的是:由于OAuth信息是通过URL查询参数传递的,我们强烈建议你做以下工作。1)确保状态令牌是短暂的,并且可以验证对你的用户是唯一的,以及2)设置Referrer-Policy:no-referrer HTTP头,这可以防止将敏感信息泄露给你的网站链接的网站。有关跨站请求伪造和计算状态参数的更多信息,请参见Login with Amazon文档中的跨站请求伪造。 |
**注意:**如果你包括version=beta
参数,工作流就会授权一个处于草稿状态的应用程序。如果你不包括这个参数,工作流程将授权一个在Amazon Seller Central Partner Network上发布的应用程序。
比如说。
https://sellercentral.amazon.com/apps/authorize/consent?application_id=appidexample&state=stateexample&version=beta
或者
https://sellercentral.amazon.com/apps/authorize/consent?application_id=appidexample&state=stateexample
销售伙伴到达卖家中心(针对卖家)或供应商中心(针对供应商)的登录页面。
# ###步骤2。销售伙伴同意授权申请
销售伙伴签入Seller Central或Vendor Central,这取决于你构建的OAuth授权URI的类型。出现同意页面。欲了解更多信息,请参阅构建OAuth授权URI。
销售伙伴查看同意页面,审查您的应用程序所要求的数据访问,然后点击确认按钮继续。销售伙伴可以点击取消按钮,退出而不进行授权。
# 第三步。亚马逊向你发送授权信息
亚马逊会短暂地显示一个页面,表明我们正在授权你访问销售伙伴的数据。当该页面显示时,会有以下动作发生。
- 亚马逊将您的OAuth重定向URI加载到浏览器中(您在注册您的应用程序时指定的第一个URI),添加以下查询参数。
参数 | 描述 |
---|---|
state | 来自步骤1.卖方从您的网站的状态值。 |
selling_partner_id | 授权你的申请的销售伙伴的标识符。 |
mws_auth_token | MWSAuthToken值,您在创建调用亚马逊市场网络服务的查询字符串时使用。mws_auth\token参数仅在销售伙伴授权混合销售伙伴API(SP-API)应用程序时传递。请注意,如果您是授权混合SP-API应用程序的销售伙伴和应用程序所有者(意味着您自我授权了自己的亚马逊MWS应用程序),您将不会收到MWSAuthToken。欲了解更多信息,请参阅混合销售伙伴API应用程序。**仅适用于卖家应用。 |
spapi_oauth_code | Login with Amazon (LWA)授权码,你用它来交换LWA刷新令牌。欲了解更多信息,请参阅步骤4. 您的应用程序将LWA授权码换成LWA刷新令牌。 **注意:**LWA授权码在5分钟后过期。请确保在它过期前将其换成LWA刷新令牌。 |
比如说。
https://client-example.com?state=state-example&mws_auth_token=mwsauthtokenexample&selling_partner_id=sellingpartneridexample&spapi_oauth_code=spapioauthcodeexample
你的应用程序会验证状态值。
你的应用程序保存
selling_partner_id
、mws_auth_token
(如果通过)和spapi_oauth_code
值。你的网站的登陆页面显示。
# 第4步. 您的应用程序将LWA授权码换成LWA刷新令牌
Login with Amazon SDK for JavaScript可以帮助你将LWA授权码换成LWA刷新令牌。
注意: LWA授权码在5分钟后过期。请确保在过期前将其换成LWA刷新令牌。
欲了解更多信息,请参见Login with Amazon 文档。
用LWA授权码换取LWA刷新令牌。
- 你的应用程序调用Login with Amazon (LWA)授权服务器(
https://api.amazon.com/auth/o2/token
),将LWA授权码换成LWA刷新令牌。该调用必须包括以下查询参数。
参数 | 描述 |
---|---|
grant_type | 请求的访问授权的类型。必须是authorization_code. |
code | 你在步骤3中收到的LWA授权代码。亚马逊向您发送授权信息. |
redirect_uri | 你的应用程序的重定向URI。 |
client_id | 你的LWA的一部分。 你的LWA凭证的一部分。要获得这个值,请参阅查看您的开发者信息。 |
client_secret | 你的LWA凭证的一部分。要获得这个值,请参阅查看您的开发者信息. |
举例来说。
POST /auth/o2/token HTTP/l.l
主机:api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=authorization_code&code=SplxlOexamplebYS6WxSbIA&client_id=foodev&client_secret=Y76SDl2F
2
3
4
- LWA授权服务器返回LWA刷新令牌。响应为JSON格式,包括以下元素。
参数 | 描述 |
---|---|
access_token | 一个令牌,授权你的应用程序代表销售伙伴采取某些行动。参见连接到销售伙伴 API。 |
token_type | 返回令牌的类型。应该是不记名的。 |
expires_in | 访问令牌失效前的秒数。 |
refresh_token | 一个长期存在的令牌,可以换成一个新的访问令牌。参见连接到销售伙伴API。 |
HTTP/l.l 200 OK
Content-Type: application/json;
charset UTF-8
缓存控制: no-store
Pragma: no-cache
{
"access_token": "Atza|IQEBLjAsAexampleHpi0U-Dme37rR6CuUpSR" 。
"token_type": "bearer",
"expires_in":3600。
"refresh_token": "Atzr|IQEBLzAtAhexamplewVz2Nn6f2y-tpJX2DeX"
}
2
3
4
5
6
7
8
9
10
11
你的应用程序保存 refresh_token 值。
浏览器向销售伙伴显示一个页面,指出使用你的应用程序的下一步。
LWA刷新令牌是一个长期存在的令牌,你可以用它来交换LWA访问令牌。通过这种令牌交换获得的访问令牌必须包含在对所有销售伙伴API操作的调用中,除了限制性操作 (opens new window)和无授权操作,它们使用的授权模型有些不同。访问令牌发出后,其有效期为一小时。同一访问令牌可用于多次API调用,直到过期。
要使用生成的SDK将刷新令牌换成访问令牌,请参阅使用生成的Java SDK连接到销售伙伴API 。要手动将刷新令牌换成访问令牌,请参阅连接到销售伙伴API。
适用于混合销售伙伴API应用程序。
如果在步骤3.亚马逊向您发送授权信息中返回了MWS授权令牌,您的应用程序也被授权代表销售伙伴对亚马逊市场网络服务进行调用。更多信息,请参阅混合销售伙伴API应用。
#自我授权
当你为你自己的组织创建一个私人应用程序时,你可以自我授权它来访问你的账户信息。在这样做之前,你必须注册为开发者和注册你的应用程序。你可以在草稿状态下自我授权你的应用程序;没有理由发布一个私人应用程序。
**注意。**如果你正在创建一个公共应用程序,以获得销售伙伴的授权,请转到授权销售伙伴API应用程序。
自我授权的程序根据你是有一个卖方应用还是一个卖方应用而有所不同。
要自我授权你的应用程序(卖方应用程序)
使用您用于注册为开发者的凭证,登录到卖方中心。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
对于你想授权的应用程序,点击编辑应用程序按钮旁边的箭头,然后点击授权。
出现授权应用程序页面。
注意:如果您的销售伙伴账户与其他地区的账户合并,您将看到每个合并账户的授权应用程序按钮。
- 为您希望您的应用程序访问的每个销售伙伴账户点击授权应用程序按钮。市场栏表示一个账户在哪些市场上是活跃的。
你点击的每个授权应用按钮都会出现一个登录亚马逊(LWA)刷新令牌。
注意:如果你多次点击授权应用按钮,每次都会产生一个新的刷新令牌。生成一个新的刷新令牌不会使以前的刷新令牌失效。
为您授权您的应用程序访问的每个销售伙伴账户保存一个刷新令牌。以后你可以把这些刷新令牌换成访问令牌。当您调用销售伙伴API以访问销售伙伴账户时,包括与该账户相对应的访问令牌。
要授权您的应用程序访问不同的销售伙伴账户,请点击页面底部的登录到该账户。
会出现一个卖方中心的登录页面。
- 使用您想让您的应用程序访问的销售伙伴账户的凭据登录。
出现授权应用程序页面。
8.点击授权应用程序按钮,获得一个刷新令牌。
自我授权您的应用程序(供应商应用程序) 1.
使用你用来注册为开发者的凭证,登录供应商中心。
在集成菜单中,点击API集成。
出现开发者中心页面。
对于你想授权的应用程序,点击编辑应用程序按钮旁边的箭头,然后点击授权。
出现授权应用程序页面。
点击生成刷新令牌按钮。
你的Login with Amazon (LWA)刷新令牌会出现。如果您再次点击生成刷新令牌按钮,将生成一个新的刷新令牌。生成一个新的刷新令牌不会使以前的刷新令牌失效。
**注意:**如果您的销售账户与其他地区的账户合并,您将收到每个地区的单独刷新令牌。您的应用程序现在已被授权访问您的销售账户。
LWA刷新令牌是一个长期存在的令牌,您可以用它来交换LWA访问令牌。通过这种令牌交换获得的访问令牌必须包含在对所有销售伙伴API操作的调用中,除了限制性操作 (opens new window)和无授权操作,它们使用的授权模型有些不同。访问令牌发出后,其有效期为一小时。同一访问令牌可用于多次API调用,直到过期。
要使用生成的SDK将刷新令牌换成访问令牌,请参阅使用生成的Java SDK连接到销售伙伴API 。要手动将刷新令牌换成访问令牌,请参阅连接到销售伙伴API。
#用限制性数据令牌进行授权
返回限制性数据(如个人身份信息,或PII)的操作被认为是限制性操作,需要以限制性数据令牌(RDT)的形式进行特别授权。RDT提供授权以获得执行功能所需的PII,如运输、税务发票或税务汇款服务。在调用受限操作时,通过在 "x-amz-access-token "头中传递RDT来授权对受限操作的调用。这与你在其他SP-API操作中在标头中传递LWA访问令牌的做法不同。欲了解更多信息,请参阅《销售伙伴API开发者指南》中的步骤3.向URI添加头信息 (opens new window)。
# 我如何获得一个RDT?
除非你有一个委托人应用程序(见术语 (opens new window) in the Tokens Use Case Guide),否则你可以通过调用Tokens API的createRestrictedDataToken (opens new window)操作获得RDT。如果你有一个委托人应用程序,你可以从与你的应用程序集成的委托人应用程序中获得一个RDT。关于使用RDT授权调用的更多信息,包括委托授权,请参阅Tokens API使用案例指南 (opens new window)。
# 生成一个带有LWA令牌交换和认证的Java SDK
**我们还提供了一个库,用于生成带有LWA令牌交换和认证的C# SDK。欲了解更多信息,请参阅https://github.com/amzn/selling-partner-api-models/tree/main/clients/sellingpartner-api-aa-csharp 中的README.md。
这些说明告诉你如何在运行Microsoft Windows的计算机上使用Swagger Code Generator (opens new window)为Sellers API生成一个Java SDK。对于其他操作系统(如macOS或Linux)的用户来说,这个过程是相同的,只是替换了Windows特有的语义(例如,C:\)。虽然这些说明是针对Sellers API的,但你可以修改这些说明,为任何其他销售伙伴API生成SDK。关于每个销售伙伴API部分的Swagger模型,见https://github.com/amzn/selling-partner-api-models (opens new window)。
有了这个SDK,你可以向销售伙伴API发出请求,下面的代码已经为你设置好了。用亚马逊令牌交换登录(用刷新令牌交换访问令牌)和认证。
要生成一个带有LWA令牌交换和认证的Java SDK。
安装Java 8或更新版本 (opens new window)、Apache Maven 3.6.或更高版本 (opens new window)和GNU Wget (opens new window)并使它们在你的
$PATH
中可用。克隆版本库,在你的电脑上制作一个本地拷贝,如果你还没有这样做的话。
打开一个命令提示符窗口,进入一个你想下载Swagger代码生成器的目录。
5.下载最新版本的Swagger代码生成器。
比如说
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar
swagger-codegen-cli.jar下载到当前目录。
**注意:**你也可以将浏览器指向这里,从maven.org下载。https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar (opens new window)
将swagger-codegen-cli.jar复制到你认为合理的目录结构中。本例中,我们将其复制到C:\SwaggerToCL。
在你的本地版本的selling-partner-api-models\models\sellers-api-model文件夹中导航到sellers.json。
将sellers.json复制到C:\SwaggerToCL。
9.根据你本地存储库副本中selling-partner-api-models\clients\sellingpartner-api-aa-java文件夹中的模板生成SDK。这个文件夹包含一个授权和认证库,以及为Swagger代码生成器定制的模板。
比如说。
java -jar C:\SwaggerToCL\swagger-codegen-cli.jar generate -i C:\SwaggerToCL\Sellers.json -l java -t [path to selling-partner-api-models\clients\sellingpartner-api-aa-java folder]\resources\swagger-modegen\templates -o C:\SwaggerToCL\Sellers_JavaCL
SDK被复制到C:\SwaggerToCL\Sellers_JavaCL中。
建立AA库,并将其作为SDK的一个依赖项。
导航到你本地版本的selling-partner-api-models\clients\sellingpartner-api-aa-java文件夹,运行
mvn package
。这将生成一个名为 "target "的文件夹。在这个文件夹中是一个名为sellingpartnerapi-aa-java-1.0-jar-with-dependencies.jar(或类似的)的JAR文件和所有需要的依赖项。在本地Maven资源库中安装该JAR文件。
比如说。
mvn install:install-file -Dfile=[目标文件夹中JAR文件的路径] -DgroupId=com.amazon.sellingpartnerapi -DartifactId=sellingpartnerapi-aa-java -Dversion=1.0 -Dpackaging=jar
你可以在selling-partner-api-models\clients\sellingpartner-api-aa-java文件夹中的pom.xml文件的顶部附近找到实际的groupId、artifactId和版本值。
- 在客户端库的pom.xml中添加对AA库的依赖。
比如说
<依赖性
<groupId>com.amazon.sellingpartnerapi</groupId>。
<artifactId>sellingpartnerapi-aa-java</artifactId>
<版本>1.0</版本
</dependency></dependency>
2
3
4
5
在你生成了你的SDK后,你可以用它来调用Selling Partner API。参见使用生成的Java SDK连接到Selling Partner API。
#使用生成的Java SDK连接到销售伙伴的API
在您的应用程序可以连接到销售伙伴API之前,您必须注册它,并且它必须得到销售伙伴的授权。参见注册你的应用程序和授权销售伙伴API应用程序。
这些说明告诉你如何使用生成的Java SDK来进行调用。该SDK公开了用于配置您的LWA和AWS凭证的类,并使用这些类来交换LWA令牌并为您签署请求。欲了解更多信息,请参阅生成具有LWA令牌交换和认证的Java SDK。
步骤
# Step 1. 配置你的AWS凭证
创建一个AWSAuthenticationCredentials
的实例, 使用以下参数:
名称 | 描述 | 要求 |
---|---|---|
accesskeyId | 您的AWS访问密钥Id,来自步骤2。创建一个IAM用户。 | |
是的 | ||
您的AWS秘密访问密钥,来自步骤2。创建一个 IAM 用户。 | ||
是的。 | ||
是的。 | ||
region | 您要指向的 AWS 区域。更多信息,请参阅Selling Partner API endpoints。 | 是 |
例子。
import com.amazon.SellingPartnerAPIAA.AWSAuthenticationCredentials。
AWSAuthenticationCredentials awsAuthenticationCredentials=AWSAuthenticationCredentials.builder()
.accessKeyId("myAccessKeyId")
.secretKey("mySecretId")
.region("us-east-1")
.build()。
2
3
4
5
6
7
# 步骤2. 配置你的AWS凭证提供商
创建一个AWSAuthenticationCredentialsProvider
的实例, 使用以下参数:
名称 | 描述 | 要求 |
---|---|---|
roleArn | 您在步骤4中创建的IAM角色的ARN。创建一个IAM角色。 | 是的 | 。
roleSessionName | 你定义的会话的一个标识符。我们建议使用通用唯一标识符(UUID)。 | |
是 | ||
是 | ||
例子。
import com.amazon.SellingPartnerAPIAA.AWSAuthenticationCredentialsProvider。
AWSAuthenticationCredentialsProvider awsAuthenticationCredentialsProvider=AWSAuthenticationCredentialsProvider.builder()
.roleArn("myroleARN")
.roleSessionName("myrolesessioname")
.build()。
2
3
4
5
6
# 第三步。配置你的LWA凭证
创建一个LWAAuthorizationCredentials
的实例,使用以下参数。
名称 | 描述 | <要求 | <
---|---|---|
clientId | 您的 LWA 客户端标识符。更多信息,请参阅查看您的开发者信息。 | |
是的 | ||
是的 | ||
clientSecret | 您的 LWA 客户端秘密。更多信息,请参阅查看您的开发者信息。 | |
是的 | ||
是的 | ||
refreshToken | LWA的刷新令牌。当销售伙伴授权你的应用程序时,获得这个值。有关详细信息,请参阅授权销售 合作伙伴API应用程序。 | 不,如果您在以下步骤中调用的操作需要销售伙伴授权,则应包括 refreshToken。所有不是grantless operations的操作都需要销售伙伴授权。如果你包括 refreshToken,请不要包括 withScopes。 |
withScopes | ||
withScopes | ||
没有。 | 不,如果你在下面的步骤中调用的操作是grantless 操作,则应包括withScopes。如果你包括withScopes,不要包括refreshToken. | 。|
endpoint | LWA认证服务器URI. | 。Yes |
调用需要销售伙伴授权的操作的例子。
import com.amazon.SellingPartnerAPIAA.LWAAuthorizationCredentials;
LWAAuthorizationCredentials lwaAuthorizationCredentials = LWAAuthorizationCredentials.builder()
.clientId("myClientId")
.clientSecret("myClientSecret")
.refreshToken("Aztr|...")
.endpoint("https://api.amazon.com/auth/o2/token")
.build()。
2
3
4
5
6
7
8
调用无授权操作的例子。
import com.amazon.SellingPartnerAPIAA.LWAAuthorizationCredentials;
import static com.amazon.SellingPartnerAPIAA.ScopeConstants.SCOPE_NOTIFICATIONS_API;
输入静态的com.amazon.SellingPartnerAPIAA.ScopeConstants.SCOPE_MIGRATION_API。
LWAAuthorizationCredentials lwaAuthorizationCredentials =
LWAAuthorizationCredentials.builder()
.clientId("myClientId")
.clientSecret("myClientSecret")
.withScopes(SCOPE_NOTIFICATIONS_API, SCOPE_MIGRATION_API)
.endpoint("https://api.amazon.com/auth/o2/token")
.build()。
2
3
4
5
6
7
8
9
10
11
# 第四步. 创建一个Sellers API的实例并调用一个操作
配置好AWSAuthenticationCredentials
、AWSAuthenticationCredentialsProvider
和LWAAuthorizationCredentials
实例后,你可以创建一个SellersApi实例并调用一个操作。
例子。
SellersApi sellersApi = new SellersApi.Builder()
.awsAuthenticationCredentials(awsAuthenticationCredentials)
.lwaAuthorizationCredentials(lwaAuthorizationCredentials)
.awsAuthenticationCredentialsProvider(awsAuthenticationCredentialsProvider)
.endpoint("https://sellingpartnerapi-na.amazon.com")
.build()。
2
3
4
5
6
# 生成一个Java客户端库
这些说明告诉你如何在运行Microsoft Windows的计算机上使用Swagger Code Generator (opens new window)为Sellers API生成一个Java客户端库。对于其他操作系统(如macOS或Linux)的用户来说,这个过程是相同的,只是替换了Windows特有的语义(例如,C:\)。虽然这些说明是针对Sellers API的,但你可以修改说明,为Selling Partner API中的其他API制作客户端库。参见https://github.com/amzn/selling-partner-api-models/tree/main/models (opens new window),了解每个Selling Partner API部分的Swagger模型。
虽然生成的客户端库可以帮助你调用销售伙伴API,但它不包含LWA令牌交换和认证的代码。关于这一点,请看Step 1. Request a Login with Amazon access token和Step 4. Create and sign your request。或者,对于包含LWA令牌交换和认证的SDK,请参阅生成一个Java SDK 带有LWA令牌交换和认证 。
要生成一个Java客户端库
安装Java 8或更新版本 (opens new window)、Apache Maven 3.6.或更高版本 (opens new window)和GNU Wget (opens new window)并使它们在你的$PATH中可用。
克隆版本库,在你的电脑上制作一个本地拷贝,如果你还没有这样做的话。
打开一个命令提示符窗口,导航到你想下载Swagger代码生成器的目录。
- 下载最新版本的Swagger代码生成器。
比如说
wget https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar -O swagger-codegen-cli.jar
swagger-codegen-cli.jar下载到当前目录。
**注意:**你也可以通过将浏览器指向这里从maven.org下载。https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.13/swagger-codegen-cli-2.4.13.jar (opens new window)
将swagger-codegen-cli.jar复制到你认为合理的目录结构中。本例中,我们将其复制到C:\SwaggerToCL。
在你的本地版本的selling-partner-api-models\models\sellers-api-model文件夹中导航到sellers.json。
将sellers.json复制到C:\SwaggerToCL。
9.生成客户端库。
比如说
java -jar C:\SwaggerToCL\swagger-codegen-cal.jar generate -i C:\SwaggerToCL\Sellers.json -l java -o C:\SwaggerToCL\Sellers_JavaCL
客户端库被复制到C:\SwaggerToCL\Sellers_JavaCL。
在你生成你的客户库后,你可以用它来帮助你调用Selling Partner API。参见连接到销售伙伴API。
#连接到销售伙伴API
在你的应用程序可以连接到销售伙伴API之前,你必须注册它,而且必须得到销售伙伴的授权。参见注册你的应用程序和授权销售伙伴API应用程序。
这些说明向您展示了调用销售伙伴API的步骤。关于构建Selling Partner API URI和向其添加头信息的帮助,请参阅生成Java客户端库。对于包括交换LWA令牌和认证代码的更完整的解决方案,请参见[生成带有LWA令牌交换的Java SDK](#Generating-a-java-sdk-with-lwa-token-exchange and-authentication) [和认证](#Generating-a-java-sdk-with-lwa-token-exchange and-authentication) 。
步骤
# 步骤1. 申请登录亚马逊的访问令牌
Login with Amazon (LWA)访问令牌授权你的应用程序代表销售伙伴采取某些行动。一个LWA访问令牌在发出后一小时内就会失效。
**关于限制性操作的注意事项。**在调用所有操作时必须包括LWA访问令牌,除了限制性操作,这些操作会返回个人身份信息(PII)。当调用受限操作时,你不需要包括LWA访问令牌,而是包括一个受限访问令牌(RDT)。关于获取RDT和调用受限操作的信息,请参见教程:获取RDT和调用受限操作 (opens new window) Tokens API用例指南。
要请求一个LWA访问令牌,请向LWA认证服务器(https://api.amazon.com/auth/o2/token
)发送一个安全的HTTP POST,参数如下。
名称 | 描述 | <要求 | <
---|---|---|
grant_type | 请求的访问授权的类型。值:
| 是 |
refresh_token | LWA的刷新令牌。当销售伙伴授权你的应用程序时,获得这个值。欲了解更多信息,请参阅授权销售伙伴 API 应用程序。 | |
scope | <LWA授权的范围。值: sellingpartnerapi::notifications。用于通知 API。 sellingpartnerapi::migration. 用于授权 API. | 不,包括调用grantless操作的范围。如果你包括范围,不要包括 refresh_token。 |
client_id | 当你注册你的应用程序时得到这个值。参见查看您的开发者信息。 | |
是的 | ||
client_secret | 当你注册你的应用程序时得到这个值。参见查看您的开发者信息。 | |
是的 | ||
是的 |
调用一个需要销售伙伴授权的操作的例子。
POST /auth/o2/token HTTP/l.l
主机:api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=refresh_token
&refresh_token=Aztr|...
&client_id=foodev
&client_secret=Y76SDl2F
2
3
4
5
6
7
调用无授权操作的例子。
``plain POST /auth/o2/token HTTP/l.l 主机: api.amazon.com Content-Type: application/x-www-form-urlencoded;charset=UTF-8 grant_type=client_credentials &scope=sellingpartnerapi::notifications &client_id=foodev &client_secret=Y76SDl2F
**提示:**为了避免在调用LWA授权服务器时得到一个不受信任的证书机构(CA)的错误,一定要更新你的信任存储,使你的应用程序信任LWA授权服务器。
**响应**
一个成功的响应包括以下值。
| **名称** | **描述** | **说明
| ----------------- | ------------------------------------------------------------ |
| **access_token** | LWA的访问令牌。最大尺寸:2048字节。
| **token_type** | 返回的令牌类型。必须是*bearer*。 |
| **expires_in** | LWA访问令牌失效前的秒数。|
| **refresh_token** | 你在请求中提交的LWA刷新令牌。最大尺寸:2048字节。|
```plain
HTTP/l.l 200 OK
Content-Type: application/json;charset UTF-8
缓存控制: no-store
Pragma:no-cache
{
"access_token": "Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE" 。
"token_type": "bearer",
"expires_in":3600。
"refresh_token": "Atzr|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeXEXAMPLE"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
更多信息,请访问Login with Amazon文档中的Authorization Code Grant (opens new window)页面。
# 步骤2. 构建一个销售伙伴API URI
以下是销售伙伴API URI的组成部分。
| 名称 | 描述 | 示例 | **示例
| -------------- | ------------------------------------------------------------ | --------------------------------------------------------- |
| HTTP方法 | HTTP方法。 | GET
|
| 端点 | 一个销售伙伴API端点。| https://sellingpartnerapi-na.amazon.com
|
| 路径 | Selling Partner API的部分/版本。| /fba/inbound/v0/shipments/{shipmentId}/preorder/confirm
!
| 查询字符串 | 查询参数。 | ?marketplace=ATVPDKIKX0DER
!
| 路径参数 | 路径参数。 | shipmentId1
|
例如:
PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10
# 步骤3. 向URI添加头信息
向你在步骤2.构建销售伙伴API URI中构建的URI添加头信息。以下是你在向销售伙伴API发出请求时包含的HTTP头信息。
Request headers
| 名称 | 描述 | **描述
| ------------------ | ------------------------------------------------------------ |
|主机 | 市场端点。参见销售伙伴API端点。|
| x-amz-access-token | LWA的访问令牌。见Step 1. Request a Login with Amazon access token。
**关于受限操作的说明。**如果你正在调用一个受限操作,请在这里传递一个受限数据令牌(RDT)而不是LWA访问令牌。关于获取RDT和调用受限操作的信息,请参见《Tokens API用例指南》(https://github.com/amzn/selling-partner-api-docs/blob/main/guides/en-US/use-case-guides/tokens-api-use-case-guide/tokens-API-use-case-guide-2021-03-01.md)中的【Tokens API用例指南】。|
| x-amz-date | 你请求的日期和时间。 |
| user-agent | 你的应用程序名称和版本号、平台和编程语言。这些有助于亚马逊诊断和解决你在服务中可能遇到的问题。参见Include a User-Agent header in all requests。|
下面是一个向销售伙伴API请求的例子,其中有URI和头文件,但没有签名信息。
PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10 HTTP/1.1
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
平台=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z
2
3
4
5
6
要签署对销售伙伴API的请求,请参阅步骤4.创建并签署你的请求。
##第四步。创建并签署您的请求
销售伙伴API使用AWS的签名版本4签名流程 (opens new window)来验证请求。当你向Selling Partner API发送HTTP请求时,你要对请求进行签名,以便亚马逊能够识别谁发送了请求。你使用你的AWS访问密钥签署请求,它由一个访问密钥ID和一个秘密访问密钥组成。亚马逊建议使用[AWS安全令牌服务(AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html)来请求临时的AWS访问密钥来签署您的请求。请参阅创建和配置IAM策略和实体,以创建一个IAM用户(附带AWS STS策略),承担一个IAM角色。然后你使用IAM角色注册你的应用程序。有关使用AWS STS和可以帮助您实现的AWS SDK的更多信息,请参阅AWS文档中的请求临时安全凭证 (opens new window)。
**注意:**你需要学习如何签署HTTP请求,只有当你手动创建它们时。当你使用AWS SDK为你计算签名时,SDK会自动用你在配置它时指定的AWS访问密钥来签署请求。当你使用一个SDK时,你不需要学习如何自己签署请求。例如,Java开发人员可以使用AWS SDK for Java中的[AWS4Signer.java](https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/auth/AWS4Signer.java)作为计算签名的模型。你可以在AWS GitHub资源库 (opens new window)中找到其他语言的SDK。
要创建和签署你的请求,请完成以下工作。
创建一个规范的请求
按照AWS文档中任务1:为签名版本4创建一个规范的请求 (opens new window)的指示,使用此指南。
参见步骤3.向URI添加头文件中的一个未签名请求的例子,以便在创建规范请求时开始使用。
使用SHA-256作为哈希算法。
不要把认证信息放在查询参数中。把它放在
Authorization
头参数中。关于使用`Authorization'头参数的认证信息,见 Authorization header。
创建一个字符串来签名
按照AWS文档中任务2:为签名版本4创建一个字符串来签名 (opens new window)的指示,使用此指南。
算法指定值为
AWS4-HMAC-SHA256
。要确定凭证范围,请参阅凭证范围。
- 计算签名
按照AWS文档中任务3:计算AWS签名版本4的签名 (opens new window)的指示。
**重要的是:**参见凭证范围以帮助你完成这一步骤。
添加签名信息
按照AWS文档中任务4:向HTTP请求添加签名 (opens new window)的指示,使用此指南。
不要将签名信息添加到查询字符串中。将其添加到 "授权 "标题参数中。
参见授权头了解关于创建`授权'头参数的细节。
下面的例子显示了在你使用授权头加入签名信息后,请求可能是什么样子。
PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10HTTP/1.1
授权。AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token,
Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
平台=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z
2
3
4
5
6
7
8
###凭证范围
凭证范围是您在签署对销售伙伴API的请求时创建的 "要签署的字符串 "的一个组成部分。见创建并签署你的请求。
凭证范围由一个斜线分隔的维度字符串表示,如下表所示。
|维度 |描述 |示例 |**例子
| ------------------ | ------------------------------------------------------------ | -------------- |
| 日期 | 一个八位数的字符串,代表请求的年(YYY)、月(MM)、日(DD)。| 20190430
|
| AWS地区 | 你要发送请求的地区。参见销售伙伴API端点。| us-east-1
|
| 服务 | 你要请求的服务。你可以在端点中找到这个值。参见销售伙伴API端点。| 执行-api
|
| 终止字符串 | 一个特殊的终止字符串。对于AWS签名版本4,其值是aws4_request | aws4_request
| |
例如。
20190430/us-east-1/execute-api/aws4_request
**重要的是:**你作为凭证范围的一部分使用的日期必须与你的请求的日期相匹配,如x-amz-date头中所指定的。欲了解更多信息,请参见AWS文档中的处理签名版本4中的日期 (opens new window)。
更多信息,请参阅步骤4.创建并签署你的请求。
# 授权标头
授权头包含了一个请求的签名信息。尽管该头被命名为 "授权",但签名信息是用来认证的。
以下是授权头的组成部分。
| 组件 | 描述 | **说明 | ------------------------------ | ------------------------------------------------------------ | | 用于签名的算法 | 整个签名过程中使用的哈希算法。销售伙伴API需要SHA-256。你在步骤4.创建并签署你的请求中指定这个。| | 您的AWS访问密钥ID加上证书范围。你在步骤2.创建IAM用户中得到你的AWS访问密钥ID。| | SignedHeaders | 你在签名请求中包含的所有HTTP头信息的列表。例子见步骤3.向URI添加头信息。| | 签名 | 在步骤4.创建并签署你的请求中计算的签名。|
比如说。
授权。AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE
更多信息,请参阅步骤4.创建并签署你的请求。
# 响应格式
在响应HTTP请求时,销售伙伴API会返回响应头和一个JSON响应信息。
响应头信息
| 名称 | 描述 | **说明
| ---------------- | ------------------------------------------------------------ |
| 内容-长度 | 标准HTTP响应头。
| Content-Type | 标准的HTTP响应头。 |
| 日期 | 标准的HTTP响应头. |
| x-amzn-RequestId | 请求标识符。如果你联系我们寻求支持,请包括这个。|
# 成功响应
如果你的请求是成功的,销售伙伴API会返回所请求的数据。下面是一个成功响应的例子。
http/1.1 200 ok
Content-Length: 368
Content-Type: application/json
Date: Thu, 01 Jun 2020 22:23:31 GMT
x-amzn-RequestId: 6875f61f-6aa1-11e8-98c6-9bExample
{
"payload": {
"ConfirmedNeedByDate": "2020-04-23",
"ConfirmedFulfillableDate": "2020-04-23"
}
}
2
3
4
5
6
7
8
9
10
11
# 错误响应
如果你的请求不成功,Selling Partner API会返回一个错误响应。以下是错误响应中的响应信息的要素。
响应信息
元素 | 描述 | 要求 ! |
---|---|---|
代码 | HTTP状态代码。 | 是 |
消息 | 错误情况的解释。 | 是 |
详细信息 | 链接到其他信息。 | 否 |
下面是一个错误响应的例子。
HTTP/1.1 400 错误请求
Content-Length: 117
Content-Type: application/json
Date: Fri, 01 Jun 2020 21:48:02 GMT
x-amzn-ErrorType: ValidationException
x-amzn-RequestId: a8c8d99a-6ab5-11e8-b0f8-19363980175b
{
"错误"。[
{
"消息"。"拒绝访问请求的资源。"。
"代码"。"未经授权"。
"详情": "请求头中缺少访问令牌。"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 无授权操作
**仅适用于卖家应用。
无授权操作是指你可以在没有销售伙伴明确授权的情况下调用的操作。这意味着当你在调用无授权操作之前请求使用亚马逊访问令牌登录时,你不需要提供刷新令牌。相反,你使用scope参数来提供LWA授权的范围。如果你使用生成的Java SDK(见使用生成的Java SDK连接到销售伙伴API)来调用无授权操作,在配置LWA凭证时使用withScopes参数为LWA授权授予设置一个或多个作用域。
关于销售伙伴API中的无授权操作,请参见下表。
无授权操作
操作名称 | HTTP方法和路径 |
---|---|
createDestination | POST /notifications/v1/destinations |
deleteDestination | DELETE /notifications/v1/destinations/{destinationId} |
deleteSubscriptionById | DELETE /notifications/v2/subscriptions/{notificationType}/{subscriptionId}。 |
getDestination | GET /notifications/v1/destinations/{destinationId} **获取目的地 |
getDestinations | GET /notifications/v1/destinations ! |
getSubscriptionById | GET /notifications/v1/subscriptions/{notificationType}/{subscriptionId} 。 |
getAuthorizationCode | GET /authorization/v1/authorizationCode ! |
# 在所有的请求中包括一个User-Agent标头
一个User-Agent头可以识别你的应用程序,它的版本号,以及你所使用的平台和编程语言。你必须在你提交给销售伙伴API的每个请求中包括一个User-Agent头。这样做有助于亚马逊更有效地诊断和解决问题,帮助改善您使用服务的体验。
要创建一个User-Agent头,首先是你的应用程序的名称,然后是一个正斜杠,接着是应用程序的版本,然后是一个空格,一个开头的小括号,语言名称/值对,以及一个结束的小括号。语言参数是一个必要的属性,但你可以添加额外的属性,用分号分隔。
下面的伪代码说明了一个最小可接受的User-Agent头。
AppId/AppVersionId (Language=LanguageNameAndOptionallyVersion)
下面是一个应用程序开发者可能使用的User-Agent头的例子。
我的销售工具/2.0 (语言=Java/1.8.0.221; 平台=Windows/10)
如果你是一个大型的销售伙伴,通过自己的IT部门进行整合,可以考虑创建一个包含主机属性的User-Agent头,就像下面的例子一样。这可以帮助亚马逊的支持工程师更有效的为你排除故障。
MyCompanyName/build1611 (Language=Perl; Host=jane.desktop.example.com)
要指定额外的属性,使用格式AttributeName=Value;,用分号分隔每个名称/值对。如果你需要使用反斜杠(\),用另一个反斜杠(\\)来引用它。同样,在应用程序名称中引用一个正斜杠(\/),在应用程序版本中引用一个开口括号(\(),在属性名称中引用一个等号(\=),在属性值中同时引用一个结束括号())和一个分号(\😉。
因为User-Agent头在每个请求中都会被传送,所以限制头的大小是一个好的做法。如果User-Agent头的长度超过500个字符,Selling Partner API将拒绝该头。
#混合销售伙伴API应用
仅适用于卖家应用
混合型销售伙伴API应用程序是一种既能调用销售伙伴API又能调用亚马逊市场网络服务(Amazon MWS)的应用程序。当您的解决方案需要两种服务的功能时,请使用混合应用程序。当销售伙伴授权你的混合销售伙伴API应用程序时,他们(1)授权你的亚马逊MWS开发者ID代表他们对亚马逊MWS进行调用,(2)授权该应用程序代表他们对销售伙伴API进行调用。
亚马逊认为一个混合应用程序是一个单一的应用程序。例如,当您将一个混合应用程序发布到亚马逊卖家中心合作伙伴网络时,您将把它作为一个单一的应用程序来管理。
# 创建一个混合销售伙伴API应用程序
要创建一个混合应用程序
将您的Amazon MWS应用程序发布到Amazon Seller Central合作伙伴网络。有关发布您的应用程序的信息,请参阅Amazon MWS文档中的Amazon Seller Central Partner Network Listing Guide (opens new window)。
2.使用您用于注册为开发者的凭据登录到Seller Central。
在合作伙伴网络菜单中,点击开发应用程序。
出现开发者中心页面。
在你的亚马逊MWS应用程序旁边,点击编辑应用程序按钮。
5.按照指示注册你的应用程序。
创建一个混合应用程序后,你可以。
设置并测试一个OAuth授权工作流。欲了解更多信息,请参阅授权销售伙伴API应用程序。
将现有的亚马逊MWS授权迁移到您的混合销售伙伴API应用程序。欲了解更多信息,请参阅授权API用例指南 (opens new window)。
# Selling Partner API沙盒
Selling Partner API 提供了一个沙盒环境,允许您测试您的应用程序,而不影响生产数据或触发真实世界的事件。对Selling Partner API进行沙盒调用与进行生产调用相同,只是您将调用指向Selling Partner API沙盒端点。调用沙盒端点会返回所有Selling Partner APIs的静态模拟响应。你可以在你想调用的API的Swagger模型JSON文件中参考这些模拟的响应。欲了解更多信息,请参阅如何对销售伙伴API进行沙盒调用。
Selling Partner API沙盒的工作方式与许多嘲弄框架类似,它使用模式匹配来返回指定参数时的指定响应。当开发者发送一个包含指定参数的请求时,会收到一个定义在以下对象中的响应。
# 静态沙盒JSON对象
"x-amzn-api-sandbox"。
{
"静态"。[
{
"请求"。
{
"参数"。
{
…
}
},
"响应"。
{
…
}
}
]
}
注意,虽然这些对象将包含匹配模拟响应所需的参数,但它们不一定包含成功响应所需的所有参数。为了得到一个成功的响应,请确保你的请求是有效的,并且包括所有需要的参数,这些参数在相应的Swagger模型中定义。
**重要的是:**沙盒是用来测试功能的,而不是可扩展性测试。对沙盒端点的调用受制于这些节流限制。速率 = 每秒5个请求;爆发 = 15。关于节流的更多信息,请参见Selling Partner API文档中的 "使用计划和速率限制"。
# 如何对销售伙伴API进行沙盒调用
# 步骤1. 检查JSON文件中的请求参数
转到https://github.com/amzn/selling-partner-api-models/tree/main/models (opens new window)。
- 打开你想进行沙盒调用的API的文件夹。
点击你想要的API的Swagger模型JSON文件。
显示JSON代码。
- 在代码中搜索包含 "静态 "数组的
x-amzn-api-sandbox
对象。
- 在代码中搜索包含 "静态 "数组的
静态沙盒JSON对象](#static-sandbox-json-object)将包含静态沙盒调用API操作的请求和响应实例,它们出现在其中。如果请求示例包含参数,请在以下步骤中使用它们。
# 第2步。对一个API进行沙盒调用
以你进行生产调用的相同方式对API进行沙盒调用,但有以下不同。
在你的调用中包括[步骤1.检查JSON文件的请求参数](#step-1-check-the-json file-for-request-parameters)中的参数。如果API需要除此之外的参数,请确保在你的调用中也包括这些必要的参数。
2.将你的调用指向销售伙伴API沙盒端点之一。
你应该收到一个与步骤1中的静态沙盒JSON对象中包含的有效载荷对象相匹配的响应。
# 销售伙伴API沙盒端点
销售伙伴API有针对北美、欧洲和远东销售区域的沙盒端点。
销售区域 | 端点 | AWS区域 |
---|---|---|
北美(加拿大、美国、墨西哥和巴西市场) | https://sandbox.sellingpartnerapi-na.amazon.com | us-east-1 |
欧洲(西班牙、英国、法国、荷兰、德国、意大利、瑞典、波兰、埃及、土耳其、阿拉伯联合酋长国和印度市场) | https://sandbox.sellingpartnerapi-eu.amazon.com | eu-west-1 |
远东(新加坡、澳大利亚和日本市场) | https://sandbox.sellingpartnerapi-fe.amazon.com | us-west-2 |
# Selling Partner API与Amazon Marketplace Web Service有什么不同?
尽管Selling Partner API和亚马逊市场网络服务(Amazon MWS)都是能够以编程方式访问客户数据的网络服务,但还是有很大区别。以下是Selling Partner API和Amazon MWS之间的一些主要区别。
通过销售伙伴API,你可以为卖家和供应商开发应用程序。
Selling Partner API将数据视为符合REST标准的资源,可以通过标准的HTTP方法访问和修改。相比之下,Amazon MWS使用特定于Amazon MWS的操作来公开数据。
销售伙伴API的授权利用了LWA,即亚马逊对OAuth 2.0的实施。这种模式消除了手动交换auth令牌的需要,这是Amazon MWS所要求的。参见授权销售伙伴API应用程序。
通过亚马逊MWS,销售伙伴对开发人员进行授权。通过销售伙伴 API,销售伙伴授权应用程序。使用销售伙伴API,开发人员可以创建多个应用程序,这些应用程序需要对销售伙伴数据进行不同程度的访问。
与Amazon MWS相比,销售伙伴API提供更细粒度的数据访问控制。开发人员可以只请求访问他们需要的数据,而销售伙伴可以在API部分、操作或数据资源层面授予权限。
销售伙伴API让您可以使用AWS身份和访问管理(IAM)直接采购和管理自己的认证凭证。使用亚马逊MWS,您会收到由亚马逊使用特殊的注册工作流程提供的认证凭证,您通过与亚马逊MWS支持部门建立联系来获得新的凭证。参见步骤2.创建IAM用户。
销售伙伴 API 使用 AWS 签名版本 4 进行验证。亚马逊MWS使用签名版本2。请参阅 步骤4.创建并签署您的请求。
# 关于供应商组
仅适用于销售商申请
当你授权你的销售伙伴API应用程序访问你的数据时,你正在授权访问与你的供应商中心账户的登录凭证相关的供应商组。推而广之,你是在授予对供应商组中存在的所有供应商代码的访问权。因此,为你的销售伙伴API集成使用正确的Vendor Central凭证和供应商组很重要。
##使用单一供应商组
如果你使用一个供应商组来管理你所有的供应商代码,你可以授权一个应用程序来访问该供应商组中的数据。要做到这一点,注册为开发者使用与供应商组相关的Vendor Central账户的凭证。
为了确保你的供应商组包含你希望你的应用程序访问的所有供应商代码,请检查你的供应商组中的供应商代码。如果你需要,你可以在任何时候从你的供应商组中添加或删除供应商代码。
检查你的供应商组中的供应商代码。
进入你的市场的供应商中心。参见供应商中心URLs以获得按市场分类的URLs列表。
- 使用你想让你的应用程序访问的供应商组的Vendor Central账户的凭证登录。
在设置菜单上,点击联系。
- 查看联系页面,以确定你希望你的应用程序访问的供应商代码是否存在。
从你的供应商组中添加或删除供应商代码。
进入你的市场的供应商中心。参见供应商中心URLs以获得按市场分类的URLs列表。
- 使用Vendor Central账户的凭证登录,你想为其添加或删除供应商代码的供应商组。
- 点击页面顶部的支持链接。
- 在支持页面上,点击联系我们按钮。
在联系亚马逊支持页面上,点击设置和账户管理,然后选择账户设置。
在设置和账户管理框中,在底部点击还需要帮助吗。
按照指示联系亚马逊的支持。
##使用多个供应商组
也许你使用多个供应商组来管理你的供应商代码。如果是这样,对于销售伙伴API集成,我们建议你:1)创建一个新的供应商组,包含你需要的所有供应商代码,或者2)选择一个现有的供应商组,添加你需要的供应商代码。你可以在任何时候添加或删除供应商组中的供应商代码。然而,一旦你注册为开发者,你就不能改变与该开发者相关的供应商组。如果你想为不同的企业保持单独的API集成,你可以。要做到这一点,为你想访问的每个供应商组分别注册为开发人员。然后,你可以与每个注册的开发人员开发单独的API集成。
创建一个新的供应商组。
进入你的市场的供应商中心。参见供应商中心URLs以获得按市场分类的URLs列表。
2.使用Vendor Central账户的凭证登录,该账户具有你想让你的应用程序访问的供应商组。
点击页面顶部的支持链接。
- 在支持页面,点击联系我们按钮。
在联系亚马逊支持页面上,点击设置和账户管理,然后选择账户设置。
在设置和账户管理框中,在底部点击还需要帮助吗。
按照指示联系亚马逊的支持。
# Vendor Central URLs
仅适用于供应商应用
以下是按市场划分的供应商中心网址。
北美洲*
欧洲
远东
市场 供应商中心网址 | **供应商中心网址 |
---|---|
新加坡 | https://vendorcentral.amazon.com.sg (opens new window) |
澳大利亚 | https://vendorcentral.amazon.com.au (opens new window) |
日本 | https://vendorcentral.amazon.co.jp (opens new window) |
# 卖家中心网址
仅用于卖家申请
以下是按市场划分的卖家中心网址。
北美洲
欧洲
远东
市场 | 卖方中心网址 |
---|---|
新加坡 | https://sellercentral.amazon.sg (opens new window) |
澳大利亚 | https://sellercentral.amazon.com.au (opens new window) |
日本 | https://sellercentral.amazon.co.jp (opens new window) |