Czech Open-Banking REST API
PHP library based on Czech Open-Banking API standard.
Supported services
- Account information
- Balance check
- Payment initialization (partial)
Extensibility
The goal is to support as many banks as possible using only one interface for a communication. Library already includes a special Authenticators and Connectors for some REST APIs.
Authentication
Requiring and handling authentication token is out of scope for this library.
Using \PavelMaca\OpenBanking\Auth\Authentication
interface you can use own implementation for access token handling and storage.
Some implementations require some different authentication parametrs or additional headers.
For this case, you can expand or implement own Authenticator using \PavelMaca\OpenBanking\Auth\Authentication
or \PavelMaca\OpenBanking\Auth\StandardAuthentication
.
Example:
class BankB implements \PavelMaca\OpenBanking\Auth\Authentication
{
public function getAuthHeaders(): array
{
return [
'X-Special-Header' => 'foo',
'Authorization' => 'Bearer ' . $this->getAccessToken(),
];
}
protected function getAccessToken(){
// Get access token via OAUth 2.0
}
public function getCertificate()
{
// Custom certificate handling
}
}
Handling HTTP connection
Using interface Conncetor, you can create own HTTP handler, for executing HTTP requests. Library contains StandardConnector with data hydratation into objective data layer.
Usage
$auth = new \PavelMaca\OpenBanking\Auth\StandardAuthentication();
$auth->setCertificate(__DIR__ . '/../data/cert.crt', 'secretPassword');
$auth->setAccessToken('timeLimitedToken');
$connector = new \PavelMaca\OpenBanking\Bank\StandardConnector($auth, 'http://banka.cz/', 'v1');
try {
$ais = new \PavelMaca\OpenBanking\Standard\AccountInformation($connector);
$accountList = $ais->getAccountList();
var_dump($accountList);
$cisp = new \PavelMaca\OpenBanking\Standard\BalanceCheck($connector);
$transactionDetail = new \PavelMaca\OpenBanking\Standard\CISP\Parts\TransactionDetail('CZK', 100);
$balanceCheckRequest = new \PavelMaca\OpenBanking\Standard\CISP\BalanceCheckRequest('id', 'CZ010046464', $transactionDetail);
$cisp->getBalanceCheck($balanceCheckRequest);
$pisp = new \PavelMaca\OpenBanking\Standard\PaymentInitialization($connector);
$paymentRequest = new \PavelMaca\OpenBanking\Standard\PISP\DomesticPaymentRequest('id', 100, 'CZK', 'CZ0123', 'CZ0456');
$accountBalance = $pisp->createPayment($paymentRequest);
} catch (\PavelMaca\OpenBanking\Standard\Exception\StandardException $ex) {
var_dump($ex);
}
Supported banks
Library is aimed to copy Czech standard in version 2.0. Depending exactly on specific implementation, library should handle all banks following Czech Open-Banking standard.
Tested