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

mpesa-express

v1.0.6

Published

this is a npm package for integrating mpesa savices with node js

Downloads

5

Readme

MPESA EXPRESS

Mpesa Express is an open source library Designed, Developed and Maintained by Dev Thagichu [ https://github.com/devthagichu ].

The Library is a wrapper around Safaricom's Daraja API that can be used in Node JS Applications

Safaricom Daraja API: https://developer.safaricom.co.ke/

support

  • [x] Typescript
  • [x] Promises

Getting Started

mpesa express

Installation

    npm install mpesa-express

    or

    yarn add mpesa-express

Quick Start

    npm install mpesa-express

Add to project

    const Mpesa = require ('mpesa-express');

    // Initialize  with options

    const options = {

     // Cousumer Key and Consumer Secret are found on your Client Dashboard
     // https://developer.safaricom.co.ke/user/me/apps

     consumer_key: "<STRING>",
     consumer_secret: "<STRING>",

     // Passkey , Business Shortcode and Shortcode are found on the Test Credentials Page
     // https://developer.safaricom.co.ke/test_credentials

     passkey: "<STRING>",
     BusinessShortCode: "<INTEGER>", // 174379
     ShortCode: "<INTEGER>", //174379

     // Secruity Credentials is generated by adding the consumer secret as
     // the Initiator Security Password and clicking Generate Credentials

     SecurityCredential: "<STRING>",
     Initiator: "<STRING>",

     callBackBaseUrl: "<STRING>",
   };


    const mpesa = new Mpesa(options)

Features

Lipa Na M-Pesa Online Payment API

Use this API to initiate online payment on behalf of a customer.

https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpush/v1/processrequest

    // The Lipa Na M-Pesa Online Payment options are found on the API Section under Lipa Na M-Pesa Online Payment API
    // https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpush/v1/processrequest


    // The transaction amount you want to simulate

    const Amount = "<INTEGER>" // 1

    // The Transacting Mobile Number

    const PhoneNumber = "<INTEGER>" // 2547xxxxxxxx

    // Any Refferance or ID that you would what to associate the
    // transaction with

    const AccountReference = "<STRING>" // Invoice-001

    // Any Description that you would what to associate the
    // transaction with

    const TransactionDesc = "<STRING>" // Admission fee


    mpesa.sktPush(Amount, PhoneNumber, AccountReference, TransactionDesc)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

Lipa Na M-Pesa Query Request API

Use this API to check the status of a Lipa Na M-Pesa Online Payment.

https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpushquery/v1/query

    // The Lipa Na M-Pesa Query Request API options are found on the API Section under Lipa Na M-Pesa Query Request API
    // https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpushquery/v1/query

    // This is a global unique identifier of the processed checkout transaction request.

    const CheckoutRequestID = "<STRING>" // ws_CO_DMZ_123212312_2342347678234

    mpesa.stkCheck(CheckoutRequestID)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

C2B Register URL

Use this API to register validation and confirmation URLs on M-Pesa

https://developer.safaricom.co.ke/c2b/apis/post/registerurl

    // The C2B options are found on the API Section under C2B Register URL
    // https://developer.safaricom.co.ke/c2b/apis/post/registerurl


    // Confirmation URL is the CALLBACK URL to your app
    // Safaricom will send a POST request to this url once a C2B payment is confirmed

    const ConfirmationURL = "<STRING>" // https://youapp/confirm

    // Validation URL is the CALLBACK URL to your app
    // Safaricom will send a POST request to this url once a C2B payment is confirmed

    const ValidationURL = "<STRING>" // https://youapp/valid

    // Both ConfirmationURL and ValidationURL must be HTTPS

    // Response types are: Completed or Cancelled.

    const ResponseType = "<STRING>"

    // This is the Business C2B shortcode

    const ShortCode = "<INTEGER>" // 600000

    mpesa.c2bRegister( ConfirmationURL, ValidationURL, ResponseType, ShortCode)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

C2B Simulate Transaction

This API is used to make payment requests from Client to Business (C2B).
You can use the sandbox provided test credentials down below to simulates a payment made from
the client phone's STK/SIM Toolkit menu, and enables you to receive the payment requests in real time.

https://developer.safaricom.co.ke/c2b/apis/post/simulate

    // The C2B options are found on the API Section under C2B Simulate Transaction
    // https://developer.safaricom.co.ke/c2b/apis/post/simulate


    // This is the Business C2B shortcode

    const ShortCode = "<INTEGER>" // 600000

    // The transaction type you want to simulate
    // CommandID types are: CustomerPayBillOnline OR CustomerBuyGoodsOnline.

    const CommandID = "<STRING>"

    // The transaction amount you want to simulate

    const Amount = "<INTEGER>" // 1

    // The Transacting Mobile Number

    const Msisdn = "<INTEGER>" // 2547xxxxxxxx

    // Any Refferance or ID that you would what to associate the
    // transaction with

    const BillRefNumber = "<STRING>" // Invoice-001

    mpesa.c2bTransact(ShortCode, CommandID, Amount, Msisdn, BillRefNumber)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

B2C Payment Request

Use this API to transact between an M-Pesa short code to a phone number registered on M-Pesa.

https://developer.safaricom.co.ke/b2c/apis/post/paymentrequest

    // The B2C Payment Request options are found on the API Section under B2C Payment Request
    // https://developer.safaricom.co.ke/b2c/apis/post/paymentrequest


    // The transaction amount you want to simulate
    const Amount = "<INTEGER>" // 1

    // The B2C shortcode
    const PartyA = "<INTEGER>" // 600000

    // The Phone Number receiving the money
    const PartyB = "<INTEGER>" // 254722000000

    // 	Comments that are sent along with the transaction.
    const Remarks = "<STRING>" // Monthly check

    // The transaction type you want to simulate
    // CommandID types are:
    // SalaryPayment
    // BusinessPayment
    // PromotionPayment

    const CommandID = "<STRING>" // BusinessPayment

    // Any additional information to be associated with the transaction.

    const Occassion = "<STRING>" // Payment for ...

    // Secruity Credentials is generated by adding the consumer secret as the Initiator Security
    // Password and clicking Generate Credentials

    const SecurityCredential = "<STRING>" // 32SzVdmCvjpmQfw3X2RK8UAv7xuhh304dXxFC5+3lslkk2TDJY/Lh6ESVwtqMxJzF7qA==

    mpesa.b2c(Amount, PartyA, PartyB, Remarks, CommandID, Occassion, SecurityCredential)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

Account Balance Request

Use this API to enquire the balance on an M-Pesa BuyGoods (Till Number)

https://developer.safaricom.co.ke/account-balance/apis/post/query

    // The Account Balance Request options are found on the API Section under Account Balance Request
    // https://developer.safaricom.co.ke/account-balance/apis/post/query


    // Type of commands

    const CommandID = "<STRING>" // AccountBalance

    // Type of organization receiving the transaction
    // Types examples
    // 1 – MSISDN
    // 2 – Till Number
    // 4 – Organization short code

    const IdentifierType = "<INTEGER>" // 1

    // 	Comments that are sent along with the transaction.

    const Remarks = "<STRING>" // Monthly check

    mpesa.checkAccountBalance(CommandID, IdentifierType, Remarks)
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

Support for this Library

All the support for this library is done through: https://github.com/devthagichu/mpesa-express/issues

Author Details

Anthony Gitau Thagichu

Twitter: https://twitter.com/devthagichu

Facebook: https://www.facebook.com/devthagichu

Youtube: https://www.youtube.com/channel/UC7_SdKhua8Ysxzj2y_1km3Q?view_as=subscriber

Linkedn: https://www.linkedin.com/in/devthagichu/