diff --git a/partner-fm.js b/partner-fm.js index 4ac5464..1335d18 100644 --- a/partner-fm.js +++ b/partner-fm.js @@ -152,33 +152,34 @@ function topupResponseHandler(xmlResponse, _requestId, cb) { logger.info('Response parsed', {data: data}); - try { - msg = data.fm.message[0]; - } - catch(e) { - msg = 'Unknown message' + msg = getMessageFromResponse(data); + if (!msg) { + msg = 'Unknown message'; } - if (data.fm.status[0] == '0') { + var status = getStatusFromResponse(data); + + if (status == '0') { rc = '00'; msg = modifyMessageWithSn(msg); logger.verbose('Modify message on success message', {msg: msg}); - } else if (data.fm.status[0] == '1') { + } else if (status == '1') { rc = '68'; - } else if (data.fm.status[0] == '2') { + } else if (status == '2') { rc = '40'; - } else if (data.fm.status[0] == '3') { + } else if (status == '3') { rc = '40'; } else { rc = '68'; + msg = msg + '. Status is not valid ' + status; } - if (data.fm.refTrxid[0]) { - requestId = data.fm.refTrxid[0]; + var requestIdFromData = getRequestIdFromResponse(data); + if (requestIdFromData) { + requestId = requestIdFromData; } - } cb(requestId, rc, msg, xmlResponse) @@ -217,6 +218,33 @@ function getSnFromMessage(msg) { } } +function getStatusFromResponse(msg) { + try { + return data.fm.status[0]; + } + catch(e) { + return; + } +} + +function getMessageFromResponse(msg) { + try { + return data.fm.message[0]; + } + catch(e) { + return; + } +} + +function getRequestIdFromResponse(msg) { + try { + return data.fm.refTrxid[0]; + } + catch(e) { + return; + } +} + function modifyMessageWithSn(msg) { var sn = getSnFromMessage(msg);