trupay
Version:
Trupay Payment Gateway Api
117 lines (105 loc) • 4.42 kB
JavaScript
/* * * * * * * * * * * * * * * * * * * * *
* @Author: Kishan Madhesiya
* @Email: kishanmadhesiya@gmail.com
* @Skype: kishanmadhesiya
* @Client Name: TruPay (Gurgaon India)
* * * * * * * * * * * * * * * * * * * * * */
//-------------Dependencies Packages---------
const async = require('async');
const request = require('request');
const sha512 = require('sha512');
class Trupay {
constructor(initParams){
if(!initParams.base_url){
this.apiUrl = 'https://uat.trupay.in/TruPay/';
}else{
this.apiUrl = initParams.base_url;
}
this.token = initParams.token;;
this.salt = initParams.salt;
}
//---------Function List(API) Start --------------------
async getOneTimeWebSessionKey(params){
var validParams = await this.validateParameters(params);
if(validParams.status){
var hash =params.MERCH_ORDER_ID+'|'+params.TXN_AMOUNT+'|'+this.salt;
hash = await sha512(hash);
hash= hash.toString('hex');
const options = {
method: 'POST',
uri: this.apiUrl+'v1/api/getOneTimeWebSessionKey',
headers: {
'Authorization': 'Bearer '+this.token,
'Content-Type': 'application/json',
'SecureHash': hash
},
body: params,
json : true
}
return await this.apiCall(options);
}else{
return validParams;
}
}
async merchantRequestStatus(params){
var validParams = await this.validateParamsStatus(params);
if(validParams.status){
var hash =params.MERCH_ORDER_ID+'|'+params.TXN_ID+'|'+this.salt;
hash = await sha512(hash);
hash= hash.toString('hex');
const options = {
method: 'POST',
uri: this.apiUrl+'v1/api/merchantRequestStatus',
headers: {
'Authorization': 'Bearer '+this.token,
'Content-Type': 'application/json',
'SecureHash': hash
},
body: params,
json : true
}
return await this.apiCall(options);
}else{
return validParams;
}
}
//---------Function List(API) End --------------------
apiCall(options){
return new Promise(function(resolve, reject) {
request(options,function(error, response, body){
resolve(response);
})
});
}
//----------Validations Starts ----------------------
validateParameters(params){
if(!this.token || !this.salt){
return {'status':false, 'message':'Token and Salt is required'}
}else if(params.MERCH_ORDER_ID == null || params.MERCH_ORDER_ID == undefined || params.MERCH_ORDER_ID == '' || params.MERCH_ORDER_ID.length > 50){
return {'status':false, 'message':'MERCH_ORDER_ID should not be blank and max length should be less than 50.'}
}else if (params.TXN_AMOUNT == null || params.TXN_AMOUNT == undefined || params.TXN_AMOUNT == '' || params.TXN_AMOUNT.length > 8 || this.checkTwoPlaceDecimal(params.TXN_AMOUNT) !=2) {
return {'status':false, 'message':'TXN_AMOUNT should not be blank, two place of decimal and max length should be less than 5.'}
}else if (params.RET_URL_SUCC == null || params.RET_URL_SUCC == undefined || params.RET_URL_SUCC == '' || params.RET_URL_SUCC.length > 300) {
return {'status':false, 'message':'RET_URL_SUCC should not be blank and max length should be less than 300.'}
}else {
return {'status':true,'message': 'All good'}
}
}
validateParamsStatus(params){
if(!this.token || !this.salt){
return {'status':false, 'message':'Token and Salt is required'}
}else if(params.MERCH_ORDER_ID == null || params.MERCH_ORDER_ID == undefined || params.MERCH_ORDER_ID == '' || params.MERCH_ORDER_ID.length > 50){
return {'status':false, 'message':'MERCH_ORDER_ID should not be blank and max length should be less than 50.'}
}else if (params.TXN_ID == null || params.TXN_ID == undefined || params.TXN_ID == '' || params.TXN_ID.length > 12) {
return {'status':false, 'message':'TXN_ID should not be blank and max length should be less than 12.'}
}else {
return {'status':true,'message': 'All good'}
}
}
checkTwoPlaceDecimal(value){
if(Math.floor(value) === value) return 0;
return value.toString().split(".")[1].length || 0;
}
//-----------Validations Ends-----------------
}
module.exports = Trupay;