brianhenryie / bh-php-monero-explorer
Monero HTTP client.
Requires
This package is auto-updated.
Last update: 2024-12-07 04:01:36 UTC
README
Monero Explorer PHP Client
A thin, strongly typed PHP SDK for Onion Monero Blockchain Explorer instances' HTTP API, e.g. xmrchain.net.
Monero (XMR) is a private, decentralized cryptocurrency, developed with the goals of privacy and security first, ease of use and efficiency second.
Fetching and parsing JSON is very easy with PHP, so this library's value comes from the typed classes and the documentation in PhpDoc. Please contribute clarifications to functions' purposes.
Use
Before v1.0, function signatures are expected to change as they are properly documented.
composer require --fixed brianhenryie/bh-php-monero-explorer@dev
You also need a PSR-7 implementation and a PSR-17 implementation, the most popular being guzzlehttp/guzzle
.
ExplorerApi
is a direct mapping of API endpoints to PHP functions.
/** @var Psr\Http\Message\RequestFactoryInterface $requestFactory */ $requestFactory = new \GuzzleHttp\Psr7\HttpFactory(); /** @var Psr\Http\Client\ClientInterface $client */ $client = new \GuzzleHttp\Client(); $explorerApi = new \BrianHenryIE\MoneroExplorer\ExplorerApi( $requestFactory, $client ); /** @var \BrianHenryIE\MoneroExplorer\Model\NetworkInfo $networkInfo */ $networkInfo = $explorerApi->getNetworkInfo() $lastBlockHeight = $networkInfo->getHeight() - 1;
ExplorerTools
extends ExplorerApi
to add convenience functions.
$explorerTools = new \BrianHenryIE\MoneroExplorer\ExplorerTools( $requestFactory, $client ); $lastBlockHeight = $explorer->getLastBlockHeight();
Accept a Monero payment
To accept a payment with Monero...
- Share payment address with customer
- Note the blockchain height at that time
- Periodically/progressively check new blocks since then inspecting for payment
See: examples/VerifyingPaymentsReceived.php
.
Implementation
Initial class-monero-explorer-tools.php
extracted from monero-integrations/monerowp.
Goals:
- Strongly typed: some types are incomplete, some are deserialized as arrays
- Unit tested: 100% should be achievable on what is just a thin wrapper
- Use PSR-7 HTTP client | PSR-17 HTTP factory
- PhpDoc
- Short tutorial
Notes
- API is read-only
- API responses are JSON formatted using the JSend convention
Composer
The required libraries were chosen due to their robust code coverage:
- miWebb/JSend - 100% coverage
- JsonMapper/JsonMapper | JsonMapper.net - 100% coverage