UNPKG

cybersource-api

Version:

Module for connect with CyberSource by soap methods.

132 lines (121 loc) 5.41 kB
const Configuration = require("./model/Configuration"); const RunTransaction = require("./api/RunTransaction"); const Models = require("./model/index"); module.exports = class CyberSourceApi { constructor(password,merchantID,enviroment,language,version,currency) { this.configuration = new Configuration(password,merchantID,enviroment,language,version,currency); this.Models = new Models(); this.ErrorObject = new this.Models.ErrorObject(language); }; getConfiguration(){ return this.configuration; }; authorizeCharge(authorizationRequest,amount){ return new Promise((resolve,reject)=>{ authorizationRequest.purchaseTotals = new this.Models.PurchaseTotals(this.configuration.currency,amount.toFixed(2)+""); authorizationRequest.merchantID = this.configuration.merchantID; RunTransaction(this.configuration.url,authorizationRequest.getJSON(),this.configuration.getWsSecurity()).then(res=>{ if(res.reasonCode == 100){ if(res.ccAuthReply.reasonCode == 100){ resolve({message:this.ErrorObject.getMessage(res.ccAuthReply.reasonCode),code:res.ccAuthReply.reasonCode,authorization:res.requestID}) }else{ reject({message:this.ErrorObject.getMessage(res.ccAuthReply.reasonCode),code:res.ccAuthReply.reasonCode,data:res.ccAuthReply}); } }else{ reject({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,data:res}); } }).catch(e=>{ reject({message:this.ErrorObject.getMessage(500),code:500,data:e}); }); }) } captureCharge(captureRequest,amount){ return new Promise((resolve,reject)=>{ captureRequest.purchaseTotals = new this.Models.PurchaseTotals(this.configuration.currency,amount.toFixed(2)+""); captureRequest.merchantID = this.configuration.merchantID; RunTransaction(this.configuration.url,captureRequest.getJSON(),this.configuration.getWsSecurity()).then(res=>{ if(res.reasonCode == 100){ resolve({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode}); }else{ reject({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,data:res}); } }).catch(e=>{ reject({message:this.ErrorObject.getMessage(500),code:500,data:e}); }); }); } subscribeCard(subscriptionRequest){ return new Promise((resolve,reject)=>{ subscriptionRequest.purchaseTotals = new this.Models.PurchaseTotals(this.configuration.currency,"0.00"); subscriptionRequest.merchantID = this.configuration.merchantID; RunTransaction(this.configuration.url,subscriptionRequest.getJSON(),this.configuration.getWsSecurity()).then(res=>{ if(res.reasonCode == 100){ resolve({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,token:res.requestID}); }else{ reject({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,data:res}); } }).catch(e=>{ reject({message:this.ErrorObject.getMessage(500),code:500,data:e}); }); }); } chargeSubscribedCard(chargeSubscriptionRequest,amount){ return new Promise((resolve,reject)=>{ chargeSubscriptionRequest.purchaseTotals = new this.Models.PurchaseTotals(this.configuration.currency,amount.toFixed(2)+""); chargeSubscriptionRequest.merchantID = this.configuration.merchantID; RunTransaction(this.configuration.url,chargeSubscriptionRequest.getJSON(),this.configuration.getWsSecurity()).then(res=>{ if(res.reasonCode == 100){ resolve({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode}); }else{ reject({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,data:res}); } }).catch(e=>{ reject({message:this.ErrorObject.getMessage(500),code:500,data:e}); }); }); } chargeCard(chargeRequest,amount){ return new Promise((resolve,reject)=>{ chargeRequest.purchaseTotals = new this.Models.PurchaseTotals(this.configuration.currency,amount.toFixed(2)+""); chargeRequest.merchantID = this.configuration.merchantID; RunTransaction(this.configuration.url,chargeRequest.getJSON(),this.configuration.getWsSecurity()).then(res=>{ if(res.reasonCode == 100){ resolve({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode}); }else{ reject({message:this.ErrorObject.getMessage(res.reasonCode),code:res.reasonCode,data:res}); } }).catch(e=>{ reject({message:this.ErrorObject.getMessage(500),code:500,data:e}); }); }); } }; /* reversalAuth = (Data) => { return new Promise((resolve,reject)=>{ soap.createClient(url, function(err, client) { var argsReversal = { merchantID, ccAuthReversalService:{ attributes:{run:true}, authRequestID:"5488645594656927104015", authRequestToken:"", reversalReason:"" } }; client.setSecurity(wsSecurity); client.TransactionProcessor.portXML.runTransaction(argsReversal,(error, result, rawResponse, soapHeader, rawRequest)=>{ console.log("#########"); console.log(result) console.log(error ? reject(error) : resolve(result)); }); }); }); } module.exports = { captureCharge, authCharge, subscribe, getMessageByReasonCode } */