Thagichu.

T.

Javascript library for Mpesa API

Javascript library for Mpesa API

Published at Jun 6, 2022

Writen by Thagichu Anthony

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

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

  • Typescript
  • Promises

Getting Started

mpesa express

Installation

        npm install mpesa-express

        or

        yarn add 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>", // bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919
  BusinessShortCode: "<INTEGER>", // 174379
  ShortCode: "<INTEGER>", //600000

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

  SecurityCredential: "<STRING>", //Safaricom147!
  Initiator: "<STRING>", //testapi

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

Test Details

Shortcode 1: 600147 Initiator Name: (Shortcode 1) testapi Security Credential: (Shortcode 1) Safaricom147! Shortcode 2: 600000 Test MSISDN: 254708374149 ExpiryDate: 2017-11-13T18:59:13+03:00 Lipa Na Mpesa Online Shortcode: 174379 Lipa Na Mpesa Online PassKey: bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919

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/

License

This project is licensed under the MIT License.

Designed & Developed by Dev Thagichu
© 2018-2024 Blogfolio.All Rights Reserved.