UNPKG

trupay

Version:

Trupay Payment Gateway Api

117 lines (105 loc) 4.42 kB
/* * * * * * * * * * * * * * * * * * * * * * @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;