ekliptor / cashp
PHP库,用于比特币现金(BCH)和SLP代币支付
Requires
- ekliptor/qr-code: ^1
Requires (Dev)
- phpunit/phpunit: ^8
- dev-master
- 1.2.12
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.2
- 1.0.1
- 1.0.0
- dev-dependabot/npm_and_yarn/tpl/js/json5-1.0.2
- dev-dependabot/npm_and_yarn/tpl/js/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/tpl/js/loader-utils-1.4.2
- dev-dependabot/npm_and_yarn/tpl/js/async-2.6.4
- dev-dependabot/npm_and_yarn/tpl/js/lodash-4.17.21
This package is auto-updated.
Last update: 2024-09-07 15:18:02 UTC
README
这是一个PHP库,可启用比特币现金(BCH)和SLP代币支付。您可以使用它轻松地与WordPress、Laravel和其他PHP框架一起使用。
安装
使用composer(推荐)
composer require "ekliptor/cashp"
手动安装
- 下载源代码,并将此库根目录中的
cashp.php
包含在内。 - 下载此PHP QR-code包的源代码,并将其解压到
src/phpqrcode
需求
PHP >= 7.1
特性
- 无需通过第三方进行链上支付
- 可配置的开源API后端,例如:rest.bitcoin.com或BCHD
- 使用xPub生成一次性的支付地址(这样您的钱包私钥就不会存储在服务器上)
- 生成带有BCH和SLP支付URI的二维码
文档
查看代码示例。
CashP类
__construct(CashpOptions $options = null)
创建主API类。
CashpOptions $options
- (可选) API选项(见下文)
getRate(): ExchangeRate
返回汇率API。
getBlockchain(): AbstractBlockchainApi
返回区块链API以生成地址、检查余额、交易等。
generateQrCodeForAddress(string $fileLocal, string $address, float $amountBCH, float $amountToken = 0.0, string $tokenID = ""): bool
为支付生成二维码。
string $fileLocal
- 您本地文件系统中存储二维码文件的路径。如果您想向用户显示二维码,则此路径应该是可访问的。如果给定的文件已存在,它将不会被覆盖(二维码旨在在您的Web临时目录中生成和缓存)。string $address
- 为此支付创建的(一次性)BCH(或SLP)地址。float $amountBCH
- BCH金额。如果用户完全用SLP代币支付,则可以为0。float $amountToken
- (可选) 要接收的可选代币金额。string $tokenID
- (可选) SLP代币的十六进制ID。如果$amountToken > 0,则必须要求。
返回bool
- 成功则返回true,否则返回false
createPaymentURI(string $address, float $amountBCH, float $amountToken = 0.0, string $tokenID = ""): string
为给定的$address返回支付URI(如果$amountToken > 0,则从"bitcoincash:"或"simpleledger:"开始)。
string $address
- 接收BCH(或SLP)地址。float $amountBCH
- 要接收的BCH金额。float $amountToken
- (可选) 要接收的SLP代币金额。string $tokenID
- (可选) SLP代币的十六进制ID。如果$amountToken > 0,则必须要求。
返回string
getBadgerButton(array $btnConf, string $address, float $amountBCH, float $amountToken = 0.0, string $tokenID = ""): string
获取BadgerButton的HTML代码。见https://badger.bitcoin.com/
array $btnConf
- 关联数组,包含按钮配置- text (string) 按钮文本
- 回调(字符串,可选)支付后要调用的全局窗口上的回调函数名称。参数:字符串 chainTxID
- cssClass(字符串,可选)按钮的附加CSS类。
- forceIndludeJs(布尔值,可选)默认为false - 再次包含JavaScript库。只有在你为多个页面生成HTML时才使用此选项。
string $address
- 接收BCH(或SLP)地址。float $amountBCH
- 要接收的BCH金额。float $amountToken
- (可选) 要接收的SLP代币金额。string $tokenID
- (可选) SLP代币的十六进制ID。如果$amountToken > 0,则必须要求。
返回值 string
- 按钮HTML。
isValidBchAddress(string $bchAddress): bool
检查BCH地址是否有效。
string $bchAddress
- 以 'bitcoincash:' 开头的CashAddress格式的地址
返回值 bool
- 如果地址有效则为true,否则为false。
isValidSlpAddress(string $slpAddress): bool
检查SLP地址是否有效。
string $slpAddress
- 以 'simpleledger:' 开头的地址
返回值 bool
- 如果地址有效则为true,否则为false。
getReturnAddress(Transaction $tx): string
获取作为交易输出中的最后一个地址定义的返回BCH地址(属于发送者的地址)。
Transaction $tx
- 从 getTransaction() 调用中获取的交易。
返回值 string
- 地址
getReturnSlpAddress(Transaction $tx): string
获取作为交易输出中的最后一个地址定义的返回SLP地址(属于发送者的地址)。
Transaction $tx
- 从 getTransaction() 调用中获取的交易。
返回值 string
- 地址
CashpOptions 类
一组高级配置属性。
$httpAgent = null
- 用于发送HTTP请求的HTTP实现。值:BasicHttpAgent|CurlHttpAgent|WordpressHttpAgent 默认为 BasicHttpAgent,但应根据您的PHP配置使用更好的选项。$exchangeRateExpirationMin = 60
- 爬取的汇率应保留在缓存中的时间。目前,汇率在脚本执行后不会保存。$httpTimeoutSec = 10
- 对REST API后端的HTTP请求的超时时间。$blockchainApiImplementation = "BitcoinComRestApi"
- 要使用的REST API后端实现。允许的值:BitcoinComRestApi|BchdProtoGatewayApi|SlpDbApi
ExchangeRate 类
获取BCH对法定货币的汇率API。
getRate(string $currency = "USD"): float
获取BCH的当前汇率。
string $currency
- 法定货币,如USD|EUR|JPY
返回值 float
BlockchainApi 类
区块链API,用于生成地址、检查余额、交易等。
static setLogger(callable $loggerFn): void
设置错误和调试输出的日志函数。用于写入日志文件或数据库。如果没有提供函数,则使用 'echo' 打印一切。
callable $loggerFn(string $subject, mixed $error, mixed $data = null)
- PHP可调用的参数
setHttpAgent(AbstractHttpAgent $agent): void
设置请求的HTTP实现(cURL、Wordpress HTTP API等)
AbstractHttpAgent $agent
-
getConfirmationCount(string $transactionID): int
返回给定区块链交易ID的确认次数。
string $transactionID
-
返回值 int
- 确认次数或-1(如果$transactionID不存在)。
createNewAddress(string $xPub, int $addressCount, string $hdPathFormat = '0/%d'): ?BchAddress
从xPub创建新地址。
string $xPub
- 扩展公钥。在Electron Cash中称为'主公钥'。int $addressCount
- 要生成唯一地址的下一个地址编号。通常这应该是一个递增的整数。string $hdPathFormat
- (可选)用于创建地址子代的HD路径。
返回值 BchAddress
- 地址或失败时的null
getTokenInfo(string $tokenID): ?SlpToken
获取关于SLP令牌的一般(网络范围)信息。
string $tokenID
-
返回值 SlpToken
- 令牌或失败时的null
getAddressBalance(string $address): float
返回给定地址的BCH余额(包括未确认的交易)。
string $address
- 以CashAddress格式表示的BCH地址。
返回 float
- 地址余额或-1(表示地址不存在)。
getAddressTokenBalance(string $address, string $tokenID): float
返回指定SLP地址的代币余额(包括未确认的交易)。
string $address
-string $tokenID
-
返回 float
- 地址余额或-1(表示地址不存在)。
getAddressDetails(string $address): ?BchAddress
返回具有所有属性的BCH地址,如余额、TXIDs等...
string $address
- 以CashAddress格式表示的BCH地址。
返回值 BchAddress
- 地址或失败时的null
getSlpAddressDetails(string $address, string $tokenID): ?SlpTokenAddress
返回指定地址的SLP代币详情,包括余额、TXIDs等...
string $address
-string $tokenID
-
返回 SlpTokenAddress
- 代币或 null
(表示失败)。
getTransaction(string $transactionID): ?Transaction
返回包含所有输入和输出(包括SLP数据)的交易。
string $transactionID
-
返回 Transaction
- 交易或 null
(表示失败)。
测试
要在项目根目录中运行单元测试,请输入以下命令(需要PHPUnit,Composer自动安装):
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests
待办事项
- 添加SLP地址验证
- 实现更多REST API功能
- 使用SLPDB创建地址(在支持后实现,使用xPub)