sandrokeil / blockchain-wallet-api
Zend Framework 2 (ZF2) client library for blockchain wallet api. Configure request, call the service and access the response data via objects.
Requires
- php: ~5.3
- sandrokeil/easy-config: ~1.0
- zendframework/zend-filter: ~2.2
- zendframework/zend-http: ~2.2
- zendframework/zend-servicemanager: ~2.2
- zendframework/zend-stdlib: ~2.2
Requires (Dev)
Suggests
- zendframework/zend-modulemanager: Zend\ModuleManager to use default module configuration e.g. services
- zendframework/zend-view: Zend\View to use satoshi view helper
This package is auto-updated.
Last update: 2024-11-28 23:21:26 UTC
README
You want an easy client for the blockchain wallet api?
You want to configure request, call the service and access the response data via objects?
You want to display bitcoin in mBTC or uBTC?
This module comes to the rescue!
Zend Framework 2 client library for blockchain wallet api. The usage is simple. Configure request, call the service and access the response data via objects.
- Adapts To Your Needs. There are several possibilities to configure this module.
- Well tested. Besides unit test and continuous integration/inspection this solution is also ready for production use.
- Great foundations. Based on Zend Framework 2 and Easy Config
- Every change is tracked. Want to know whats new? Take a look at CHANGELOG.md
- Listen to your ideas. Have a great idea? Bring your tested pull request or open a new issue. See CONTRIBUTING.md
Installation
Installation of this module uses composer. For composer documentation, please refer to getcomposer.org.
Put the following into your composer.json
{
"require": {
"sandrokeil/blockchain-wallet-api": "~1.0"
}
}
Then add Sake\BlockchainWalletApi
to your ./config/application.config.php
.
Copy config/blockchainwalletapi.local.php.dist
to config/blockchainwalletapi.local.php
and configure the credentials. Never commit this file to public repositories!
Documentation
Please refer to blockchain wallet api documentation for request details.
These request classes matches to api methods
- Send => payment
- SendMany => sendmany
- WalletBalance => balance
- ListAddresses => list
- AddressBalance => address_balance
- NewAddress => new_address
- AddressArchive => archive_address
- AddressUnarchive => unarchive_address
- AutoConsolidateAddresses => auto_consolidate
Configuration
Connection parameters can be defined in the application configuration:
<?php return array( 'sake_bwa' => array( 'connection' => array( 'default' => array( 'options' => array( // see \Sake\BlockchainWalletApi\Service\BlockchainWalletOptions for all configurations 'url' => 'https://blockchain.info/de/merchant/', // note on your country 'guid' => 'your My Wallet identifier (found on the login page)', 'main_password' => 'Your Main My wallet password', 'second_password' => 'Your second My Wallet password if double encryption is enabled', ), 'client' => 'Service factory name for Http Client, Lazy-loads a Zend\Http\Client instance if none registered' ) ) ) );
Registered service names
sake_bwa.service.default
: a \Sake\BlockchainWalletApi\Service\BlockchainWallet instance to send requests to the apisake_bwa.service.response
: a \Sake\BlockchainWalletApi\Service\ResponsePluginManager Service plugin manager to create responses via api method namesake_bwa.service.request
: a \Sake\BlockchainWalletApi\Service\RequestPluginManager Service plugin manager to create requests via api method namesake_bwa.service.input_filter
: a \Sake\BlockchainWalletApi\Service\InputFilterPluginManager Service plugin manager to create input filter via api method namesake_bwa.service.hydrator
: a \Zend\Stdlib\Hydrator\ClassMethods instance with strategies and filters for requests/responses
Registered view helper
To use this view helper you must add zendframework/zend-view
to your composer dependencies.
satoshi
: a \Zend\View\Helper\AbstractHelper instance which converts satoshi to other unit e.g. bitcoin
Examples
This module is very easy to use. However, these code snippets should help you to start.
Send bitcoins
Here is an example how to send a transaction to a bitcoin address:
<?php use Sake\BlockchainWalletApi; // $sl is the service locator $blockchain = $sl->get('sake_bwa.service.default'); /* @var $request BlockchainWalletApi\Request\Send */ $request = $sl->get('sake_bwa.service.request')->get('payment'); // or $request = new BlockchainWalletApi\Request\Send(); $request->setAmount(100000); // in satoshi $request->setTo('1KwbP2sRHW7uDsxnW8sBbymVwnSsm8cFXC'); try { // validate request if ($blockchain->isValid($request)) { /* @var $response BlockchainWalletApi\Response\Send */ $response = $service->send($request); // access to response data $transactionHash = $response->getTxHash(); } } catch (BlockchainWalletApi\Exception\ExceptionInterface $exception) { // error handling }
Send bitcoins to multiple addresses
Here is an example how to send a transaction to multiple recipients in the same transaction.
<?php use Sake\BlockchainWalletApi; // $sl is the service locator $blockchain = $sl->get('sake_bwa.service.default'); /* @var $request BlockchainWalletApi\Request\SendMany */ $request = $sl->get('sake_bwa.service.request')->get('sendmany'); // or $request = new BlockchainWalletApi\Request\SendMany(); $request->setRecipients( array( new BlockchainWalletApi\Request\Recipient('1BzHqGWhdpXyLqiYkAT7sasfCoffYo79tT', 10000), new BlockchainWalletApi\Request\Recipient('1NqH4QkkjDErD9TNC7arDQVMv4zKgfCzmb', 10000), ) ); try { // validate request if ($blockchain->isValid($request)) { /* @var $response BlockchainWalletApi\Response\SendMany */ $response = $service->send($request); // access to response data $transactionHash = $response->getTxHash(); } } catch (BlockchainWalletApi\Exception\ExceptionInterface $exception) { // error handling }
Get wallet balance
Here is an example how to retrieve wallet balance:
<?php use Sake\BlockchainWalletApi; // $sl is the service locator /* @var $blockchain BlockchainWalletApi\Service\BlockchainWallet */ $blockchain = $sl->get('sake_bwa.service.default'); /* @var $request BlockchainWalletApi\Request\WalletBalance */ $request = $sl->get('sake_bwa.service.request')->get('balance'); // or $request = new BlockchainWalletApi\Request\WalletBalance(); try { // validate request if ($blockchain->isValid($request)) { /* @var $response BlockchainWalletApi\Response\WalletBalance */ $response = $blockchain->send($request); // access to response data $balance = $response->getBalance(); // in satoshi } } catch (BlockchainWalletApi\Exception\ExceptionInterface $exception) { // error handling }
Using view helper to convert satoshi to other unit e.g. bitcoins
Here is an example how to use satoshi view helper to convert satoshi to an other unit:
<?php // assume we are in a template /* @var $response \Sake\BlockchainWalletApi\Response\WalletBalance */ echo $this->satoshi($response->getBalanace(), 'BTC'); // Bitcoin // or echo $this->satoshi($response->getBalanace(), 'mBTC'); // Milli Bits // or echo $this->satoshi($response->getBalanace(), 'uBTC'); // Micro Bitcoin