<%@ 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.URLEncoder" %> <%@ 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 tid = (String)request.getParameter("TID"); // °Å·¡ ID String cancelAmt = (String)request.getParameter("CancelAmt"); // Ãë¼Ò±Ý¾× String partialCancelCode = (String)request.getParameter("PartialCancelCode"); // ºÎºÐÃë¼Ò¿©ºÎ String mid = "itn180208m"; // »óÁ¡ ID String moid = "nicepay_api_3.0_test"; // ÁÖ¹®¹øÈ£ String cancelMsg = "°í°´¿äû"; // Ãë¼Ò»çÀ¯ /* **************************************************************************************** * <ÇØ½¬¾Ïȣȭ> (¼öÁ¤ÇÏÁö ¸¶¼¼¿ä) * SHA-256 ÇØ½¬¾Ïȣȭ´Â °Å·¡ À§º¯Á¶¸¦ ¸·±âÀ§ÇÑ ¹æ¹ýÀÔ´Ï´Ù. **************************************************************************************** */ DataEncrypt sha256Enc = new DataEncrypt(); String merchantKey = "7wnkxZbHvIA7FoCc6jF8IcXU+Wd3sn5BcMHuWJROe53AjRKnC6CistVdVZwrUKCCdaF+dAx230bwHSQ/E29RWA=="; // »óÁ¡Å° String ediDate = getyyyyMMddHHmmss(); String signData = sha256Enc.encrypt(mid + cancelAmt + ediDate + merchantKey); /* **************************************************************************************** * <Ãë¼Ò ¿äû> * Ãë¼Ò¿¡ ÇÊ¿äÇÑ µ¥ÀÌÅÍ »ý¼º ÈÄ server to server Åë½ÅÀ» ÅëÇØ Ãë¼Ò ó¸® ÇÕ´Ï´Ù. * Ãë¼Ò »çÀ¯(CancelMsg) ¿Í °°ÀÌ ÇÑ±Û ÅØ½ºÆ®°¡ ÇÊ¿äÇÑ ÆÄ¶ó¹ÌÅÍ´Â euc-kr encoding 󸮰¡ ÇÊ¿äÇÕ´Ï´Ù. **************************************************************************************** */ StringBuffer requestData = new StringBuffer(); requestData.append("TID=").append(tid).append("&"); requestData.append("MID=").append(mid).append("&"); requestData.append("Moid=").append(moid).append("&"); requestData.append("CancelAmt=").append(cancelAmt).append("&"); requestData.append("CancelMsg=").append(URLEncoder.encode(cancelMsg, "euc-kr")).append("&"); requestData.append("PartialCancelCode=").append(partialCancelCode).append("&"); requestData.append("EdiDate=").append(ediDate).append("&"); requestData.append("SignData=").append(signData); String resultJsonStr = connectToServer(requestData.toString(), "https://webapi.nicepay.co.kr/webapi/cancel_process.jsp"); /* **************************************************************************************** * <Ãë¼Ò °á°ú ÆÄ¶ó¹ÌÅÍ Á¤ÀÇ> * »ùÇÃÆäÀÌÁö¿¡¼­´Â Ãë¼Ò °á°ú ÆÄ¶ó¹ÌÅÍ Áß ÀϺθ¸ ¿¹½ÃµÇ¾î ÀÖÀ¸¸ç, * Ãß°¡ÀûÀ¸·Î »ç¿ëÇÏ½Ç ÆÄ¶ó¹ÌÅÍ´Â ¿¬µ¿¸Þ´º¾óÀ» Âü°íÇϼ¼¿ä. **************************************************************************************** */ String ResultCode = ""; String ResultMsg = ""; String CancelAmt = ""; String CancelDate = ""; String CancelTime = ""; String TID = ""; if("9999".equals(resultJsonStr)){ ResultCode = "9999"; ResultMsg = "Åë½Å½ÇÆÐ"; }else{ HashMap resultData = jsonStringToHashMap(resultJsonStr); ResultCode = (String)resultData.get("ResultCode"); // °á°úÄÚµå (Ãë¼Ò¼º°ø: 2001, Ãë¼Ò¼º°ø(LGU °èÁÂÀÌü):2211) ResultMsg = (String)resultData.get("ResultMsg"); // °á°ú¸Þ½ÃÁö CancelAmt = (String)resultData.get("CancelAmt"); // Ãë¼Ò±Ý¾× CancelDate = (String)resultData.get("CancelDate"); // Ãë¼ÒÀÏ CancelTime = (String)resultData.get("CancelTime"); // Ãë¼Ò½Ã°£ TID = (String)resultData.get("TID"); // °Å·¡¾ÆÀ̵ð TID } %> NICEPAY CANCEL RESULT
Ãë¼Ò °á°ú ³»¿ë [<%=ResultCode%>]<%=ResultMsg%>
°Å·¡ ¾ÆÀ̵ð <%=TID%>
Ãë¼Ò ±Ý¾× <%=CancelAmt%>
Ãë¼ÒÀÏ <%=CancelDate%>
Ãë¼Ò½Ã°£ <%=CancelTime%>
<%! 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 keyStr = jsonObject.keySet().iterator(); while(keyStr.hasNext()){ String key = keyStr.next(); Object value = jsonObject.get(key); dataMap.put(key, value); } }catch(Exception e){ } return dataMap; } %>