cybertines / crypto-laravel
BTC、TRX 的加密支付网关
Requires
- php: >=8.0
- ext-bcmath: *
- ext-gmp: *
- ext-json: *
- bensampo/laravel-enum: ^6.2
- cybertines/bitcoin: ^1.0
- iexbase/tron-api: ^v5.0
- laravel/framework: >=8
- lessmore92/php-ripple-binary-codec: ^1.0
- lessmore92/php-ripple-keypairs: ^1.0
- spatie/data-transfer-object: ^3.9
- web3p/ethereum-tx: ^0.4.3
Requires (Dev)
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^9.5.8
README
API 服务
此组件使用以下 API 服务
Infura 您必须创建账户。然后创建一个新的项目,产品为 Ethereum。之后您将收到项目 ID 值。然后将此密钥粘贴到环境变量 "INFURA_PROJECT_ID"。此服务用于 Ethereum 区块链。
Nownodes 您只需要填写电子邮件输入并点击按钮 "获取免费 API 密钥"。然后您将在您的电子邮件中收到 API 密钥。然后将此密钥粘贴到环境变量 "NOWNODES_API_KEY"。此服务用于 Bitcoin/Litecoin 区块链。
Trongrid 此服务用于 Tron 区块链。它无需任何 API 密钥即可使用。
Xrp ledger 此服务用于 Ripple 区块链。它无需任何 API 密钥即可使用。
主网/测试网区块链
如果您想使用组件在测试网,您必须设置以下环境参数
BTC_TESTNET=true
LTC_TESTNET=true
ETH_TESTNET=true
XRP_TESTNET=true
TRX_TESTNET=true
助记词
目前所有项目都只使用一个助记词。从这个助记词将生成新的钱包地址。此外,路径索引为 0 的钱包将处理所有提款。要设置此助记词,您必须填写环境参数 MNEMONIC_PHRASE
测试钱包
为了测试,您可以生成自己的钱包或使用以下一个
TRX
注意:当您发送 trc20 代币时,您的 trx 余额必须大于 0,因为费用仅在 trx 中支付
ETH
注意:当您发送 erc20 代币时,您的 eth 余额必须大于 0,因为费用仅在 eth 中支付
##XRP 测试浏览器
注意:向新地址的第一笔交易必须大于 10 XRP,否则交易将失败,您甚至可能在浏览器中找不到地址,更多 详情
BTC
LTC
如何使用此组件?
当您想要生成钱包时,您需要种子短语(助记词)。这是主要密钥。您可以使用自己的种子短语或生成一个新的。要生成新的种子短语,您可以按照以下步骤操作
$service = app(WalletGenerator::class); $mnemonic = $service->generateSeed();
生成 BTC 加密钱包
$service = app(WalletGenerator::class); $mnemonic = $service->generateSeed(); $path = 0; $wallet = $service->generate(new CryptoCurrencyCoin(CryptoCurrencyCoin::BTC), $mnemonic, $path);
从一个助记词中,您可以生成 (2^31 - 1) 个地址,只需输入需要的 $path 即可。更多详细信息,您可以在 BIP-32 规范中阅读
要从我们的钱包发送 0.0001 BTC 到 n2k8dJGvQa9Z4G5gPDogKPsopbvoGoJmaR,您可以使用以下代码,当然,在您的钱包中必须的总数大于 0.0001 + 网络费用
$walletService = app(WalletGenerator::class); $mnemonic = $walletService->generateSeed(); $coin = new CryptoCurrencyCoin(CryptoCurrencyCoin::BTC); $senderWalletDto = $walletService->generate($coin, $mnemonic, 0); $currency = new Currency(CryptoCurrency::BTC(), new CurrencyNetwork(TokenType::DEFAULT(), 8)); $senderWallet = new Wallet($senderWalletDto->address, $senderWalletDto->privateKey, $currency, $senderWalletDto->pubKey); $crypto = AbstractCryptoFactory::instanceByCurrency($currency); $destinationAddressDto = new DestinationAddressDto([ 'address' => 'n2k8dJGvQa9Z4G5gPDogKPsopbvoGoJmaR', 'amount' => 0.0001 ]); $transaction = $crypto->createTransaction($senderWallet)->create($destinationAddressDto); $result = $crypto->broadcastTransaction($transaction);