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

调用Fiserv Ucom所有API遇401错误,Node.js生成HMAC签名失败求助

Fiserv Ucom API 401错误:HMAC签名排查与修复
  • 核对rawSignature的构造逻辑
    Fiserv的HMAC签名对原始签名串的格式要求极严,一般得包含HTTP方法、请求URI、时间戳、随机串(nonce)、请求体哈希这些字段,而且顺序、分隔符(比如换行符)必须和文档完全一致。比如常见的格式是:

    POST\n
    /ucom/api/v1/transactions\n
    1699999999\n
    abc123xyz\n
    a1b2c3d4e5f6...
    

    你得确认rawSignature有没有漏字段、顺序错了或者分隔符用错(比如用空格代替换行)。

  • 验证HMAC密钥的准确性
    别搞混API密钥和HMAC密钥,Fiserv一般会分开提供这两个密钥。另外检查密钥有没有多余的空格、换行符,或者是不是用了错误的编码(比如应该是UTF-8字符串,不是Base64解码后的二进制数据)。

  • 确认编码与算法匹配
    你的代码用SHA256+HMAC再Base64编码的逻辑是对的,但要注意:

    • rawSignature如果是带特殊字符的字符串,得确保是UTF-8编码后再传入CryptoJS
    • 核对文档是否要求签名是Base64格式,有些平台会要求十六进制,但Fiserv大多用Base64。
  • 换Node.js原生crypto模块测试
    CryptoJS偶尔会有编码处理的差异,试试用Node.js内置模块生成签名,对比结果:

    const crypto = require('crypto');
    
    const hmac = crypto.createHmac('sha256', key);
    hmac.update(rawSignature, 'utf8');
    const computedHmac = hmac.digest('base64');
    

    如果用原生模块生成的签名能通过验证,说明CryptoJS对rawSignature的编码处理有问题。

  • 检查签名的请求头传递格式
    确保把生成的computedHmac放到正确的请求头里,Fiserv一般要求放在Authorization头,格式可能是HMAC <签名内容>,严格按照文档要求的格式来,别自己瞎改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:36:28