Now Playing Mathcore

    @kevin.eu/kevin-platform-client
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    kevin. platform client

    kevin. API implementation for node.js

    Example

    kevin. platform client response

    Success

    On success, an exact response documented in https://api-reference.kevin.eu is returned.

    Example below displays possible response from /auth/countries endpoint

    {
      data: [
        'AT', 'BE', 'BG', 'CZ', 'DE',
        'DK', 'EE', 'ES', 'FI', 'FR',
        'GB', 'GR', 'HR', 'HU', 'IE',
        'IS', 'IT', 'LT', 'LU', 'LV',
        'NL', 'NO', 'PL', 'PT', 'RO',
        'SE', 'SI', 'SK'
      ]
    }

    Failure

    On failure, an error inheriting KevinError class is thrown. Possible errors are:

    • KevinBadRequestError
    • KevinUnauthorizedError

    Each error contains useful information such as httpCode, errorName, errorCode etc.

    Initialize client

    const kevin = require('@kevin.eu/kevin-platform-client');
    
    const clientId = 'my-client-id';
    const clientSecret = 'my-client-secret';
    
    const client = new kevin.Client(clientId, clientSecret);

    General Service

    Supported countries

    Get list of countries that are supported by kevin.

      const response = await client.general.getCountries();
    
      const countries = response.data;

    Bank

    Get single bank data from the bank list

      const bankId = 'SEB_LT_TEST';
    
      const bank = await client.general.getBank(bankId);

    Supported banks

    Get all the supported banks for country or project

    ❗️If no country code is provided, all banks available to the project are returned

      const countryCode = 'LT';
    
      const response = await client.general.getBanks(countryCode);
    
      const banks = response.data;

    Savings banks

    Get savings bank list for given bank

    ❗️Not all banks have savings banks

      const bankId = 'SEB_LT_TEST';
    
      const response = await client.general.getBanks(countryCode);
    
      const banks = response.data;

    Supported payment methods

    Get list of supported payment methods for given project

      const response = await client.general.getPaymentMethods();
    
      const paymentMethods = response.data;

    Project settings

    Get all project settings

      const projectSettings = await client.general.getProjectSettings();

    Payment Initiation Service

    Bank payment

    Initiate bank payment

    const options = {
      headers: {
        'Redirect-URL': 'https://redirect.kevin.eu/payment.html',
      },
      query: {
        redirectPreferred: true
      },
      body: {
        amount: '1.23',
        currencyCode: 'EUR',
        description: 'Lorem Ipsum',
        bankPaymentMethod: {
          creditorName: 'John Doe',
          endToEndId: '123',
          creditorAccount: {
            iban: 'LT000000000000000000',
          }
        }
      },
    }
    
    const payment = await client.payment.initiatePayment(options);

    Card (hybrid) payment

    Initiate a card payment

    ❗️All card payments are required to contain bank payment data

      const options = {
      headers: {
        'Redirect-URL': 'https://redirect.kevin.eu/payment.html',
      },
      query: {
        redirectPreferred: true
      },
      body: {
        amount: '1.23',
        currencyCode: 'EUR',
        description: 'Lorem Ipsum',
        bankPaymentMethod: {
          creditorName: 'John Doe',
          endToEndId: '123',
          creditorAccount: {
            iban: 'LT000000000000000000',
          }
        },
        cardPaymentMethod: {}
      },
    }
    
    const payment = await client.payment.initiatePayment(options);

    Get payment

    Returns information for given payment

    const options = { paymentId: 'my-payment-id' };
    
    const payment = await client.payment.getPayment(options);

    Payment status

    Returns current status for given payment

    const options = { paymentId: 'my-payment-id' };
    
    const paymentStatus = await client.payment.getPaymentStatus(options);

    Payment refund

    Initiate payment refund

    ❗️You can initiate one or more partial refunds for one payment

    const options = { 
      paymentId: 'my-payment-id',
      amount: '1.23',
    };
    
    const refund = await client.payment.initiatePaymentRefund(options);

    Get refunds

    Returns all refunds for given payment

    const paymentId = 'my-payment-id';
    
    const response = await client.payment.getPaymentRefunds(paymentId);
    
    const paymentRefunds = response.data;

    Authentication Service

    Start authentication

    Returns auth key which can be exchanged to token

    const options = {
      headers: {
        'Request-Id': '123',
        'Redirect-URL': 'https://redirect.kevin.eu/authorization.html'
      },
      query: {
        scopes: ['payments', 'accounts_basic'],
      },
    };
    
    const authenticationData = await client.auth.authenticate(options);

    Receive token

    Exchange auth key to a bearer token and refresh token pair

    const authKey = 'my-auth-key';
    
    const tokenData = await client.auth.receiveToken(authKey);

    Refresh token

    Exchange refresh token to a new bearer token

    const refreshToken = 'my-refresh-token';
    
    const tokenData = await client.auth.refreshToken(refreshToken);

    Get token content

    Receive information about a bearer token

    const token = 'my-bearer-token';
    
    const tokenContentData = await client.auth.receiveTokenContent(token);

    Account Information Service

    Get accounts list

    Get user accounts information

    const options = {
      token: 'my-bearer-token',
      headers: {
        'PSU-IP-Address': 'my-ip-address',
        'PSU-User-Agent': 'my-user-agent',
        'PSU-IP-Port': 'my-port',
        'PSU-Http-Method': 'GET',
        'PSU-Device-ID': 'my-device-id',
      },
    };
    
    const accountList = await client.account.getAccounts(options);

    Get account details

    Receive user account information

    const options = {
      token: 'my-bearer-token',
      accountId: 'my-account-id',
      headers: {
        'PSU-IP-Address': 'my-ip-address',
        'PSU-User-Agent': 'my-user-agent',
        'PSU-IP-Port': 'my-port',
        'PSU-Http-Method': 'GET',
        'PSU-Device-ID': 'my-device-id',
      },
    };
    
    const accountData = await client.account.getAccount(options);

    Get account transactions

    Get user account transaction history

    const options = {
      token: 'my-bearer-token',
      accountId: 'my-account-id',
      dateFrom: '1970-01-01',
      dateTo: '1970-01-01',
      headers: {
        'PSU-IP-Address': 'my-ip-address',
        'PSU-User-Agent': 'my-user-agent',
        'PSU-IP-Port': 'my-port',
        'PSU-Http-Method': 'GET',
        'PSU-Device-ID': 'my-device-id',
      },
    };
    
    const accountTransactions = await client.account.getAccountTransactions(options);

    Get account balance

    Get user account balance

    const options = {
      token: 'my-bearer-token',
      accountId: 'my-account-id',
      headers: {
        'PSU-IP-Address': 'my-ip-address',
        'PSU-User-Agent': 'my-user-agent',
        'PSU-IP-Port': 'my-port',
        'PSU-Http-Method': 'GET',
        'PSU-Device-ID': 'my-device-id',
      },
    };
    
    const response = await client.account.getAccountBalance(options);
    
    const accountTransactions = response.data;

    Security manager

    Verify webhook signature

    Make sure that received webhook is authentic

    const endpointSecret = 'my-endpoint-secret';
    
    const securityManager = new kevin.SecurityManager(endpointSecret);
    
    // webhook request headers object
    const headers = req.headers;
    
    // webhook request body object
    const body = req.body;
    
    // URL to which webhook was requested
    const webhookUrl = 'https://example.com/notify?orderId=123';
    
    // Timestamp timeout in milliseconds
    const timestampTimeout = '300000';
    
    const isWebhookSignatureValid = securityManager.verifySignature(body, headers, webhookUrl, timestampTimeout); 

    Install

    npm i @kevin.eu/kevin-platform-client

    DownloadsWeekly Downloads

    608

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    53.6 kB

    Total Files

    29

    Last publish

    Collaborators

    • viktornedelko
    • karol.kevin
    • maciulis
    • kevin-devops