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

如何在PHP中获取指定BTC地址的交易信息(时间、交易ID、金额)

在PHP中获取BTC地址的交易信息(含时间、交易ID、金额)

嘿,你已经能成功获取BTC地址的余额了,其实要拿到交易信息也很简单,咱们可以继续用你之前用的blockchain.info的API,直接调用它的「原始地址信息」接口就能拿到所有交易数据。我给你写了一段适配你现有代码风格的示例,还加了细节处理,比如金额单位转换、时间格式化这些:

<?php
function getBtcTransactions($address) {
    // 构造API请求地址,urlencode避免地址里的特殊字符出问题
    $apiUrl = 'https://blockchain.info/rawaddr/' . urlencode($address);
    
    // 发起请求,和你获取余额的方式一致
    $response = file_get_contents($apiUrl);
    
    // 先处理请求失败的情况
    if (!$response) {
        return false;
    }
    
    // 把返回的JSON字符串转成数组
    $data = json_decode($response, true);
    // 检查JSON解析是否成功
    if (json_last_error() !== JSON_ERROR_NONE) {
        return false;
    }
    
    $transactions = [];
    // 遍历每一笔交易
    foreach ($data['txs'] as $tx) {
        // 计算当前地址在这笔交易中的净金额(因为交易可能是转入或转出)
        $netAmount = 0;
        // 先看转出到当前地址的金额
        foreach ($tx['out'] as $output) {
            if ($output['addr'] === $address) {
                // 接口返回的是聪,转成BTC要除以100000000
                $netAmount += $output['value'] / 100000000;
            }
        }
        // 再看从当前地址转出的金额
        foreach ($tx['inputs'] as $input) {
            if (isset($input['prev_out']['addr']) && $input['prev_out']['addr'] === $address) {
                $netAmount -= $input['prev_out']['value'] / 100000000;
            }
        }
        
        // 整理成易读的格式
        $transactions[] = [
            'txid' => $tx['hash'], // 交易ID
            'time' => date('Y-m-d H:i:s', $tx['time']), // 时间戳转成YYYY-MM-DD HH:MM:SS格式
            'amount' => number_format($netAmount, 8) // BTC保留8位小数
        ];
    }
    
    return $transactions;
}

// 调用示例,替换成你要查询的地址
$targetAddress = 'xxxxxxxxxxxxxxx';
$transactionList = getBtcTransactions($targetAddress);

// 输出结果
if ($transactionList) {
    echo '<h3>该地址的交易记录</h3>';
    echo '<ul>';
    foreach ($transactionList as $tx) {
        echo "<li>交易ID: {$tx['txid']} | 时间: {$tx['time']} | 金额: {$tx['amount']} BTC</li>";
    }
    echo '</ul>';
} else {
    echo '抱歉,获取交易信息失败了,请检查地址是否正确或网络连接';
}
?>

一些补充说明:

  • 如果你的服务器禁用了file_get_contents,可以用curl替代请求部分,代码片段如下:
// 替换原有的file_get_contents请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 生产环境建议开启SSL验证,测试阶段可以临时关闭
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
  • 这个API返回的金额单位是「聪」(1 BTC = 100,000,000 聪),所以代码里做了单位转换,确保显示的是BTC数值
  • 交易金额的计算逻辑是取当前地址的净变化:转入为正,转出为负,这样你能直观看到每笔交易的收支情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:07:55