主页文档代码示例API 参考公告模型发行说明常见问题GitHub视频
开发者中心API 状态支持
文档
开发者中心API 状态支持

第三方提供商签名指南

了解如何创建第三方支付服务提供商签名。

要成功生成签名,请按照中记录的说明进行操作 RFC 9421 规范。请注意,对于提出 SP-API 请求的 TPP,亚马逊会在某些方面强制执行签名生成。这些内容记录在以下各节中。

签名组件

RFC 9421 描述了在请求中传达哪些 HTTP 消息组件签名的过程。生成签名时必须包含以下消息组件。

📘

注意

不包含以下组件会导致签名验证失败。您可以按任何顺序添加这些组件。

HTTP 字段(消息头)

标题描述
x-amz-access-token用于发出请求的 LWA 访问令牌。
x-amzn-content-digest请求负载的 sha-256 摘要。对于没有有效载荷的请求,请在 空的 字符串。

有关其他信息,请参阅 HTTP 字段

派生组件

Component描述
@method请求的 HTTP 方法。该值必须为大写(例如 GETPOST)。
@query定义的标准化查询字符串 URI 并包括领先的 ? 性格。
如果请求没有查询,则必须使用以下命令填充组件值 ? 当你创建中提到的签名库时 RFC 9421
该值必须在执行所有必要的编码(例如百分位数编码)后得出。您对任何进一步的修改 queryString(创建签名时未包含这些内容)会导致签名失败。

有关其他信息,请参阅 派生组件

签名参数

参数描述
created以秒为单位的时代时间戳。
如果 created epoch 指向收到请求时已超过五分钟的时间,签名被视为已过期,呼叫被拒绝。
alg一种用于对签名库进行签名的算法。
的价值 alg 必须是 PS512。有关其他详细信息,请参阅 签名算法

有关其他信息,请参阅 签名参数

🚧

小心

所有请求标头值都区分大小写。如果有任何大小写不匹配,您的签名验证将失败。

签名标签

RFC 9421 允许在同一个标头中使用多个签名(为了消除歧义,使用 签名标签)。SP-API 仅使用一个签名,该签名由 x-amzn-psd2 签名标签。你必须将其用在 SignatureSignature-Input 标题用于识别 PSD2 相关信息。

签名算法

签名是在您完成时创建的签名基础字符串上生成的 RFC 9421 中的步骤。生成签名基本字符串后,必须使用与您的电子 NCA 证书关联的私钥对请求进行签名 PS512 算法。该算法是目前唯一支持 SP-API 请求的算法。

与您在签名中使用的私钥关联的证书必须作为标头传递 (x-amzn-psd2-certificate) 在您的 SP-API 请求中。该证书必须是 PEM 格式 以 Base64 编码开头的字符串 -----BEGIN CERTIFICATE----- 并以 -----END CERTIFICATE-----

如果您在证书中使用任何不允许的字符,则您的 SP-API 请求将被拒绝。您必须仅使用旨在签署由合格信任服务提供商 (QTSP) 颁发的 HTTP 请求的证书。

🚧

小心

您使用的证书必须与您在开发者注册中提供的组织标识符相关联。如果不匹配,您的请求将被拒绝。

错误响应

如果您的请求签名验证失败,则会收到 403 错误,该错误在正文中包含其他信息。例如:

{ "errors": [ { "code": "Unauthorized", "message": "Access to requested resource is denied.", "details": "Reason for error." } ] }

以下是可能的值列表 details 字段:

错误消息描述
TPP certificate required but missing from request这个 x-amzn-psd2-certificate 标题丢失。
TPP certificate has invalid format提供的证书不是有效的 PEM 格式。
Content Digest header required but missing from request缺少 x-amzn-content-digest 请求标头。
Invalid Content Digest无法验证内容摘要,或者您使用了不支持的算法。仅支持 SHA-256。
Signature-Input header required but not presented这个 Signature-Input 请求标头缺失。
Signature-Input header is invalid这个 Signature-Input 标头值不符合 RFC 9421 规范。
Request PSD2 Signature is Invalid签名无效。这可能有多种原因,例如使用了错误的私钥或证书,或者拼写错误。
Signature header is required but not presented这个 Signature 请求标头缺失。

签名示例

以下示例是包含所有必需组件的签名基本字符串:

"x-amz-access-token": Atza|IgEBIN... "x-amzn-content-digest": sha-256=:fadf3qr3TAFASEG3234gADA+krdzMzYayg4YFig=: "@method": POST "@query": ?key2=value2&key1=value1 "@signature-params": ("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512";

关联的 Signature-Input 标题是:

Signature-Input: x-amzn-psd2=("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512"

以下示例是一个签名标头,它具有 Signature 标签:

Signature: x-amzn-psd2=:cyqStwls2k3Xs8SSzDvDhxWEc_P0dNxV5I6Tp... :

此页面对您有帮助吗?