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不是直接使用私钥,而是需要通过以下步骤生成的签名结果:
- 按照
signature-input中指定的字段顺序,拼接成待签名字符串(示例):x-ebay-signature-key:xxx\n@method:POST\n@path:/sell/account/v1/return_policy\n@authority:api.ebay.com\ncreated:1666253648 - 使用
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
相关产品推荐
相关产品推荐

