@RequestMapping(value = "/pay_merchant", method = RequestMethod.POST) public String paymerchantPageAction( @ModelAttribute("paymerchantOp") TempTransactions transactionObj, Model model, HttpSession session) throws IOException { logger.info("Inside pay merchant op POST"); /** To display user profile */ UserInfo UI = new UserInfo(); DatabaseConnectors dbcon = new DatabaseConnectors(); UI = dbcon.getUserInfoByUniqId((String) session.getAttribute("uniqueid")); String uniqueID = (String) session.getAttribute("uniqueid"); ExternalUser extUser = databaseConnector.getExternalUserByUniqId(uniqueID); String utype = null; String str1 = (String) session.getAttribute("uniqueid"); System.out.println(str1); String str2 = str1.substring(0, 2); if (str2.equals("ei")) { utype = "Single User"; } else if (str2.equals("em")) { utype = "Merchant"; } else if (str2.equals("ir")) { utype = "Internal User"; } else if (str2.equals("im")) { utype = "Manager"; } else if (str2.equals("admin")) { utype = "Administrator"; } model.addAttribute("firstName", UI.getFirstName()); model.addAttribute("lastName", UI.getLastName()); model.addAttribute("Username", UI.getUsername()); model.addAttribute("email", UI.getEmailId()); model.addAttribute("accountno", extUser.getAccountno()); model.addAttribute("streetAddress", UI.getAddress()); model.addAttribute("city", UI.getCity()); model.addAttribute("state", UI.getState()); model.addAttribute("country", UI.getCountry()); model.addAttribute("zip", UI.getZipcode()); model.addAttribute("contactNo", UI.getContactNo()); model.addAttribute("userType", utype); logger.info("Current user" + uniqueID); MultipartFile fileGot = transactionObj.getMpFile(); String file_name = fileGot.getOriginalFilename(); ServletContext context = session.getServletContext(); String realContextPath = context.getRealPath("/"); // String certpath = realContextPath+"/certificates/"+fileGot.getOriginalFilename(); String certpath = realContextPath + "/certificates/" + uniqueID + "_cert.pem"; String temp__2_2 = realContextPath + "/certificates"; File temp_1_2 = new File(temp__2_2); if (!temp_1_2.exists()) temp_1_2.mkdirs(); File convFile = new File(certpath); convFile.createNewFile(); FileOutputStream fos = new FileOutputStream(convFile); fos.write(fileGot.getBytes()); fos.close(); if (pkiGringott.verifyCertificate(uniqueID, session) == false) { logger.info(certpath); logger.info("uniqId is:" + uniqueID); logger.info("Certificate verification is failed"); model.addAttribute("message", "Certificate verification failed"); Transactions transObj_1 = new Transactions(); // logger.info("Ext User"+extUser); // transObj.setBalance(extUser.getBalance()); TempTransactions temp_1 = new TempTransactions(); temp_1.setBalance(transactionObj.getBalance()); model.addAttribute("debitOp", transObj_1); model.addAttribute("creditOp", transObj_1); model.addAttribute("checkAccBal", transObj_1.getBalance()); model.addAttribute("savingAccBal", "500"); model.addAttribute("transferOp", temp_1); model.addAttribute("paymerchantOp", temp_1); model.addAttribute("transactionOp", temp_1); model.addAttribute("UpdateProfile", new UserInfo()); List<Transactions> obj_1 = displaytransaction(session); if (obj_1 == null) { model.addAttribute("transactionOp", null); } else { model.addAttribute("transactionOp", obj_1); } return "extUserHomePage"; } else { logger.info("uniqId is:" + uniqueID); logger.info("Certificate verified"); } MultipartFile pkf = transactionObj.getPkFile(); String pkf_name = pkf.getOriginalFilename(); logger.info(pkf_name); // String pkpath = realContextPath+"/privatekeys/"+pkf.getOriginalFilename(); String pkpath = realContextPath + "/privatekeys/" + uniqueID + "_private.key"; String temp_1 = realContextPath + "/privatekeys"; File temp_1_1 = new File(temp_1); if (!temp_1_1.exists()) temp_1_1.mkdirs(); File convFile_1 = new File(pkpath); convFile_1.createNewFile(); FileOutputStream fos_1 = new FileOutputStream(convFile_1); fos_1.write(pkf.getBytes()); fos_1.close(); if (pkiGringott.verifyPrivateKey(uniqueID, session) == false) { logger.info(pkpath); logger.info("uniqId is:" + uniqueID); logger.info("private key verification is failed"); model.addAttribute("message", "private key verification failed"); Transactions transObj_2 = new Transactions(); // logger.info("Ext User"+extUser); // transObj.setBalance(extUser.getBalance()); TempTransactions temp_2 = new TempTransactions(); temp_2.setBalance(transactionObj.getBalance()); model.addAttribute("debitOp", transObj_2); model.addAttribute("creditOp", transObj_2); model.addAttribute("checkAccBal", transObj_2.getBalance()); // model.addAttribute("savingAccBal", "500" ); model.addAttribute("transferOp", temp_2); model.addAttribute("paymerchantOp", temp_2); model.addAttribute("transactionOp", temp_2); model.addAttribute("UpdateProfile", new UserInfo()); List<Transactions> obj_2 = displaytransaction(session); if (obj_2 == null) { model.addAttribute("transactionOp", null); } else { model.addAttribute("transactionOp", obj_2); } return "extUserHomePage"; } else { logger.info("uniqId is:" + uniqueID); logger.info("Private key verified"); } transactionObj.setBalance(extUser.getBalance()); logger.info("Current Balance" + transactionObj.getBalance()); float amount = transactionObj.getTransactionAmount(); float currentBalance = transactionObj.getBalance(); logger.info("balance :", currentBalance); logger.info("account number ", transactionObj.getAccountno()); // credit amount from current account balance ExternalUser merch = databaseConnector.getExternalUserByAccNum(transactionObj.getAccountno()); if (merch == null) { model.addAttribute("message", "Account number is invalid"); Transactions transObj_2 = new Transactions(); // logger.info("Ext User"+extUser); // transObj.setBalance(extUser.getBalance()); TempTransactions temp_2 = new TempTransactions(); temp_2.setBalance(transactionObj.getBalance()); model.addAttribute("debitOp", transObj_2); model.addAttribute("creditOp", transObj_2); model.addAttribute("checkAccBal", transObj_2.getBalance()); // model.addAttribute("savingAccBal", "500" ); model.addAttribute("transferOp", temp_2); model.addAttribute("paymerchantOp", temp_2); model.addAttribute("transactionOp", temp_2); model.addAttribute("UpdateProfile", new UserInfo()); List<Transactions> obj_2 = displaytransaction(session); if (obj_2 == null) { model.addAttribute("transactionOp", null); } else { model.addAttribute("transactionOp", obj_2); } return "extUserHomePage"; } transactionObj.setUniqId(uniqueID); transactionObj.setDescription("transferred amount: " + amount); transactionObj.setTransactionType("tranfer"); transactionObj.setBalance(currentBalance - amount); // extUser.setBalance(currentBalance-amount); // databaseConnector.updateExternalUser(extUser); databaseConnector.saveTempTransaction(transactionObj); Transactions temp = new Transactions(); temp.setBalance(transactionObj.getBalance()); model.addAttribute("debitOp", temp); model.addAttribute("creditOp", temp); model.addAttribute("checkAccBal", temp.getBalance()); model.addAttribute("transferOp", transactionObj); model.addAttribute("paymerchantOp", transactionObj); model.addAttribute("UpdateProfile", new UserInfo()); List<Transactions> obj = displaytransaction(session); if (obj == null) { model.addAttribute("transactionOp", null); } else { model.addAttribute("transactionOp", obj); } logger.info("Leaving transfer money POST"); return "extUserHomePage"; }