ogbitblt/electrum-interface

php库,与electrum接口,用于发送和接收比特币支付,无需第三方。

v1.0.1 2022-12-31 03:20 UTC

This package is not auto-updated.

Last update: 2024-09-22 09:44:00 UTC


README

使用您的Electrum钱包轻松接受比特币支付

无需第三方库,使用Electrum v4xx

这是一个简单的类库,开发目的是从单个对象访问所有功能。作为一个独立的库,完全功能,库的原设计和架构是这个将是一个加密支付处理平台的具体组件,目前仍在开发中。

设置Electrum

在使用此库之前,Electrum必须配置为作为守护程序运行并接受JSONRPC调用。Electrum仅在本地主机上接受RPC调用,但此库允许您在其他主机上托管electrum。当您这样做时,必须在Electrum主机服务器上设置防火墙,以便将来自此库的请求转发到本地主机和Electrum中配置的RPC调用端口。以下是设置Electrum的步骤:

  • https://electrum.org/#download下载并安装Electrum
  • Electrum必须在您安装它的系统上作为守护程序运行,以下命令都在Linux命令行上有效。
  • 要以守护程序启动electrum,请输入命令 electrum daemon -d
  • 必须指定用户名 electrum setconfig rpcuser '用户名'
  • 和密码 electrum setconfig rpcpassword '密码'
  • 指定electrum监听的端口 electrum setconfig rpcport 7777
  • 在此处重新启动electrum守护程序,以便新设置生效。
  • 然后告诉electrum加载钱包 electrum load_wallet
  • 注意:如果您想测试您的配置,请在每个命令的末尾添加--testnet标志。
  • 此时,您的electrum钱包已准备好接收RPC命令。以下是一个Linux脚本来自动化此过程,请注意您必须替换< >之间的值。
#!/bin/sh
electrum daemon -d --testnet
electrum setconfig rpcuser <username> --testnet
electrum setconfig rpcpassword <password> --testnet
electrum setconfig rpcport 7777 --testnet
electrum stop --testnet
electrum daemon -d --testnet
electrum load_wallet --testnet

使用客户端与对象管理器接口

有两种方式可以调用electrum接口。始终建议您使用客户端对象进行所有调用,但在某些情况下,您可能希望创建自己的对象管理器。以下是使用地址管理器获取新接收地址的示例。

使用客户端对象示例(推荐方法)

$client = new ElectrumClient('user','pass','localhost',7777,false);
try {
    $client->Init();
} catch(ElectrumClientConfigurationException $e) {
    echo 'Electrum is not running';
    return;
}
// get a new payment address using the client object manager
$address = $client->getManager(AddressManager::class)->GetNewPaymentAddress();

创建对象管理器示例(替代方法)

$client = new ElectrumClient('user','pass','localhost',7777,false);
try {
    $client->Init();
} catch(ElectrumClientConfigurationException $e) {
    echo 'Electrum is not running';
    return;
}
// create an address manager 
$addressManager = new AddressManager($client);
$address = $addressManager->GetNewPaymentAddress();

本文件的其余部分描述了库中可用的API,我尽力使文档尽可能简洁,但如果您发现错误,请通过电子邮件告诉我。

地址功能

地址功能通过AddressManager对象提供

$addressManager = $client->getManager(AddressManager::class);
  • AddressManager->GetNewPaymentAddress() : string
    • 创建新的比特币支付地址
    • 返回包含新接收地址的字符串
// ...create client and initialize
$address = $client->getManager(AddressManager::class)->GetNewPaymentAddress();
  • AddressManager->GetAddressBalance(string $address, bool $confirmed) : float
    • 获取比特币地址的余额
    • 参数: $address 比特币地址的字符串值
    • 参数: $confirmed 布尔值,如果您只想看到余额中的确认交易,则为true,否则为false
    • 返回: 该地址的浮点余额值
// ... create client and initialize
// ... get address
// pass true as the second argument if you only want confirmed transactions
// pass false if you want confirmed and unconfirmed transactions included in the balance
$balance = $client->getManager(AddressManager::class)->GetAddressBalance($address, false);
  • AddressManager->IsValidAddress(string $address) : bool
    • 确定地址是否有效
    • 参数: $address 包含要检查的地址的字符串
    • 返回:如果地址有效则返回 true,否则返回 false
  • AddressManager->IsMyAddress(string $addres) : bool
    • 判断地址是否与您的钱包相关联
    • 参数:$address 一个字符串,包含要检查的比特币地址
    • 返回:如果地址属于您的钱包则返回 true,否则返回 false。
  • AddressManager->GetAddressHistory(string $address) : array
    • 获取指定地址的交易历史
    • 参数:$address 一个字符串,包含您要获取历史记录的地址
    • 返回一个关联数组,包含地址的交易历史,格式如下
array(3) {
    [0]=>
        array(2) {
            ["height"] => 
            int(2348296)
            ["tx_hash"] => 
            string(64) "ae0722e99cc8c7759c0eff973dabdd247c94edf111259f11babe02aae629f3a8"
        }
    [1]=>
        array(2) {
            ["height"] => 
            int(2348296)
            ["tx_hash"] => 
            string(64) "1583791b040ba101e7fbb71c8dd07ecc0b6166e2217d2f5c1f426fb0d40e7077"
        }
    [2]=>
        array(2) {
            ["height"] => 
            int(2348296)
            ["tx_hash"] => 
            string(64) "787a0e4e5bcab07524da9ac60802c163b86fcd297f9649ced6fafbb2005c5adf"
        }
}

钱包函数

钱包函数可通过 WalletManager 对象访问

$walletManager = $client->getManager(WalletManager::class);
  • WalletManger->GetWalletBalance(bool $confirmed = false) : float
    • 参数:$confirmed(可选)默认为 false;如果只想包括已确认的交易在钱包余额中,则设置为 true。
    • 返回:钱包的浮点余额。

交易函数

交易函数可通过 TransactionManager 对象访问

$transactionManager = $client->getManager(TransactionManager::class);
  • TransactionManager->BroadCastTransaction(string $transactionid) : string
    • 将交易广播到网络
    • 参数:$transaction 包含交易 ID 的字符串
    • 返回:交易哈希字符串
  • TransactionManager->IsFeeAmountValid(float $fee_level) : bool
    • 判断费用水平是否有效
    • 参数:$fee_level float 0.0 到 1.0
    • 返回:如果费用水平有效则返回 true,否则返回 false
  • TransactionManager->GetRecommendedTransactionFee(float $level = 0.5) : float
    • 根据费用水平返回推荐交易费用
    • 参数:$level(可选)包含费用水平的浮点值,默认为 0.5
    • 返回:包含推荐费用金额的浮点数
  • TransactionManager->GetTransactionConfirmations(string $transaction) : int
    • 获取交易在网络上的确认次数
    • 参数:$transaction 包含交易 ID 的字符串
    • 返回:交易在网络上的确认次数的整数值

支付函数

支付函数可通过 PaymentManager 对象访问

$paymentManager = $client->getManager(PaymentManager::class);
  • PaymentManager->PayTo(string $address, float $amount, float $fee) : string
    • 向指定的地址支付指定金额
    • 参数:$address 包含要支付比特币地址的字符串值
    • 参数:$amount 要支付的金额
    • 参数:$fee 要支付的交易费用
    • 返回:包含交易 ID 的字符串
  • PaymentManager->PayMax(string $address, float $fee) : string
    • 将钱包余额总额支付到指定的地址
    • 参数:$address 包含要支付比特币地址的字符串值
    • 参数:$fee 要支付的交易费用
    • 返回:包含交易 ID 的字符串

版本函数

版本函数可通过 VersionManager 对象访问

$versionManager = $client->getManager(VersionManager::class);
  • VersionManager->GetElectrumVersion() : string
    • 提供 Electrum 钱包的版本信息
    • 返回一个格式为 nn.nn.nn(主版本.次版本.修订版)的版本信息字符串
  • VersionManager->GetVersionInfo(string $versionInfo) : int
    • 返回特定版本信息(主版本、次版本、修订版)
    • 参数:VersionManager 有 3 个常量可用于检索版本信息
      • VersionManager::MAJOR_VERSION
      • VersionManager::MINOR_VERSION
      • VersionManager::REVISION
    • 返回:请求的版本信息的整数值
$major = $versionManager->GetVersionInfo(VersionManager::MAJOR_VERSION);
$minor = $versionManager->GetVersionInfo(VersionManager::MINOR_VERSION);
$revision = $versionManager->GetVersionInfo(VersionManager::REVISION);