PesaJs
Goal
Simplify interactions with the official (horribly documented
) M-PESA API.
Important
: :construction: Work in progress, NOT ready for use in production
Usage
$ npm install pesajs
- Online checkout (
Lipa Na M-Pesa
): According to Safaricom, this is a "Web service for integrating the M-Pesa
Checkout API to a merchant site. The overall scope of this Web service is to provide primitives for application developers
to handle checkout process in a simple way."
Initiate Lipa Na M-Pesa online payment
const PesaJs = require("pesajs");
let options = {
merchant: "YOUR_MERCHANT_ID",
passkey: "YOUR_PASSKEY",
};
let paymentService = new PesaJs.LipaNaMpesa(options);
let cart = {
transaction: MY_TRANSACTION_ID,
ref: MY_REFERENCE,
account: USER_MPESA_NUMBER,
amount: AMOUNT,
callbackUrl: MY_CALLBACK_URL,
details: "Additional transaction details if any"
};
paymentService.requestPayment(cart).then(function(data) {
let msg = data.message;
let mpesa_txn = data.mpesa_txn
});
Confirm payment request
let params = {
transaction: MY_TRANSACTION,
mpesa_txn: mpesa_txn
};
paymentService.confirmPayment(params).then(function(data) {
});
Receive payment notification
app.post("/ipn", paymentService.paymentNotification, function(req, res) {
let paymentData = req.payment;
});
See the example app for a working demo.
Contributing
- Fork this repo and make changes in your own fork.
- Commit your changes and push to your fork
git push origin master
- Create a new pull request and submit it back to the project.
Bugs & Issues
To report bugs (or any other issues), use the issues page.