公告

接口密钥《签名校验》开发说明

来源:悦耳数据 分类:公告 Eddy 阅读(45)

开发指南:

签名生成步骤:

  1. 获取当前UNIX时间戳(秒级)

  2. 构造签名字符串:"key={apiKey}&timestamp={timestamp}"

  3. 使用HMAC-SHA256算法和Secret Key生成签名:hash_hmac('sha256', 签名字符串, Secret_Key);

  4. 将API Key、时间戳和签名放入请求头

请求头示例

X-Api-Key: your_api_key_123
X-Api-Timestamp: 1678901234
X-Api-Sign: 1a2b3c4d... (64字符HMAC-SHA256哈希值)
【PHP】签名生成过程:

1. 获取当前时间戳(秒级): $timestamp = time()
2. 构造签名字符串: "key={$apiKey}&timestamp={$timestamp}"
3. 使用HMAC-SHA256算法生成签名: 
   $Sign = hash_hmac('sha256', $signString, $secretKey); // 生成签名

请求头设置:
X-Api-Key: 您的API Key
X-Api-Timestamp: 使用的时间戳
X-Api-Sign: 生成的签名


<?php
// API配置
$apiKey = 'GcDE3tht4TvCfFjJvTZoZtTkai';
$secretKey = 'a9affa8c683c9af023acb00d42cd9541';
$baseUrl = 'https://api.ip13.com/api_path'; // 接口地址

// 1. 准备签名参数
$timestamp = time(); // 当前UNIX时间戳(秒级)

// 2. 生成签名字符串
$signString = "key={$apiKey}&timestamp={$timestamp}";

// 3. 计算HMAC-SHA256签名
$signature = hash_hmac('sha256', $signString, $secretKey);

// 4. 准备请求头
$headers = [
    'X-Api-Key: ' . $apiKey,
    'X-Api-Timestamp: ' . $timestamp,
    'X-Api-Sign: ' . $signature,
    'Content-Type: application/json' // 示例使用JSON格式
];

// 5. 准备请求数据 (GET请求不需要请求体)
$data = [
    'key' => $apiKey,
    'param2' => 'value2'
];

// 6. 初始化CURL
$ch = curl_init();

// 对于GET请求,参数应该放在URL中
$url = $baseUrl . '?' . http_build_query($data);

// 设置CURL选项
curl_setopt_array($ch, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_TIMEOUT => 10,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false,
    
    // 如果是POST请求,取消下面注释
    // CURLOPT_POST => true,
    // CURLOPT_POSTFIELDS => json_encode($data),
]);

// 7. 执行请求
$response = curl_exec($ch);

// 检查错误
if (curl_errno($ch)) {
    echo 'CURL错误: ' . curl_error($ch);
} else {
    // 获取HTTP状态码
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo "HTTP状态码: {$httpCode}n";
    echo "响应内容: n";
    print_r(json_decode($response, true));
}

// 8. 关闭CURL
curl_close($ch);

// =============== 签名生成过程说明 ===============
echo "nn=== 签名生成过程 ===n";
echo "1. 使用的时间戳: {$timestamp}n";
echo "2. 签名字符串: "{$signString}"n";
echo "3. 生成的签名: {$signature}n";
echo "4. 发送的请求头: n";
print_r($headers);


数据驱动未来

立即注册

客服微信

julyeseven

请打开手机微信,扫一扫联系我们

联系我们
客服QQ
136941014

商务号,添加请说明来意

返回顶部