
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