andrey-vasarovsky / crypto-gateway-engine
支持BTC、LTC、ETH、TRX、XRP的加密支付网关
Requires
- php: >=8.0
- ext-bcmath: *
- ext-gmp: *
- ext-json: *
- andrey-vasarovsky/bitcoin-php: 1.0.x-dev
- bensampo/laravel-enum: ^6.2
- 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
This package is auto-updated.
Last update: 2024-09-07 18:09:57 UTC
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)个地址,只需您需要放置所需的路径。更多详细信息,您可以参阅BIP-32规范
要从我们的钱包向n2k8dJGvQa9Z4G5gPDogKPsopbvoGoJmaR
发送0.0001 BTC,您可以使用以下代码,当然,您的钱包总额必须大于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);