npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

azampay

v0.0.4

Published

Azampay NodeJs SDK to help you interact with Azampay API

Downloads

32

Readme

NODEJS AZAMPAY SDK

AzamPay NodeJs SDK to help you easily and seamlessly integrate with Azampay APIs.

Table of Contents

  1. Installations
  2. Use 2.1 Get Token 2.2 Bank Checkout 2.3 Mno Checkout 2.4 Disbursement 2.5 Name Lookup 2.6 Transaction Status 2.7 Post Checkout 2.7 Payment Partners

Installation and Use

From terminal in the root directory of your project, run


npm i azampay

Use


import azampay from 'azampay'

const azampay = require('azampay').default
  • The import or require from azampay package exports two properties.

    1. getToken method that is used to retrieve access token from Azam Pay
    2. instance a class that can be used or extended to add functionalities to the azampay package

Get Token

Requirement Definition

| Property | Description | Type | Required | | ------------ | -------------------------------------------------------------------- | ------ | -------- | | env | Enum: SANDBOX | LIVE. Azampay environment. Default SANDBOX | String | [ ] | | clientId | It will be the client id generated during application registration. | String | [x] | | appName | It will be the name of application. | String | [x] | | clientSecret | It will be the secret key generated during application registration. | String | [x] | | apiKey | Azam Pay API key given as token in the settings page. | String | [x] |

Request Payload


{
  "env": "string",
  "clientId": "string",
  "appName": "string",
  "clientSecret": "string",
  "apiKey": "string",
}

Request Method


const token = await azampay.getToken(payload);

Response

If successful, the response will be of type TokenResponse or ErrorResponse


{
  data: { accessToken: string; expire: string };
  success: boolean;
  message: string;
  code: string | number;
  statusCode: number;
  bankCheckout: (
    payload: BankCheckout,
    options: RequestOptions
  ) => Promise<CheckoutResponse>;

  mnoCheckout: (
    payload: MnoCheckout,
    options: RequestOptions
  ) => Promise<CheckoutResponse>;

  postCheckout: (
    payload: PostCheckOut,
    options: RequestOptions
  ) => Promise<PostCheckOutInterface>;

  disburse: (
    payload: Disburse,
    options: RequestOptions
  ) => Promise<DisburseResponse>;

  transactionStatus: (
    payload: TransactionStatus,
    options: RequestOptions
  ) => Promise<TransactionStatusResponse>;

  nameLookup: (
    payload: NameLookup,
    options: RequestOptions
  ) => Promise<NameLookupResponse>;
}

Response Definition

| Property | Description | Type | | ----------------- | ---------------------------------------------------------------------------------------- | ---------------- | | data | Azam Pay respnse with access token and expire time | Object | | success | A true boolean value indicating that the request was successfull | Boolean | | message | Response message | String | | code | Response code. | Number | String | | statusCode | Response Http Status code. Possibly 200 or 201 | Number | | bankCheckout | A method to initiate a Bank checkout with Azam Pay. | Method | | mnoCheckout | A method to initiate MNO checkout with Azam Pay. | Method | | disburse | A method used to lookup the name associated with a bank account or Mobile Money account | Method | | transactionStatus | A method used to retrieve the status of a disbursement transaction made through AzamPay. | Method | | nameLookup | A method used to lookup the name associated with a bank account or Mobile Money account. | Method |

Bank Checkout

Initiating a bank checkout, we can use two methods, one from the token results method and the other from the Azam Pay instance exported from the azampay package.

Bank checkout method takes two arguments, the first with the request payload for Azam Pay bank checkout and second is optional with additional options.

Request Payload


{

  amount: string;
  currencyCode: string;
  merchantAccountNumber: string;
  merchantMobileNumber: string;
  merchantName?: string | null;
  otp: string;
  provider: 'CRDB' | 'NMB' |
  referenceId: string;
  additionalProperties?: Record<string, unknown> | null;
}
  1. Request Payload Definition

| Property | Definition | Type | | --------------------- | ---------------------------------------------------------------------------------------------------------- | ------ | | amount | This is amount that will be charged from the given account. | String | | currencyCode | Code of currency | String | | merchantAccountNumber | This is the account number/MSISDN that consumer will provide. The amount will be deducted from this. | String | | merchantMobileNumber | Mobile number | String | | merchantName | Nullable consumer name. | String | | otp | One time password | String | | provider | Enum: CRDB | NMB BankProvider. | String | | referenceId | This id belongs to the calling application. Maximum Allowed length for this field is 128 ascii characters. | String | | additionaProperties | This is additional JSON data that calling application can provide. This is optional. | Object |

  1. Request Options Definition
  • These are optional if you use the method from the response in getToken otherwise mandatory if using the instance and the options were not passed during instantiation.

Method


await token.bankCheckout(payload, options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.bankCheckout(payload, options)

Response

{
  transactionId: string,
  message: string,
  succcess: true
}

NB: Every response has a success property denoting whether the request was successful or not and if it wasn't, the response will be of type Error Response

MNO Checkout

For request method explanation, refer to Bank Checkout's explanation.

  1. Request Payload Definition

| Property | Definition | Type | | ------------------- | ------------------------------------------------------------------------------------------------------------ | ------ | | amount | This is amount that will be charged from the given account. | String | | currencyCode | Code of currency | String | | accountNumber | This is the account number/MSISDN that consumer will provide. The amount will be deducted from this account. | String | | provider | Enum: Airtel | Tigo | Halopesa | Azampesa | Mpesa. | String | | externalId | This id belongs to the calling application. Maximum Allowed length for this field is 128 ascii characters. | String | | additionaProperties | This is additional JSON data that calling application can provide. This is optional. | Object |


{
  accountNumber: string;
  amount: string;
  currency: string;
  externalId: string;
  provider: 'Airtel' | 'Tigo' | 'Halopesa' | 'Azampesa' | 'Mpesa' | string;
  additionalProperties?: Record<string, unknown> | null;
}

Method


await token.mnoCheckout(payload, options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.mnoCheckout(payload, options)

Response The response is the same as the Bank Checkout's

Disbursement

This method allows for the transfer of money from other countries to Tanzania. It requires the authorization token generated above, passed as a header in the request. The request should also contain details of the source, destination, and transfer details. Additionally, the request can include an external reference ID and remarks.

This method takes two arguments, mandatory payload and the other optional options as explained in Bank Checkout

Payload


{
  source: Source;
  destination: Destination;
  transferDetails: TransferDetails;
  externalReferenceId: string;
  remarks: string;
}

| Property | Description | Type | | ------------------- | --------------------------------------------------- | -------------------------------- | | source | Contains information about the source account. | Object | | destination | Contains information about the destination account. | Object | | transferDetails | Contains information about the transfer. | Object | | externalReferenceId | An external reference ID to track the transaction. | String | | remarks | Any remarks to be included with the transaction. | String |

Method


await token.disburse(payload, options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.disburse(payload, options)

Response


{
  data: string;
  message: string;
  success: boolean;
  statusCode: number;
}

Description

| Property | Description | Type | | ---------- | --------------------------------------------------------------------- | ------- | | data | A string containing the status of the transaction. | String | | message | A string containing a human-readable message describing the response. | String | | success | A boolean indicating whether the request was successful or not. | Boolean | | statusCode | An integer indicating the status code of the response. | Number |

Name Lookup

This method is used to lookup the name associated with a bank account or Mobile Money account.

This method takes two arguments, mandatory payload and the other optional options as explained in Bank Checkout

Payload


{
  bankName: string;
  accountNumber: string;
}

Description

| Property | Description | Type | | ------------- | ----------------------------------------------------------- | ------ | | bankName | Bank name or Mobile Money name associated with the account. | String | | accountNumber | Bank account number or Mobile Money number. | String |

Method


await token.nameLookup(payload, options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.nameLookup(payload, options)

Response


{
  name: string;
  message: string;
  success: boolean;
  accountNumber: string;
  bankName: string;
}

Description

| Property | Description | Type | | ------------- | ---------------------------------------------------------------- | ------- | | bankName | Bank name or Mobile Money name associated with the account. | String | | accountNumber | Bank account number or Mobile Money number. | String | | name | Name associated with the account. | String | | message | A brief description of the response status. | String | | success | A boolean value indicating if the request was successful or not. | Boolean |

Transaction Status

This method allows you to retrieve the status of a disbursement transaction made through AzamPay. This method takes two arguments, mandatory payload and the other optional options as explained in Bank Checkout

Payload


{
  reference: string;
  bankName: string;
}

Description

| Property | Description | Type | | --------- | ---------------------------------------------------------------------------------------- | ------ | | reference | The transaction ID you received when making the disbursement request. | String | | bankName | The name of the mobile network operator (MNO) you used to make the disbursement request. | String |

Method


await token.transactionStatus(payload, options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.transactionStatus(payload, options)

Response

| Property | Description | Type | | ---------- | --------------------------------------------------------------------- | ------- | | data | A string containing the status of the transaction. | String | | message | A string containing a human-readable message describing the response. | String | | success | A boolean indicating whether the request was successful or not. | Boolean | | statusCode | An integer indicating the status code of the response. | Number |

Post Checkout

For this post request, send all params that are mentioned below to this end point.

This end point will respond back with the URL of your payments. Merchant Application can open this url in a new window to continue with the checkout process of the transaction

Payload


{
  appName: string;
  clientId: string;
  vendorId: string;
  language: string;
  currency: string;
  externalId: string;
  requestOrigin: string;
  redirectFailURL: string;
  redirectSuccessURL: string;
  vendorName: string;
  amount: string;
  cart: Cart;
}

Description

| Property | Description | Type | | ------------------ | ----------------------------------------------------------- | ------ | | amount | This is amount that will be charged from the given account. | String | | appName | This is the application name. | String | | cart | Shoping cart with multiple item. | Object | | clientId | Client id is unique id for identify client. | String | | externalId | 30 charecters long unique string. | String | | language | Language code for transalate the application. | String | | redirectFailURL | URL that you want to redirected to at transaction failure. | String | | redirectSuccessURL | URL that you want to redirected to at transaction success. | String | | requestOrigin | URL which the request is being originated. | String | | vendorId | Unique id for validate vendor. | String | | vendorName | Name of vendor. | String |

Response

This returns a success boolean property indicating whether the operation was successful or not and a data string


{
  data: string
  success: boolean;
  [key: string]: unknown;
}

Payment Partners

This method will return the registered partners of the provided merchant

This method takes optional options argument as explained in Bank Checkout

Method


await token.partners(options)

const instance = new azampay.instance({accessToken: token.data.accessToken,apiKey: 'YOUR API KEY'})
await instance.partners(options)

Response

{
  success: boolean;
  partners: Partners[];
}

Description

| Property | Description | Type | | -------- | ---------------------------------------------------------------- | ------------------ | | success | A boolean value indicating if the request was successful or not. | Boolean | | partners | An array of payment partners. | Array |

Partners

| Property | Description | Type | | ---------------- | ------------------------------------------------------------------------------- | ------ | | currency | Currency code that will convert amount into specific currency format | String | | logoUrl | Payment Partner logo URL | String | | partnerName | Name of the payment partner e.g (Azampesa, Airtel, Halopesa, Tigopesa, vodacom) | String | | paymentPartnerId | Unique id for payment partner | String | | paymentVendorId | Unique id for payment vendor | String | | provider | Provider enum value e.g (airtel=2, tigo=3, halopesa=4, azampesa=5, Mpesa=10) | String | | vendorName | Name of vendor | String |

Request Options


{
  apiKey: string;
  accessToken: string;
  env: 'LIVE' | 'SANDBOX';
}

Source or Destination

Payload

 {
  countryCode: string;
  fullName: string;
  bankName: string;
  accountNumber: string;
  currency: string;
}

Description

| Property | Description | Type | | ------------- | ------------------------------------------- | ------ | | countryCode | Country / Destination code | String | | fullName | Source / Destination account full name | String | | bankName | Source / Destination account bank name | String | | accountNumber | Source / Destination account account number | String | | currency | Source / Destination account currency | String |

Transfer Details

Payload


 {
  type: string;
  amount: number;
  date: string;
}

Description

| Property | Description | Type | | -------- | --------------- | ------ | | type | Transfer type | String | | amount | Transfer amount | String | | date | Transfer date | String |

Error Response


{

  success: boolean;
  message: string;
  code: string  | number;
  statusCode: number;
}

Property Definition

| Property | Description | Type | | ---------- | ------------------------------------------------------------------------ | ---------------- | | success | A false boolean value indicating that the request was not successfull. | Boolean | | message | Error message | String | | code | Error code | Number | String | | statusCode | Error Http Status code | Number |

Developed and Maintained with ❤️ at Flexcode Labs