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 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!
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
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'
)
)
)
);
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
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
This module is very easy to use. However, these code snippets should help you to start.
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
}
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
}
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
}
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