%@ page contentType="text/html; charset=euc-kr"%> <%@ page import="java.util.Date" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Iterator" %> <%@ page import="java.io.PrintWriter" %> <%@ page import="java.io.BufferedReader" %> <%@ page import="java.io.InputStreamReader" %> <%@ page import="java.net.URL" %> <%@ page import="java.net.HttpURLConnection" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page import="java.security.MessageDigest" %> <%@ page import="org.json.simple.JSONObject" %> <%@ page import="org.json.simple.parser.JSONParser" %> <%@ page import="org.apache.commons.codec.binary.Hex" %> <% request.setCharacterEncoding("euc-kr"); /* **************************************************************************************** * <ÀÎÁõ °á°ú ÆÄ¶ó¹ÌÅÍ> **************************************************************************************** */ String authResultCode = (String)request.getParameter("AuthResultCode"); // ÀÎÁõ°á°ú : 0000(¼º°ø) String authResultMsg = (String)request.getParameter("AuthResultMsg"); // ÀÎÁõ°á°ú ¸Þ½ÃÁö String nextAppURL = (String)request.getParameter("NextAppURL"); // ½ÂÀÎ ¿äû URL String txTid = (String)request.getParameter("TxTid"); // °Å·¡ ID String authToken = (String)request.getParameter("AuthToken"); // ÀÎÁõ TOKEN String payMethod = (String)request.getParameter("PayMethod"); // °áÁ¦¼ö´Ü String mid = (String)request.getParameter("MID"); // »óÁ¡ ¾ÆÀ̵ð String moid = (String)request.getParameter("Moid"); // »óÁ¡ ÁÖ¹®¹øÈ£ String amt = (String)request.getParameter("Amt"); // °áÁ¦ ±Ý¾× String reqReserved = (String)request.getParameter("ReqReserved"); // »óÁ¡ ¿¹¾àÇʵå String netCancelURL = (String)request.getParameter("NetCancelURL"); // ¸ÁÃë¼Ò ¿äû URL /* **************************************************************************************** * <½ÂÀÎ °á°ú ÆÄ¶ó¹ÌÅÍ Á¤ÀÇ> * »ùÇÃÆäÀÌÁö¿¡¼´Â ½ÂÀÎ °á°ú ÆÄ¶ó¹ÌÅÍ Áß ÀϺθ¸ ¿¹½ÃµÇ¾î ÀÖÀ¸¸ç, * Ãß°¡ÀûÀ¸·Î »ç¿ëÇÏ½Ç ÆÄ¶ó¹ÌÅÍ´Â ¿¬µ¿¸Þ´º¾óÀ» Âü°íÇϼ¼¿ä. **************************************************************************************** */ String ResultCode = ""; String ResultMsg = ""; String PayMethod = ""; String GoodsName = ""; String Amt = ""; String TID = ""; /* **************************************************************************************** * <ÀÎÁõ °á°ú ¼º°ø½Ã ½ÂÀÎ ÁøÇà> **************************************************************************************** */ String resultJsonStr = ""; if(authResultCode.equals("0000")){ /* **************************************************************************************** * <ÇØ½¬¾ÏÈ£È> (¼öÁ¤ÇÏÁö ¸¶¼¼¿ä) * SHA-256 ÇØ½¬¾Ïȣȴ °Å·¡ À§º¯Á¶¸¦ ¸·±âÀ§ÇÑ ¹æ¹ýÀÔ´Ï´Ù. **************************************************************************************** */ DataEncrypt sha256Enc = new DataEncrypt(); String merchantKey = "7wnkxZbHvIA7FoCc6jF8IcXU+Wd3sn5BcMHuWJROe53AjRKnC6CistVdVZwrUKCCdaF+dAx230bwHSQ/E29RWA=="; // »óÁ¡Å° String ediDate = getyyyyMMddHHmmss(); String signData = sha256Enc.encrypt(authToken + mid + amt + ediDate + merchantKey); /* **************************************************************************************** * <½ÂÀÎ ¿äû> * ½ÂÀο¡ ÇÊ¿äÇÑ µ¥ÀÌÅÍ »ý¼º ÈÄ server to server Åë½ÅÀ» ÅëÇØ ½ÂÀΠó¸® ÇÕ´Ï´Ù. **************************************************************************************** */ StringBuffer requestData = new StringBuffer(); requestData.append("TID=").append(txTid).append("&"); requestData.append("AuthToken=").append(authToken).append("&"); requestData.append("MID=").append(mid).append("&"); requestData.append("Amt=").append(amt).append("&"); requestData.append("EdiDate=").append(ediDate).append("&"); requestData.append("SignData=").append(signData); resultJsonStr = connectToServer(requestData.toString(), nextAppURL); HashMap resultData = new HashMap(); boolean paySuccess = false; if("9999".equals(resultJsonStr)){ /* ************************************************************************************* * <¸ÁÃë¼Ò ¿äû> * ½ÂÀÎ Åë½ÅÁß¿¡ Exception ¹ß»ý½Ã ¸ÁÃë¼Ò 󸮸¦ ±Ç°íÇÕ´Ï´Ù. ************************************************************************************* */ StringBuffer netCancelData = new StringBuffer(); requestData.append("&").append("NetCancel=").append("1"); String cancelResultJsonStr = connectToServer(requestData.toString(), netCancelURL); HashMap cancelResultData = jsonStringToHashMap(cancelResultJsonStr); ResultCode = (String)cancelResultData.get("ResultCode"); ResultMsg = (String)cancelResultData.get("ResultMsg"); }else{ resultData = jsonStringToHashMap(resultJsonStr); ResultCode = (String)resultData.get("ResultCode"); // °á°úÄÚµå (Á¤»ó °á°úÄÚµå:3001) ResultMsg = (String)resultData.get("ResultMsg"); // °á°ú¸Þ½ÃÁö PayMethod = (String)resultData.get("PayMethod"); // °áÁ¦¼ö´Ü GoodsName = (String)resultData.get("GoodsName"); // »óǰ¸í Amt = (String)resultData.get("Amt"); // °áÁ¦ ±Ý¾× TID = (String)resultData.get("TID"); // °Å·¡¹øÈ£ /* ************************************************************************************* * <°áÁ¦ ¼º°ø ¿©ºÎ È®ÀÎ> ************************************************************************************* */ if(PayMethod != null){ if(PayMethod.equals("CARD")){ if(ResultCode.equals("3001")) paySuccess = true; // ½Å¿ëÄ«µå(Á¤»ó °á°úÄÚµå:3001) }else if(PayMethod.equals("BANK")){ if(ResultCode.equals("4000")) paySuccess = true; // °èÁÂÀÌü(Á¤»ó °á°úÄÚµå:4000) }else if(PayMethod.equals("CELLPHONE")){ if(ResultCode.equals("A000")) paySuccess = true; // ÈÞ´ëÆù(Á¤»ó °á°úÄÚµå:A000) }else if(PayMethod.equals("VBANK")){ if(ResultCode.equals("4100")) paySuccess = true; // °¡»ó°èÁÂ(Á¤»ó °á°úÄÚµå:4100) }else if(PayMethod.equals("SSG_BANK")){ if(ResultCode.equals("0000")) paySuccess = true; // SSGÀºÇà°èÁÂ(Á¤»ó °á°úÄÚµå:0000) }else if(PayMethod.equals("CMS_BANK")){ if(ResultCode.equals("0000")) paySuccess = true; // °èÁ°£Æí°áÁ¦(Á¤»ó °á°úÄÚµå:0000) } } } }else{ ResultCode = authResultCode; ResultMsg = authResultMsg; } %>
| ½ÂÀÎ Åë½Å ½ÇÆÐ·Î ÀÎÇÑ ¸ÁÃë¼Ò ó¸® ÁøÇà °á°ú | [<%=ResultCode%>]<%=ResultMsg%> |
|---|---|
| °á°ú ³»¿ë | [<%=ResultCode%>]<%=ResultMsg%> |
| °áÁ¦¼ö´Ü | <%=PayMethod%> |
| »óǰ¸í | <%=GoodsName%> |
| °áÁ¦ ±Ý¾× | <%=Amt%> |
| °Å·¡ ¹øÈ£ | <%=TID%> |
*Å×½ºÆ® ¾ÆÀ̵ðÀΰæ¿ì ´çÀÏ ¿ÀÈÄ 11½Ã 30ºÐ¿¡ Ãë¼ÒµË´Ï´Ù.
<%! public final synchronized String getyyyyMMddHHmmss(){ SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss"); return yyyyMMddHHmmss.format(new Date()); } // SHA-256 Çü½ÄÀ¸·Î ¾ÏÈ£È public class DataEncrypt{ MessageDigest md; String strSRCData = ""; String strENCData = ""; String strOUTData = ""; public DataEncrypt(){ } public String encrypt(String strData){ String passACL = null; MessageDigest md = null; try{ md = MessageDigest.getInstance("SHA-256"); md.reset(); md.update(strData.getBytes()); byte[] raw = md.digest(); passACL = encodeHex(raw); }catch(Exception e){ System.out.print("¾ÏÈ£È ¿¡·¯" + e.toString()); } return passACL; } public String encodeHex(byte [] b){ char [] c = Hex.encodeHex(b); return new String(c); } } //server to server Åë½Å public String connectToServer(String data, String reqUrl) throws Exception{ HttpURLConnection conn = null; BufferedReader resultReader = null; PrintWriter pw = null; URL url = null; int statusCode = 0; StringBuffer recvBuffer = new StringBuffer(); try{ url = new URL(reqUrl); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(3000); conn.setReadTimeout(5000); conn.setDoOutput(true); pw = new PrintWriter(conn.getOutputStream()); pw.write(data); pw.flush(); statusCode = conn.getResponseCode(); resultReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "euc-kr")); for(String temp; (temp = resultReader.readLine()) != null;){ recvBuffer.append(temp).append("\n"); } if(!(statusCode == HttpURLConnection.HTTP_OK)){ throw new Exception(); } return recvBuffer.toString().trim(); }catch (Exception e){ return "9999"; }finally{ recvBuffer.setLength(0); try{ if(resultReader != null){ resultReader.close(); } }catch(Exception ex){ resultReader = null; } try{ if(pw != null) { pw.close(); } }catch(Exception ex){ pw = null; } try{ if(conn != null) { conn.disconnect(); } }catch(Exception ex){ conn = null; } } } //JSON String -> HashMap º¯È¯ private static HashMap jsonStringToHashMap(String str) throws Exception{ HashMap dataMap = new HashMap(); JSONParser parser = new JSONParser(); try{ Object obj = parser.parse(str); JSONObject jsonObject = (JSONObject)obj; Iterator