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_html
or www
).
>
> 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 checks
-
`composer tests` - run tests
-
`composer format` - format code against standards
-
`composer docs` - build API documentation
-
`composer phpmd` - run PHP Mess Detector
-
`composer phpcs` - run PHP CodeSniffer
License
Licensed under MIT