Files
sake/src/main/webapp/WEB-INF/views/sopmal/ordr/PayKcpWebhook.jsp
2025-10-29 17:08:05 +09:00

237 lines
12 KiB
Plaintext

<%@ 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" 으로 설정 바랍니다.
//
//=============================================================================================
%>
<html>
<body>
사이트 코드 : <%= site_cd%><br/>
KCP 거래번호 : <%= tno%><br/>
주문번호 : <%= ordr_idxx%><br/>
업무처리 구분 코드 : <%= tx_cd%><br/>
업무처리 완료 시간 : <%= tx_tm%><br/>
주문자명 : <%= ipgm_name%><br/>
입금자명 : <%= remitter%><br/>
입금 금액 : <%= ipgm_mnyx%><br/>
은행코드 : <%= bank_code%><br/>
가상계좌 입금계좌번호 : <%= account%><br/>
처리구분 코드 : <%= op_cd%><br/>
노티 아이디 : <%= noti_id%><br/>
현금영수증 승인번호 : <%= cash_a_no%><br/>
현금영수증 승인시간 : <%= cash_a_dt%><br/>
현금영수증 거래번호 : <%= cash_no%><br/>
<form><input type="hidden" name="result" value="0000"></form>
</body>
</html>