daraja
Version:
A NodeJS library to simplify integration with Safaricom's Daraja M-Pesa API
303 lines (302 loc) • 6.29 kB
JavaScript
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';
;