cybersource-api
Version:
Module for connect with CyberSource by soap methods.
132 lines (121 loc) • 5.41 kB
JavaScript
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
}
*/