UNPKG

daraja

Version:

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

385 lines (384 loc) 11.9 kB
import { Environment } from './types'; /** * * This class implements the M-Pesa Daraja API methods */ export declare class Mpesa { private shortcode; private consumerKey; private consumerSecret; private environment; private accessToken; private expiryDate; /** * * Creates an instance of Mpesa * @param {number} shortcode - organization shortcode * @param {string} consumerKey - app's consumer key * @param {string} consumerSecret - app's consumer secret * @param {Environment} [environment='sandbox'] - application environment * @memberof Mpesa * @constructor */ constructor( shortcode: number, consumerKey: string, consumerSecret: string, environment?: Environment ); /** * * Invoke the Lipa na M-Pesa Online Payment API. Use this method to initiate * an online payment on behalf of a customer * @param {number} amount - money that the customer pays to the shortcode * @param {number} sender - phone number of the customer sending the money * @param {number} recipient - organization shortcode to receive the funds * @param {string} passkey - Lipa na M-Pesa Online Passkey * @param {('CustomerPayBillOnline' | 'CustomerBuyGoodsOnline')} transactionType - * transaction type that is used to identify the transaction when sending the * request to M-Pesa * @param {string} accountReference - alphanumeric parameter that is defined * by your system as an Identifier of the transaction for * CustomerPayBillOnline transaction type * @param {string} transactionDescription - any additional * information/comment that can be sent along with the request from your * system * @param {string} callbackUrl - valid secure URL that is used to receive * notifications from M-Pesa API and is the endpoint to which the results * will be sent by M-Pesa API * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.mpesaExpressRequest( * 100, * 254712345678, * 123456, * 'bfb279f9aa9bdbcf15...', * 'CustomerPayBillOnline', * 'INV001', * 'Regular payment', * 'http://callbackurl.com' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ mpesaExpressRequest( amount: number, sender: number, recipient: number, passkey: string, transactionType: 'CustomerPayBillOnline' | 'CustomerBuyGoodsOnline', accountReference: string, transactionDescription: string, callbackUrl: string ): Promise<{ merchantRequestId: any; checkoutRequestId: any; }>; /** * * Invoke the Lipa Na M-Pesa Query Request API. Use this method to check the * status of a Lipa Na M-Pesa Online Payment * @param {string} passkey - Lipa na M-Pesa Online Passkey * @param {string} checkoutRequestId - global unique identifier of the * processed checkout transaction request * @see [Mpesa.mpesaExpressRequest()]{@link Mpesa#mpesaExpressRequest} * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.mpesaExpressQuery( * 'bfb279f9aa9bdbcf15...', * 'ws_CO_DMZ_123212312_2342347678234' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ mpesaExpressQuery( passkey: string, checkoutRequestId: string ): Promise<{ resultCode: any; resultDescription: any; }>; /** * * Invoke the C2B Register URL API. Use this method to register validation * and confirmation URLs on M-Pesa * @param {string} validationUrl - URL that receives the validation request * from API upon payment submission * @param {string} confirmationUrl - URL that receives the confirmation * request from API upon payment completion * @param {('Completed' | 'Canceled')} responseType - specifies what is to * happen if for any reason the validation URL is nor reachable * @memberof Mpesa * @async * @example * mpesa.c2bRegisterUrl( * 'http://validationurl.com', * 'http://confirmationurl.com' * 'Completed' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ c2bRegisterUrl( validationUrl: string, confirmationUrl: string, responseType: 'Completed' | 'Canceled' ): Promise<{ responseDescription: any; }>; /** * * Invoke the C2B Simulate Transaction API. Use this method to simulate a * payment made from the client phone's STK/SIM Toolkit menu * @param {number} amount - amount being transacted * @param {number} sender - phone number initiating the C2B transaction * @param {string} billReference - used on CustomerPayBillOnline option only * and is where a customer is expected to enter a unique bill identifier, * e.g an Account Number * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.c2bSimulateTransaction( * 100, * 254712345678, * '13123421' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ c2bSimulateTransaction( amount: number, sender: number, billReference: string ): Promise<{ conversationId: any; originatorConversationId: any; responseDescription: any; }>; /** * * Invoke the B2C Payment Request API. Use this method to transact between an * M-Pesa short code to a phone number registered on M-Pesa * @param {number} amount - amount of money being sent to the customer * @param {number} recipient - customer mobile number to receive the amount * @param {string} initiatorName - username of the M-Pesa B2C account API * operator * @param {string} initiatorPassword - password of the M-Pesa B2C account API * operator * @param {('SalaryPayment' | 'BusinessPayment' | 'PromotionPayment')} commandId - * unique command that specifies B2C transaction type * @param {string} remarks - any additional information to be associated with * the transaction * @param {string} occassion - any additional information to be associated * with the transaction * @param {string} resultUrl - URL that will be used by M-Pesa to send * notification upon processing of the payment * request * @param {string} timeoutUrl - URL that will be used by API Proxy to send * notification incase the payment request is timed out while awaiting * processing in the queue * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.b2cPaymentRequest( * 100, * 254712345678, * 'initiator', * 'p455w0rd', * 'BusinessPayment', * 'Remarks', * 'Occassion', * 'http://resulturl.com', * 'http://timeouturl.com' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ b2cPaymentRequest( amount: number, recipient: number, initiatorName: string, initiatorPassword: string, commandId: 'SalaryPayment' | 'BusinessPayment' | 'PromotionPayment', remarks: string, occassion: string, resultUrl: string, timeoutUrl: string ): Promise<{ conversationId: any; originatorConversationId: any; responseDescription: any; }>; /** * * Invoke the Account Balance Request API. Use this method to enquire the * balance on an M-Pesa shortcode * @param {(1 | 2 | 4)} identifierType - Type of organization receiving the * transaction. 1 - MSISDN, 2 - Till Number, 4 - Organization shortcode * @param {string} initiatorName - name of Initiator to initiating the * request * @param {string} initiatorPassword - password of Initiator to initiating * the request * @param {string} remarks - comments that are sent along with the * transaction * @param {string} resultUrl - path that stores information of transaction * @param {string} timeoutUrl - path that stores information of time out * transaction * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.accountBalanceRequest( * 4, * 'initiator', * 'p455w0rd', * 'Remarks', * 'http://resulturl.com', * 'http://timeouturl.com' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ accountBalanceRequest( identifierType: 1 | 2 | 4, initiatorName: string, initiatorPassword: string, remarks: string, resultUrl: string, timeoutUrl: string ): Promise<{ conversationId: any; originatorConversationId: any; responseDescription: any; }>; /** * * Invoke the Transaction Status Request API. Use this method to check the * transaction status * @param {string} transactionId - unique identifier to identify a * transaction on M-Pesa * @param {(1 | 2 | 4)} identifierType - type of organization receiving the * transaction * @param {string} initiatorName - name of Initiator initiating the request * @param {string} initiatorPassword - password of Initiator initiating the * request * @param {string} remarks - comments that are sent along with the * transaction * @param {string} occassion - optional parameter * @param {string} resultUrl - path that stores information of transaction * @param {string} timeoutUrl - path that stores information of time out * transaction * @memberof Mpesa * @async * @example * mpesa.transactionStatusRequest( * 'MX000000000', * 4, * 'initiator', * 'p455w0rd', * 'Remarks', * 'Occassion', * 'http://resulturl.com', * 'http://timeouturl.com' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ transactionStatusRequest( transactionId: string, identifierType: 1 | 2 | 4, initiatorName: string, initiatorPassword: string, remarks: string, occassion: string, resultUrl: string, timeoutUrl: string ): Promise<{ conversationId: any; originatorConversationId: any; responseDescription: any; }>; /** * * Invoke the Reversal Request API. Use this method to reverse an M-Pesa * transaction * @param {string} transactionId - unique identifier to identify a * transaction on M-Pesa * @param {string} initiatorName - name of initiator initiating the request * @param {string} initiatorPassword - password of the initiator initiating * the request * @param {string} remarks - comments that are sent along with the * transaction * @param {string} occassion - optional parameter * @param {string} resultUrl - path that stores information of the * transaction * @param {string} timeoutUrl - path that stores information of time out * transaction * @memberof Mpesa * @throws {DarajaError} * @async * @example * mpesa.reversalRequest( * 'MX000000000', * 'initiator', * 'p455w0rd', * 'Remarks', * 'Occassion', * 'http://resulturl.com', * 'http://timeouturl.com' * ).then(response => { * // SUCCESS * // do something with the response * }).catch(error => { * // FAILED * // handle the error * }) */ reversalRequest( transactionId: string, initiatorName: string, initiatorPassword: string, remarks: string, occassion: string, resultUrl: string, timeoutUrl: string ): Promise<{ conversationId: any; originatorConversationId: any; responseDescription: any; }>; }