mpesa-express
v1.0.6
Published
this is a npm package for integrating mpesa savices with node js
Downloads
6
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
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/