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);
// ...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);