Logo Lanfrica

aksalj/pesajs

Domain:

digital infrastructure

Record type:

software
Creator:
aks
Host:
MPESA G2 API client ## PesaJs (UNMAINTAINED) #### Goal Simplify interactions with the official (`horribly documented`) M-PESA API. > `Important`: Get your `Merchant ID` and `Pass Key` when you register for MPESA API with Safaricom. #### Usage ```shell $ 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** ```javascript const PesaJs = require("pesajs"); let options = { merchant: "YOUR_MERCHANT_ID", passkey: "YOUR_PASSKEY" //debug: false || true }; let paymentService = new PesaJs.LipaNaMpesa(options); let requestData = { transaction: MY_TRANSACTION_ID, ref: MY_REFERENCE, account: USER_MPESA_NUMBER, amount: AMOUNT, // in Ksh callbackUrl: MY_CALLBACK_URL, details: "Additional transaction details if any" }; paymentService.requestPayment(requestData) .then(function(data) { // Now display M-Pesa message to user let msg = data.message; // Keep mpesa transaction id somewhere, so you can use it to confirm transaction (next step). mpesa_txn = data.mpesa_txn }) .catch(function(error){ // Oops, something went wrong! }); ``` **Confirm payment request** ```javascript let params = { transaction: MY_TRANSACTION, mpesa_txn: mpesa_txn }; paymentService.confirmPayment(params) .then(function(data) { // User should see a USSD menu on their phone at this point. // Now relax and wait for M-Pesa to notify you of the payment }) .catch(function(error){ // Oops, something went wrong! }); ``` **Receive payment notification** ```javascript // Wait for payment notification (example using express) app.post("/ipn", paymentService.paymentNotification, function(req, res) { // Do whatever with payment info like confirm purchase, init shipping, send download link, etc. let paymentData = req.payment; }); …

Languages

Licenses