howrareis / helius-php-sdk
非官方 Helius PHP SDK
Requires
- php: ~8.0
- guzzlehttp/guzzle: ^7.5
- illuminate/http: ~8.0 || ~9.0
This package is not auto-updated.
Last update: 2024-09-27 17:26:30 UTC
README
非官方 Helius PHP SDK 是官方 Helius SDK 的有观点的(即可能不会遵循 TypeScript 版本的相同约定)移植
并非所有官方 SDK 的功能都已实现。一些功能可能永远不会实现,因为在 PHP 版本的 SDK 中不需要。一些缺失的功能将在未来实现。此 SDK 将具有官方 SDK 中不存在的功能或便利性。
Helius API 功能非常强大,但并非所有功能都由本 SDK 覆盖。如果您想添加一些新功能或处理新的端点,请提出问题或创建拉取请求。
在使用 SDK 之前,请查阅官方 Helius API 文档,了解方法和它们的限制。在大多数情况下,SDK 不会处理数据验证。这是最终用户的责任。
如果您还没有 Helius API 密钥,您可以从这里获得一个 here。
安装
您可以通过 composer 安装此软件包
composer require howrareis/helius-php-sdk
使用方法
use HowRareIs\HeliusPhpSdk\Helius;
$helius = new Helius('<your-api-key>'); // replace <your-api-key> with your API key
Webhooks
在使用 SDK 之前,请查阅官方 Helius API 文档,了解 webhooks 和它们的限制。
创建 webhook
$webhook_data = [ 'webhookURL' => 'https://example.com/webhook', 'accountAddresses' => [ Addresses::TENSOR, '4B4a93ekt1fmXSVkTrULaxVFHkmME82TUi5Cyc5aF7K', ], 'transactionTypes' => [ TransactionTypes::NFT_LISTING, TransactionTypes::NFT_CANCEL_LISTING, ], 'webhookType' => WebhookType::ENHANCED, 'authHeader' => 'someouthkey', ]; $webhook = $helius->createWebhook($webhook_data);
获取所有 webhook
$webhooks = $helius->getAllWebhooks();
通过 ID 获取 webhook
$webhook = $helius->getWebhookById('11111111-1111-1111-1111-111111111111'); // replace 11111111-1111-1111-1111-111111111111 with your webhook id
编辑 webhook
在更新 webhook 的 API 调用中,您需要提交 webhook 的完整数据。为了使更新更方便,editWebhook()
方法将检索原始数据并仅覆盖更新中指定的部分。
$update = [ 'transactionTypes' => [ TransactionTypes::NFT_MINT, TransactionTypes::NFT_BID, ], ]; $webhook = $helius->editWebhook($webhook_id, $update);
向 webhook 添加地址
最多可以向 webhook 添加 100,000 个地址。如果您尝试添加更多,您将收到错误。
$webhook = $helius->appendAddressesToWebhook($webhook_id, [Addresses::HYPERSPACE]);
删除 webhook
$helius->deleteWebhook($webhook_id);
创建收藏 webhook
这是另一个便利方法。在幕后,它将尝试获取该收藏的 mintlist 并创建包含 mintlist 中所有 NFT 地址的 webhook。
$payload = [ 'webhookURL' => 'https://example.com/webhook', 'transactionTypes' => [ TransactionTypes::NFT_SALE ], 'webhookType' => WebhookType::ENHANCED, 'authHeader' => 'someouthkey', ]; $webhook = $helius->createCollectionWebhook(Collections::ABC, $webhook_rules);
获取 mintlist
默认情况下,所有 mintlist 获取方法都将返回未修改的 API 响应数据。它将包括 NFT 的铸币和名称。但是,如果您只对 NFT 地址感兴趣,可以将第二个参数传递为 true。这将仅从响应中提取 NFT 地址,并作为单个数组返回。
$mintlist = $helius->getMintlist(Collections::ABC);
或
$request = [ 'verifiedCollectionAddresses' => ['SMBH3wF6baUj6JWtzYvqcKuj2XCKWDqQxzspY12xPND'], ]; $mintlist = $helius->getMintlist($request, true);
从收藏地址获取 mintlist
$mintlist = $helius->getMintlistByCollectionAddress($colllection_addrress);
从创建者地址获取 mintlist
$mintlist = $helius->getMintlistByCreatorAddress($creator_address, true);
从 NFT 地址(铸币哈希)获取 mintlist
在幕后,SDK 将首先调用 NFT Fingerprint API 来找出创建者地址和收藏地址。如果找到任一地址,它们将用于检索 mintlist。收藏地址将具有更高的优先级。
$mintlist = $helius->getMintlistFromNft($nft_mint, true);
获取 NFT 的指纹
您可以传递一个 mint 作为字符串或多个 mint 作为数组。每个请求最多 1000 个 mint。
$fingerprints = $helius->getNftFingerprints($mint_hashes);
如果您想从返回的数据中提取一个特定的字段(如 activeListings),您可以使用第二个参数。
$active_listings = $helius->getNftFingerprints($mint_hashes, 'activeListings');
在响应中,您将获得一个关联数组,其中 mint 哈希作为键,请求的字段作为值。如果找不到字段,您将获得 false。