第三方提供商签名指南
了解如何创建第三方支付服务提供商签名。
要成功生成签名,请按照中记录的说明进行操作 RFC 9421 规范。请注意,对于提出 SP-API 请求的 TPP,亚马逊会在某些方面强制执行签名生成。这些内容记录在以下各节中。
签名组件
RFC 9421 描述了在请求中传达哪些 HTTP 消息组件签名的过程。生成签名时必须包含以下消息组件。
注意
不包含以下组件会导致签名验证失败。您可以按任何顺序添加这些组件。
HTTP 字段(消息头)
标题 | 描述 |
---|---|
x-amz-access-token | 用于发出请求的 LWA 访问令牌。 |
x-amzn-content-digest | 请求负载的 sha-256 摘要。对于没有有效载荷的请求,请在 空的 字符串。 |
有关其他信息,请参阅 HTTP 字段。
派生组件
有关其他信息,请参阅 派生组件。
签名参数
有关其他信息,请参阅 签名参数。
小心
所有请求标头值都区分大小写。如果有任何大小写不匹配,您的签名验证将失败。
签名标签
RFC 9421 允许在同一个标头中使用多个签名(为了消除歧义,使用 签名标签)。SP-API 仅使用一个签名,该签名由 x-amzn-psd2
签名标签。你必须将其用在 Signature
和 Signature-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... :
Updated 27 days ago