Banklink
PHP payment library to easily integrate Baltic banklinks (supports old and new iPizza protocol), E-commerce gateaway (Estcard, Nets Estonia), Liisi Payment Link and Pocopay.
Install / Use
/learn @renekorss/BanklinkREADME
PHP Payment library
PHP payment library to easily integrate Baltic banklinks, E-commerce gateaway (Estcard, Nets Estonia), Liizi Payment Link and Pocopay.
View API documentation at https://renekorss.github.io/Banklink/
Install
composer require renekorss/banklink
Supported providers
Country / Provider| Payment | Authentication ------------------| ------------------- | ------------------ Estonia | | Danskebank | :white_check_mark: | :white_check_mark: Coop Pank | :white_check_mark: | :white_check_mark: LHV | :white_check_mark: | :white_check_mark: SEB | :white_check_mark: | :white_check_mark: Swedbank | :white_check_mark: | :white_check_mark: Luminor | :white_check_mark: | :white_check_mark: Nordea | :white_check_mark: | :white_check_mark: Pocopay | :white_check_mark: | does not apply Estcard | :white_check_mark: | does not apply Liisi Payment Link| :white_check_mark: | does not apply Lithuania | | SEB | :white_check_mark: | does not apply Swedbank | :white_check_mark: | does not apply Luminor | :white_check_mark: | does not apply Šiaulių | :white_check_mark: | does not apply Estcard | :white_check_mark: | does not apply
How to use?
For more information, please visit Wiki. Basic example is below.
SECURITY WARNING
Never keep your private and public keys in publicly accessible folder. Instead place keys under root folder (usually
public_htmlorwww).If you store keys as strings in database, then they should be accessible only over HTTPS protocol.
Payment
<?php
require __DIR__ . '/vendor/autoload.php';
use RKD\Banklink;
// Init protocol
$protocol = new Banklink\Protocol\IPizza(
'uid100010', // seller ID (VK_SND_ID)
__DIR__ . '/../keys/seb_user_key.pem', // private key
'', // private key password, leave empty, if not needed
__DIR__ . '/../keys/seb_bank_cert.pem', // public key
'http://localhost/banklink/SEB.php' // return url
);
// Init banklink
$seb = new Banklink\EE\SEB($protocol);
// Set payment data and get payment request object
// orderId, sum, message, language
$request = $seb->getPaymentRequest(123453, 150, 'Test makse', 'EST');
// You can also add custom request data and/or override request data
// Optional
$request = $seb->getPaymentRequest(123453, 150, 'Test makse', 'EST', 'EUR', [
'VK_REF' => 'my_custom_reference_number', // Override reference number
'INAPP' => true // Pocopay specific example
]);
?>
<form method="POST" action="<?php echo $request->getRequestUrl(); ?>">
<?php echo $request->getRequestInputs(); ?>
<input type="submit" value="Pay with SEB!" />
</form>
Authentication
<?php
require __DIR__ . '/vendor/autoload.php';
use RKD\Banklink;
// Init protocol
$protocol = new Banklink\Protocol\IPizza(
'uid100010', // seller ID (SND ID)
__DIR__ . '/../keys/seb_user_key.pem', // private key
'', // private key password, leave empty, if not needed
__DIR__ . '/../keys/seb_bank_cert.pem', // public key
'http://localhost/banklink/SEB.php' // return url
);
// Init banklink
$seb = new Banklink\EE\SEB($protocol);
// Get auth request object
$request = $seb->getAuthRequest();
?>
<form method="POST" action="<?php echo $request->getRequestUrl(); ?>">
<?php echo $request->getRequestInputs(); ?>
<input type="submit" value="Authenticate with SEB!" />
</form>
Response from provider
<?php
require __DIR__ . '/vendor/autoload.php';
use RKD\Banklink;
// Init protocol
$protocol = new Banklink\Protocol\IPizza(
'uid100010', // seller ID (SND ID)
__DIR__ . '/../keys/seb_user_key.pem', // private key
'', // private key password, leave empty, if not needed
__DIR__ . '/../keys/seb_bank_cert.pem', // public key
'http://localhost/banklink/SEB.php' // return url
);
// Init banklink
$seb = new Banklink\EE\SEB($protocol);
// Get response object
$response = $seb->handleResponse($_POST);
// Successful
if ($response->wasSuccessful()) {
// Get whole array of response
$responseData = $response->getResponseData();
// User prefered language
$language = $response->getLanguage();
// Only for payment data
$orderId = $response->getOrderId();
$sum = $response->getSum();
$currency = $response->getCurrency();
$sender = $response->getSender();
$transactionId = $response->getTransactionId();
$transactionDate = $response->getTransactionDate();
$message = $response->getMessage();
$automatic = $response->isAutomatic(); // true if response was sent automatically by bank
// Only for auth data
$userId = $response->getUserId(); // Person ID
$userName = $response->getUserName(); // Person name
$country = $response->getUserCountry(); // Person country
$authDate = $response->getAuthDate(); // Authentication response datetime
// Method used for authentication
// Possible values: ID Card, Mobile ID, One-off code card, PIN-calculator, Code card or unknown
$authMethod = $response->getAuthMethod();
// Failed
} else {
// Payment data
$orderId = $response->getOrderId(); // Order id to cancel order etc.
}
?>
Tasks
composer build- build by running tests and all code checkscomposer test- run testscomposer format- format code against standardscomposer docs- build API documentationcomposer phpmd- run PHP Mess Detectorcomposer phpcs- run PHP CodeSniffer
License
Licensed under MIT
Related Skills
openhue
337.3kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
337.3kElevenLabs text-to-speech with mac-style say UX.
weather
337.3kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.4kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
