首页 / 帮助文档 / 文章详情

如何验证回调签名与订单金额一致性?


回调签名和订单金额一致性是支付系统最关键的两项校验。签名用于证明回调消息不是伪造的,金额一致性用于证明这次回调对应的确实是本次订单。二者缺一不可,尤其在充值上分和商户提现场景中,任何一个环节失误都可能造成严重的财务偏差。

一般来说,验证回调签名时,商户服务端需要拿到平台发来的请求体、时间戳和签名字段,按约定算法重新生成签名并进行比对。只有签名正确且时间戳未过期,才可以认为这次回调来自合法平台。

回调签名校验步骤

  1. 读取回调请求头中的签名字段和时间戳字段。
  2. 将请求体与时间戳按预先约定的字符串规则拼接。
  3. 使用商户端保存的密钥重新生成签名。
  4. 将生成结果与回调中的签名逐字节比对。
  5. 若一致且时间戳在有效窗口内,才允许继续处理。

金额一致性校验

金额一致性校验通常要同时检查三项:订单号、金额、币种。订单号用于确定是哪一笔订单;金额用于确认支付金额与业务金额是否一致;币种用于确保没有把 USDT 与其他资产混淆。对于平台来说,建议回调中的金额字段与订单创建时的金额字段严格比对,不允许出现“金额误差不一致但仍然上分”的情况。

建议的处理策略

  • 在收到回调后先校验签名,再校验金额和订单号。
  • 如存在金额不一致,应直接记录告警并暂停业务处理。
  • 若订单状态已经完成,则应该直接返回成功,避免重复入账。
  • 所有校验结果都写入日志,方便后期追踪和对账。

真正可靠的回调处理,不是“收到就入账”,而是“收到后先验证,再确认,再入账”。只有把这条链路打通,支付系统才能在复杂环境中保持稳定和可审计。