%@ page contentType="text/html; charset=utf-8"%> <%@ 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("utf-8"); /* **************************************************************************************** * <취소요청 파라미터> * 취소시 전달하는 파라미터입니다. * 샘플페이지에서는 기본(필수) 파라미터만 예시되어 있으며, * 추가 가능한 옵션 파라미터는 연동메뉴얼을 참고하세요. **************************************************************************************** */ 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("CharSet=").append("utf-8").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 } %>
| 취소 결과 내용 | [<%=ResultCode%>]<%=ResultMsg%> |
|---|---|
| 거래 아이디 | <%=TID%> |
| 취소 금액 | <%=CancelAmt%> |
| 취소일 | <%=CancelDate%> |
| 취소시간 | <%=CancelTime%> |