UNPKG

daraja

Version:

A NodeJS library to simplify integration with Safaricom's Daraja M-Pesa API

303 lines (302 loc) 6.29 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const request = require('request-promise-native'); exports.generateToken = async (environment, consumerKey, consumerSecret) => { try { return await request.get( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/oauth/v1/generate`, { auth: { user: consumerKey, pass: consumerSecret }, json: true, qs: { grant_type: 'client_credentials' } } ); } catch (error) { throw new Error(error.response.statusMessage); } }; exports.mpesaExpressRequest = async ( environment, accessToken, BusinessShortCode, Password, Timestamp, TransactionType, Amount, PartyA, PartyB, PhoneNumber, CallBackURL, AccountReference, TransactionDesc ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/stkpush/v1/processrequest`, { body: { AccountReference, Amount, BusinessShortCode, CallBackURL, PartyA, PartyB, Password, PhoneNumber, Timestamp, TransactionDesc, TransactionType }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.mpesaExpressQuery = async ( environment, accessToken, BusinessShortCode, Password, Timestamp, CheckoutRequestID ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/stkpushquery/v1/query`, { body: { BusinessShortCode, CheckoutRequestID, Password, Timestamp }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.c2bRegisterUrl = async ( environment, accessToken, ValidationURL, ConfirmationURL, ResponseType, ShortCode ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/c2b/v1/registerurl`, { body: { ConfirmationURL, ResponseType, ShortCode, ValidationURL }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.c2bSimulateTransaction = async ( accessToken, CommandID, Amount, Msisdn, BillRefNumber, ShortCode ) => { try { return await request.post( 'https://sandbox.safaricom.co.ke/mpesa/c2b/v1/simulate', { body: { Amount, BillRefNumber, CommandID, Msisdn, ShortCode }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.b2cPaymentRequest = async ( environment, accessToken, InitiatorName, SecurityCredential, CommandID, Amount, PartyA, PartyB, Remarks, QueueTimeOutURL, ResultURL, Occassion ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/b2c/v1/paymentrequest`, { body: { Amount, CommandID, InitiatorName, Occassion, PartyA, PartyB, QueueTimeOutURL, Remarks, ResultURL, SecurityCredential }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.accountBalanceRequest = async ( environment, accessToken, CommandID, PartyA, IdentifierType, Remarks, Initiator, SecurityCredential, QueueTimeOutURL, ResultURL ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/accountbalance/v1/query`, { body: { CommandID, IdentifierType, Initiator, PartyA, QueueTimeOutURL, Remarks, ResultURL, SecurityCredential }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.transactionStatusRequest = async ( environment, accessToken, CommandID, PartyA, IdentifierType, Remarks, Initiator, SecurityCredential, QueueTimeOutURL, ResultURL, TransactionID, Occasion ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/transactionstatus/v1/query`, { body: { CommandID, IdentifierType, Initiator, Occasion, PartyA, QueueTimeOutURL, Remarks, ResultURL, SecurityCredential, TransactionID }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.reversalRequest = async ( environment, accessToken, CommandID, ReceiverParty, ReceiverIdentifierType, Remarks, Initiator, SecurityCredential, QueueTimeOutURL, ResultURL, TransactionID, Occasion ) => { try { return await request.post( `https://${exports.getEnvPath( environment )}.safaricom.co.ke/mpesa/reversal/v1/request`, { body: { CommandID, Initiator, Occasion, QueueTimeOutURL, ReceiverIdentifierType, ReceiverParty, Remarks, ResultURL, SecurityCredential, TransactionID }, headers: { Authorization: `Bearer ${accessToken}` }, json: true } ); } catch (error) { throw new Error(error.message); } }; exports.getEnvPath = environment => environment === 'production' ? 'api' : 'sandbox';