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

2.2.5 • 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); 

Package Sidebar

Install

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

Weekly Downloads

35

Version

2.2.5

License

MIT

Unpacked Size

54.8 kB

Total Files

29

Last publish

Collaborators

  • adam.kevin
  • msuchacz
  • skoniarek
  • kevin-devops