sign = timestamp + method + requestPath
/**
* 生成 Mefree API 的签名
* @param string $timestamp UTC 时间戳 (ISO 8601 格式)
* @param string $method HTTP 方法 (GET/POST)
* @param string $request_path API 请求路径(含参数)
* @param string $secret_key API 的 Secret Key
* @return string 返回 Base64 编码的签名
*/
function generate_signature($timestamp, $method, $request_path, $secret_key) {
// 拼接待签名字符串
$string_to_sign = $timestamp . $method . $request_path;
// 使用 HMAC-SHA256 算法对字符串进行加密
$hash = hash_hmac('sha256', $string_to_sign, $secret_key, true);
// 返回 Base64 编码的签名
return base64_encode($hash);
}
// API 配置信息
$base_url = "https://api.mefree.net"; // Mefree API 基础地址
$api_key = "your_api_key"; // 替换为实际的 API Key
$secret_key = "your_secret_key"; // 替换为实际的 Secret Key
/**
* 发起 Mefree API 请求
* @param string $method HTTP 方法 (GET/POST)
* @param string $request_path API 请求路径(含查询参数)
* @param string $base_url API 基础 URL
* @param string $api_key API Key
* @param string $secret_key API Secret Key
* @return mixed 返回 API 响应内容
*/
function send_request($method, $request_path, $base_url, $api_key, $secret_key) {
// 当前 UTC 时间戳
$timestamp = gmdate("Y-m-d\TH:i:s.v\Z");
// 生成签名
$signature = generate_signature($timestamp, $method, $request_path, $secret_key);
// 设置请求头
$headers = [
"Content-Type: application/json",
"MF-ACCESS-KEY: {$api_key}",
"MF-ACCESS-SIGN: {$signature}",
"MF-ACCESS-TIMESTAMP: {$timestamp}",
];
// 初始化 CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url . $request_path); // 设置 URL
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); // 设置请求方法
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 设置请求头
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应内容
// 执行请求
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取 HTTP 状态码
curl_close($ch);
// 返回结果
return [
"status_code" => $http_code,
"response" => $response
];
}
// 获取账户信息
$request_path = "/api/config"; // API 请求路径
$response = send_request("GET", $request_path, $base_url, $api_key, $secret_key);
// 处理返回结果
if ($response['status_code'] == 200) {
echo "账户信息:\n";
echo $response['response'];
} else {
echo "请求失败,HTTP 状态码:" . $response['status_code'] . "\n";
echo "响应内容:" . $response['response'];
}
// 创建订单
$request_path = "/api/order?quantity=65000&target_address=TRON_ADDRESS&period=1"; // API 请求路径
$response = send_request("POST", $request_path, $base_url, $api_key, $secret_key);
// 处理返回结果
if ($response['status_code'] == 200) {
echo "订单已创建:\n";
echo $response['response'];
} else {
echo "请求失败,HTTP 状态码:" . $response['status_code'] . "\n";
echo "响应内容:" . $response['response'];
}
// 查询订单状态
$pay_hash = "abcd1234"; // 替换为实际订单的 pay_hash
$request_path = "/api/order/" . $pay_hash; // API 请求路径
$response = send_request("GET", $request_path, $base_url, $api_key, $secret_key);
// 处理返回结果
if ($response['status_code'] == 200) {
echo "订单状态:\n";
echo $response['response'];
} else {
echo "请求失败,HTTP 状态码:" . $response['status_code'] . "\n";
echo "响应内容:" . $response['response'];
}
通过以上文档,您可以使用 PHP 高效实现对 Mefree.NET API 的调用,包括生成签名、发送请求以及解析响应数据。对重要操作(如下单)时,建议加上重试机制以提高稳定性。如有疑问,请联系 Mefree 官方支持团队。