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

PHP实现Deribit API签名:基于Nonce与Timestamp 参照JS/Python示例

核心问题排查

你当前的PHP代码存在两处核心错误导致签名不符合要求:

  • 待签名内容拼接时没有添加官方要求的\n换行符作为时间戳、nonce、请求数据的分隔符,直接拼接了三个变量
  • hash_hmac函数默认返回十六进制签名结果,你额外调用bin2hex对结果做了二次转码,最终生成错误的签名值

nonce生成规则

nonce没有强制格式要求,仅需要保证每次请求的nonce值唯一即可,你可以使用随机字符串、毫秒时间戳等任意唯一值。

修正后的PHP代码

// 生成13位毫秒级时间戳,和官方实现逻辑对齐
$timestamp = (string)round(microtime(true) * 1000);
// nonce示例:随机8位字符串,你也可以替换为其他唯一值实现
$nonce = bin2hex(random_bytes(4));
// 请求数据为空时保持空字符串即可
$data = "";

// 按官方规则用换行符拼接待签名内容
$signContent = $timestamp . "\n" . $nonce . "\n" . $data;
// 生成HMAC-SHA256签名,$accessSecret替换为你的平台密钥
$signature = hash_hmac('sha256', $signContent, $accessSecret);
// 统一转为小写,和官方Python实现输出格式对齐
$signature = strtolower($signature);

结果验证

你可以将$timestamp、$nonce都固定为和官方示例一致的值(比如nonce设为abcd),分别用JS、Python、修正后的PHP代码生成签名,三者结果完全一致即代表实现正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:57:02