private PaymentAuthorizationDTO makeCall(Map<String, Object> data, boolean isCharge) throws XmlRpcException, MalformedURLException, PluggableTaskException { URL callURL = null; if ("true".equals(getOptionalParameter(PARAMETER_TEST.getName(), "false"))) { callURL = new URL(TEST_URL); log.debug("Running Atlas task in test mode!"); } else { callURL = new URL(URL); } String merchantAccountCode = ensureGetParameter(PARAMETER_MERCHANT_ACCOUNT_CODE.getName()); int merchantCode = Integer.parseInt(merchantAccountCode); merchantCode = merchantCode - (merchantCode % 1000); XmlRpcClient paymentProcessor = new XmlRpcClient(); paymentProcessor.setTransportFactory(new XmlRpcCommonsTransportFactory(paymentProcessor)); XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(callURL); config.setEnabledForExtensions(true); config.setConnectionTimeout(CONNECTION_TIME_OUT); config.setReplyTimeout(REPLY_TIME_OUT); paymentProcessor.setConfig(config); List<Map<String, Object>> transactionRequestList = new ArrayList<Map<String, Object>>(1); transactionRequestList.add(data); Map<String, Object> configParam = new HashMap<String, Object>(); if (isCharge) { configParam.put("waitConfirmation", "ignore"); } else { configParam.put("waitConfirmation", "terminate"); } Object[] params = new Object[] { String.valueOf(merchantCode), ensureGetParameter(PARAMETER_PASSWORD.getName()), transactionRequestList, configParam }; Object[] resresponse = (Object[]) paymentProcessor.execute("XMLRPCGates.processRetail", params); Map<String, Object> transactionResponseMap = (Map<String, Object>) resresponse[0]; log.debug("Got response:" + transactionResponseMap); boolean isCredit = "credit-response".equals(transactionResponseMap.get("type")); PaymentAuthorizationDTO dbRow = new PaymentAuthorizationDTO(); if (!isCredit && "A01".equals(transactionResponseMap.get("responseCode"))) { dbRow.setCode1("1"); // code if 1 it is ok } else if (isCredit && "A02".equals(transactionResponseMap.get("responseCode"))) { dbRow.setCode1("1"); } else if ('A' != ((String) transactionResponseMap.get("responseCode")).charAt(0)) { dbRow.setCode1("2"); } else { dbRow.setCode1("0"); } dbRow.setCode3((String) transactionResponseMap.get("responseCode")); dbRow.setResponseMessage((String) transactionResponseMap.get("responseMessage")); dbRow.setApprovalCode((String) transactionResponseMap.get("processorCode")); dbRow.setAvs((String) transactionResponseMap.get("avsResultCode")); dbRow.setTransactionId((String) transactionResponseMap.get("referenceNumber")); dbRow.setProcessor("Intrannuity"); return dbRow; }