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

使用RealexPayments SDK搭建支付应用时遇sha1hash错误求助

解决RealexPayments SDK的SHA1 Hash验证错误

Hey,这个SHA1哈希不匹配的问题在Realex SDK测试阶段挺常见的,我帮你梳理几个必查的方向,按顺序排查大概率能解决:

  • 严格核对哈希生成规则
    Realex的SHA1哈希计算逻辑是固定的:把TIMESTAMP.MERCHANT_ID.ORDER_ID.AMOUNT.CURRENCY用.拼接成字符串,直接追加你的远程密码(Remote Password),然后做SHA1哈希再转成大写。举个代码示例:

    $timestamp = "20240520143000"; // 必须是YYYYMMDDHHMMSS格式的UTC时间
    $merchantId = "YOUR_TEST_MERCHANT_ID";
    $orderId = "UNIQUE_ORDER_123";
    $amount = "1000"; // 注意:金额用分作单位,10欧元就是1000
    $currency = "EUR"; // 必须大写
    $remotePassword = "YOUR_TEST_REMOTE_PASSWORD";
    
    $hashString = implode(".", [$timestamp, $merchantId, $orderId, $amount, $currency]);
    $generatedHash = strtoupper(sha1($hashString . $remotePassword));
    

    重点要确认:

    • 所有字段没有多余空格、大小写错误(比如货币代码不能是小写)
    • 金额是分单位(Realex要求的,很多人会直接传元导致错误)
    • 订单ID和你发送给Realex的完全一致
  • 确认用对了测试环境的远程密码
    测试环境和生产环境的远程密码是完全分开的!别把生产环境的密码用到测试里,或者反过来,这是最容易踩的坑。去Realex的测试后台确认你当前用的是测试专用的远程密码。

  • 检查时间戳格式是否合规
    Realex要求时间戳必须是YYYYMMDDHHMMSS的UTC时间,不能有任何分隔符(比如2024-05-20 14:30:00这种格式绝对不行)。如果你的服务器时间不是UTC,记得转成UTC再生成时间戳。

  • 验证SDK参数传递的顺序和完整性
    如果你用SDK内置的哈希生成方法(比如generateHash()),一定要核对参数顺序是否和SDK文档一致。比如有些版本的SDK要求参数顺序是timestamp, merchantId, orderId, amount, currency, password,顺序错了哈希肯定不匹配。

  • 手动计算哈希做对比
    把你要用的参数按规则拼接成字符串,自己手动计算一次SHA1哈希(本地用PHP或者在线工具都可以,本地更安全),然后和SDK生成的哈希对比。如果不一致,说明你的参数传递有问题;如果一致,那可能是请求发送时字段被篡改了(比如中间有空格或者格式转换)。

额外提醒:Realex的哈希计算不包含卡号、CVV这些敏感字段,别错误地把这些加进去,反而会导致哈希不匹配。

如果这些都排查完还是没解决,可以把你生成哈希的相关代码片段贴出来,我帮你再精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:05