node-shoket-ts
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

Shoket Client for Node.js

A node client for the Shoket Payment API

Features

  • Typescript support
  • Validate inputs
  • Support for request cancellation (using AbortController)
  • Debugging logs

Prerequisites

Installation

npm install node-shoket-ts
# OR
yarn add node-shoket-ts

Usage

Simple CJS example

const { charge } = require('node-shoket-ts');

charge({
  apiKey: 'sk_####',
  amount: '5000',
  customerName: 'Sam Smith',
  email: 'user@mail.com',
  numberUsed: '255612345678',
  channel: 'Halotel',
})
  .then(res => console.log(res))
  .catch(err => consolge.log(err));

Testing [wip]

yarn test

API docs

Charge

const charge: ({
  apiKey,
  amount,
  customerName,
  email,
  numberUsed,
  channel,
}: ICharge) => Promise<unknown>;
  • The charge function is used to accept payments.
import { charge } from 'node-shoket-ts';
const data = {
  amount: '5000',
  customer_name: 'John Doe',
  email: 'john@user.com',
  number_used: '255612345678',
  channel: 'Tigo',
};
const API_KEY = 'sk_#####';

charge({ API_KEY, ...data })
  .then(response => {
    console.log('Charge: ', response);
  })
  .catch(error => {
    console.log('Charge: ', error);
  });
Example with abortController
import { charge, RequestAbortError } from 'node-shoket-ts';

// AbortController was added in node v14.17.0 globally
// if NODE_VSERION < 14 =>  npm i abort-controller
const AbortController =
  globalThis.AbortController ||
  import('abort-controller').then(m => m.AbortController);

const controller = new AbortController();
const timeout = setTimeout(() => {
  controller.abort();
}, 150);

const data = {
  amount: '5000',
  customer_name: 'John Doe',
  email: 'john@user.com',
  number_used: '255612345678',
  channel: 'Tigo',
};
const API_KEY = 'sk_#####';

try {
  const response = await charge(
    { API_KEY, ...data },
    { signal: controller.signal }
  );
  const data = await response.json();
  console.log(data);
} catch (error) {
  if (error instanceof AbortError) {
    console.log('request was aborted');
  }
} finally {
  clearTimeout(timeout);
}

Parameter Required Description
API_KEY Yes This is the secret API key given on registering at the Shoket Official site
Amount Yes This is an amount in Tanzania shilling.
Customer Number Yes This is a customer phone number which will be used to charge a customer.
Email Yes This is a customer Email
Channel Yes Mobile-provider name which is used by the customer phone number.
Customer names Yes This is a customer full name

VerifyPayment

const verifyPayment: ({
  apiKey,
  reference,
}: IVerifyPayment) => Promise<unknown>;
  • The verifyPayment is used to verify the transaction conducted, the function has 2 parameters which are the API_KEY and the transaction reference. The parameters are arranged as follows:
import { verifyPayment } from 'node-shoket-ts';

const referenceId = 'OB3J177Lqnp6Rg6wHqr3q';
const API_KEY = 'sk_#####';

verifyPayment({ apiKey: API_KEY, reference: referenceId })
  .then(response => {
    console.log('Charge: ', response);
  })
  .catch(error => {
    console.log('Charge: ', error);
  });
Parameter Required Description
API_KEY Yes This is the secret API key given on registering at the Shoket Official site
Transaction Reference Yes This is the reference of the transaction performed already.

Contributing

Please see CONTRIBUTING for details.

Credits

License

This project is licensed under the MIT License.

Package Sidebar

Install

npm i node-shoket-ts

Weekly Downloads

2

Version

1.0.7

License

MIT

Unpacked Size

240 kB

Total Files

19

Last publish

Collaborators

  • alphao