%@ page language="java" contentType="text/html;charset=utf-8"%> <%! // null 값을 처리하는 메소드 public String f_get_parm( String val ) { if ( val == null ) val = ""; return val; } %> <% request.setCharacterEncoding("utf-8"); %> <% //============================================================================================= // 01. Webhook //--------------------------------------------------------------------------------------------- // // NHN KCP 에서는 에스크로 결제 건에 대한 상태가 변경되었을 때, // 가맹점의 DB에서 상태변경을 할 수 있도록 노티를 전달 드리고 있습니다. // ex) 고객 입금 완료 또는 결제 상태 변경 시(구매확인, 취소) 가맹점의 Webhook 페이지로 노티 데이터 전송 // //--------------------------------------------------------------------------------------------- // // webhook 페이지의 주소를 아래 경로에 등록하여 노티를 받을 수 있습니다. // // [등록 방법] // 1. KCP 파트너관리자(partner.kcp.co.kr)에 로그인 // 2. 좌측메뉴 [상점정보관리] -> [보안관리] -> [결제결과URL 설정] // 3. 결제결과URL 항목에 해당 페이지 URL 설정 후 저장 // //============================================================================================= //============================================================================================= // 02. 데이터 수신 //--------------------------------------------------------------------------------------------- String site_cd = f_get_parm( request.getParameter( "site_cd" ) ); // 사이트 코드 String tno = f_get_parm( request.getParameter( "tno" ) ); // KCP 거래번호 String ordr_idxx = f_get_parm( request.getParameter( "ordr_idxx" ) ); // 주문번호 String tx_cd = f_get_parm( request.getParameter( "tx_cd" ) ); // 업무처리 구분 코드 String tx_tm = f_get_parm( request.getParameter( "tx_tm" ) ); // 업무처리 완료 시간 String ipgm_name = ""; // 주문자명 String remitter = ""; // 입금자명 String ipgm_mnyx = ""; // 입금금액 String bank_code = ""; // 은행코드 String account = ""; // 가상계좌 입금계좌번호 String op_cd = ""; // 처리구분 코드 String noti_id = ""; // 노티 아이디 String refund_nm = ""; // 환불계좌주명 String refund_mny = ""; // 환불금액 String st_cd = ""; // 구매확인 코드 String can_msg = ""; // 구매취소 사유 String waybill_no = ""; // 운송장 번호 String waybill_corp = ""; // 택배 업체명 String cash_a_no = ""; // 현금영수증 승인번호 String cash_a_dt = ""; // 현금영수증 승인시간 String cash_no = ""; // 현금영수증 거래번호 //--------------------------------------------------------------------------------------------- // 02-1. 데이터 수신 - 가상계좌 입금 완료 //--------------------------------------------------------------------------------------------- if ( tx_cd.equals("TX00") ) { ipgm_name = f_get_parm( request.getParameter( "ipgm_name" ) ); // 주문자명 remitter = f_get_parm( request.getParameter( "remitter" ) ); // 입금자명 ipgm_mnyx = f_get_parm( request.getParameter( "ipgm_mnyx" ) ); // 입금 금액 bank_code = f_get_parm( request.getParameter( "bank_code" ) ); // 은행코드 account = f_get_parm( request.getParameter( "account" ) ); // 가상계좌 입금계좌번호 op_cd = f_get_parm( request.getParameter( "op_cd" ) ); // 처리구분 코드 noti_id = f_get_parm( request.getParameter( "noti_id" ) ); // 노티 아이디 cash_a_no = f_get_parm( request.getParameter( "cash_a_no" ) ); // 현금영수증 승인번호 cash_a_dt = f_get_parm( request.getParameter( "cash_a_dt" ) ); // 현금영수증 승인시간 cash_no = f_get_parm( request.getParameter( "cash_no" ) ); // 현금영수증 거래번호 } //--------------------------------------------------------------------------------------------- // 02-2. 데이터 수신 - 가상계좌 환불 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX01") ) { refund_nm = f_get_parm( request.getParameter( "refund_nm" ) ); // 환불계좌주명 refund_mny = f_get_parm( request.getParameter( "refund_mny" ) ); // 환불금액 bank_code = f_get_parm( request.getParameter( "bank_code" ) ); // 은행코드 } //--------------------------------------------------------------------------------------------- // 02-3. 데이터 수신 - 구매확인/구매취소 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX02") ) { st_cd = f_get_parm( request.getParameter( "st_cd" ) ); // 구매확인 코드 // 구매확인 상태가 구매취소인 경우 if ( st_cd.equals("N") ) { can_msg = f_get_parm( request.getParameter( "can_msg" ) ); // 구매취소 사유 } } //--------------------------------------------------------------------------------------------- // 02-4. 데이터 수신 - 배송시작 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX03") ) { waybill_no = f_get_parm( request.getParameter( "waybill_no" ) ); // 운송장 번호 waybill_corp = f_get_parm( request.getParameter( "waybill_corp" ) ); // 택배 업체명 } //============================================================================================= //============================================================================================= // 03. 가맹점 DB 처리 //--------------------------------------------------------------------------------------------- // // 전달 받은 데이터를 활용하여 업체 DB를 처리하는 부분입니다. // 해당 부분은 업체 상황에 맞게 작업 진행 바랍니다. // //--------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------- // 03-1. 가상계좌 입금 DB 처리 작업 부분 // // 가상계좌 입금 건은 은행 공동망을 통해 입금 취소가 이루어질 수 있습니다. // 이러한 경우엔 처리구분 코드 "op_cd" 를 "13" 으로 전달 드리고 있습니다. // "op_cd=13" 의 경우에는 입금완료가 되지 않은 경우이니 DB 처리 시 유의 바랍니다. //--------------------------------------------------------------------------------------------- if ( tx_cd.equals("TX00") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-2. 가상계좌 환불 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- if ( tx_cd.equals("TX01") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-3. 구매확인/구매취소 DB 처리 작업 부분 // // "st_cd" 는 구매확인과 취소를 체크하는 코드입니다. // 반드시 구매확인("Y")과 구매취소("N")의 값을 구분하여 처리하시기 바랍니다. // 시스템 자동 구매확인 처리 시에는 "st_cd" 값이 "S" 로 전달 됩니다. //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX02") ) { //DB처리 코드 삽입 if (st_cd == "N" ) { } else { } } //--------------------------------------------------------------------------------------------- // 03-4. 배송시작 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX03") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-5. 정산보류 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX04") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-6. 즉시취소 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX05") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-7. 취소 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX06") ) { //DB처리 코드 삽입 } //--------------------------------------------------------------------------------------------- // 03-8. 발급계좌해지 DB 처리 작업 부분 //--------------------------------------------------------------------------------------------- else if ( tx_cd.equals("TX07") ) { //DB처리 코드 삽입 } //============================================================================================= //============================================================================================= // 04. result 값 설정 //--------------------------------------------------------------------------------------------- // // KCP 서버에서 데이터 전달 시 Webhook 페이지의 "result" 값을 확인 합니다. // 해당 값이 "0000"이 아닐 때, 최초 노티 포함 최대 10번까지 노티가 전송됩니다. // // DB 업데이트가 정상적으로 진행되었다면 "result" 값을 "0000" 으로 설정 바랍니다. // //============================================================================================= %>
사이트 코드 : <%= site_cd%>