flutterwave
Version:
A nodejs library for the Flutterwave API
125 lines (94 loc) • 3.89 kB
JavaScript
/**
* Flutterwave ACH class
*
* @class FlutterwaveAch
* @constructor
*/
var FlutterwaveAch = function (FlutterwaveBase) {
/**
* Retrieves a list of Institutions
*
* @method getInstitutions
* @param {Function} callback
*/
this.getInstitutions = function (callback) {
var requestParams = {};
requestParams.data = {};
requestParams.method = 'POST';
requestParams.data.merchantid = FlutterwaveBase.getMerchantKey();
return FlutterwaveBase.makeRequest('card/mvva/institutions', requestParams, callback);
}
/**
* Gets an institution by ID
*
* @method getInstitutionById
* @param {String} institutionId
* @param {Function} callback
*/
this.getInstitutionById = function (institutionId, callback) {
var requestParams = {};
requestParams.method = 'POST';
requestParams.data = {};
requestParams.data.merchantid = FlutterwaveBase.getMerchantKey();
requestParams.data.institutionid = institutionId;
requestParams.data = FlutterwaveBase.validateAndEncryptParams(requestParams.data, this.endpointParamSpec('/institutions/id'), FlutterwaveBase.getMerchantAPIKey());
return FlutterwaveBase.makeRequest('card/mvva/institutions/id', requestParams, callback);
}
/**
* Adds a user
*
* @method addUser
* @param {Object} userData {username, password, pin, merchantid, email, institution}
* @param {Function} callback
*/
this.getUserTransactions = function(userData, callback) {
var requestParams = {};
userData.merchantid = FlutterwaveBase.getMerchantKey();
requestParams.data = FlutterwaveBase.validateAndEncryptParams(userData, this.endpointParamSpec('/mvva/adduser'), FlutterwaveBase.getMerchantAPIKey());
requestParams.method = 'POST';
return FlutterwaveBase.makeRequest('card/mvva/adduser', requestParams, callback);
}
/**
* Adds a user
*
* @method chargeACH
* @param {Object} chargeData {publictoken, accountid, custid, merchantid, narration, trxreference, amount, currency}
* @param {Function} callback
*/
this.chargeACH = function(chargeData, callback) {
var requestParams = {};
chargeData.merchantid = FlutterwaveBase.getMerchantKey();
requestParams.data = FlutterwaveBase.validateAndEncryptParams(chargeData, this.endpointParamSpec('/mvva/chargeach'), FlutterwaveBase.getMerchantAPIKey());
requestParams.method = 'POST';
return FlutterwaveBase.makeRequest('card/mvva/chargeach', requestParams, callback);
}
this.endpointParamSpec = function (path)
{
var specs = {};
specs['/institutions/id'] = FlutterwaveBase.objectBuilder({})
.build('institutionid', 'required:true, encrypt:true')
.build('merchantid', 'required:true, encrypt:false')
.end();
specs['/mvva/adduser'] = FlutterwaveBase.objectBuilder({})
.build('username', 'required:true, encrypt:true')
.build('password', 'required:true, encrypt:true')
.build('pin', 'required:true, encrypt:true')
.build('email', 'required:true, encrypt:true')
.build('institution', 'required:true, encrypt:true')
.build('merchantid', 'required:true, encrypt:false')
.end();
specs['/mvva/chargeach'] = FlutterwaveBase.objectBuilder({})
.build('publictoken', 'required:true, encrypt:true')
.build('accountid', 'required:true, encrypt:true')
.build('custid', 'required:true, encrypt:true')
.build('narration', 'required:true, encrypt:true')
.build('trxreference', 'required:true, encrypt:true')
.build('amount', 'required:true, encrypt:true')
.build('currency', 'required:true, encrypt:true')
.build('country', 'required:true, encrypt:true')
.build('merchantid', 'required:true, encrypt:false')
.end();
return specs[path];
}
}
module.exports = FlutterwaveAch;