You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

eBay API数字签名报错215114:签名参数创建时间不在有效范围

解决eBay Digital Signatures API的creationTime范围错误(Error 215114)

问题场景

测试eBay Digital Signatures for APIs时,设置签名请求头后触发Error 215114,提示「签名参数的创建时间不在有效范围」。已尝试使用从createSigningKey接口获取的13位时间戳,以及文档示例中的10位时间戳,均无效。使用Excel VBA编写的请求头代码如下:

http.setRequestHeader "x-ebay-signature-key", jwe
http.setRequestHeader "signature", privateKey
http.setRequestHeader "signature-input", "sig1=(""x-ebay-signature-key"" ""@method"" ""@path"" ""@authority"");created=1666253648295"

核心错误点与解决方案

1. 混淆了「密钥创建时间」和「请求签名时间」

eBay signature-input中的created字段,是生成当前请求签名的实时秒级Unix时间戳(10位),并非createSigningKey接口返回的密钥自身创建时间:

  • 密钥的creationTime仅用于密钥生命周期管理,和请求签名无关
  • 请求签名的created必须是发起请求时的实时时间,误差不能超过5分钟(eBay的时间窗口限制)

2. signature字段赋值错误

signature不是直接使用私钥,而是需要通过以下步骤生成的签名结果:

  1. 按照signature-input中指定的字段顺序,拼接成待签名字符串(示例):
    x-ebay-signature-key:xxx\n@method:POST\n@path:/sell/account/v1/return_policy\n@authority:api.ebay.com\ncreated:1666253648
    
  2. 使用createSigningKey返回的私钥(PEM格式),对上述字符串进行SHA-256签名,再转成Base64编码,才是signature的正确值。

3. 验证signature-input格式与字段匹配度

确保signature-input中的字段与实际请求完全一致:

  • @method:GET/POST等,需和请求方法严格匹配
  • @path:请求路径(如/sell/account/v1/return_policy),大小写、参数都要完全对应
  • @authority:请求域名(如api.ebay.com),不能带https://前缀

修正后的VBA核心代码示例

' 1. 获取当前秒级时间戳(10位)
Dim createdTimestamp As String
createdTimestamp = CStr(CLng(Now() - #1/1/1970#) * 86400)

' 2. 构造signature-input
Dim signatureInput As String
signatureInput = "sig1=(""x-ebay-signature-key"" ""@method"" ""@path"" ""@authority"");created=" & createdTimestamp

' 3. 构造待签名字符串(字段顺序必须和signature-input一致)
Dim signingString As String
signingString = "x-ebay-signature-key:" & jwe & vbCrLf & _
                "@method:POST" & vbCrLf & _
                "@path:/your/actual/api/path" & vbCrLf & _
                "@authority:api.ebay.com" & vbCrLf & _
                "created:" & createdTimestamp

' 4. 实现SHA-256签名并转Base64(需自行实现签名函数)
Dim signatureValue As String
signatureValue = SignStringWithSHA256(signingString, privateKey)

' 5. 设置正确的请求头
http.setRequestHeader "x-ebay-signature-key", jwe
http.setRequestHeader "signature", signatureValue
http.setRequestHeader "signature-input", signatureInput

额外注意事项

  • 签名必须使用SHA-256算法,eBay不支持其他签名算法
  • 待签名字符串的字段顺序必须与signature-input中列出的顺序完全一致
  • 若本地时间与eBay服务器时间偏差过大,需同步系统时间

内容的提问来源于stack exchange,提问作者user12918986

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:25:26