ekliptor/cashp

PHP库,用于比特币现金(BCH)和SLP代币支付


README

这是一个PHP库,可启用比特币现金(BCH)SLP代币支付。您可以使用它轻松地与WordPress、Laravel和其他PHP框架一起使用。

安装

使用composer(推荐)

composer require "ekliptor/cashp"

手动安装

  1. 下载源代码,并将此库根目录中的cashp.php包含在内。
  2. 下载此PHP QR-code包的源代码,并将其解压到src/phpqrcode

需求

PHP >= 7.1

特性

  • 无需通过第三方进行链上支付
  • 可配置的开源API后端,例如:rest.bitcoin.comBCHD
  • 使用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)

联系方式

Twitter

WordPress插件