※ 결제정보 검증기능 적용 안내
Note: 아래 검증절차를 적용하지 않아 발생하는 결제정보 위변조 관련 사고에 대해서는 NHN KCP에서 책임을 질 수 없는 부분이오니
반드시 결제 연동 시 검증절차를 확인해주시기 바랍니다.
가맹점에서는 결제정보 검증을 위해 실제 처리해야할 결제수단과 결제금액을, 승인요청시에 아래 변수에 맞게 넘겨주시기 바랍니다.
1. 결제금액검증 파라미터 : ordr_mony
실제 결제요청 금액
2. 결제수단 검증 파라미터 : pay_type
신용카드 : PACA
계좌이체 : PABK
가상계좌 : PAVC
휴 대 폰 : PAMC
포 인 트 : PAPT
상 품 권 : PATK
3. 주문번호 검증 파라미터 : ordr_no
실제 결제요청 주문번호
※ 소스 적용 방법
[pp_cli 라이브러리 통신 모듈]
pp_ax_hub 또는 pp_cli_hub 페이지 수정. (jsp 샘플예시)
jsp 샘플 외에 다른 언어처리에 대해서는 support@kcp.co.kr로 문의주시면 원하는 언어에 대해 안내드립니다.
if ( req_tx.equals( "pay" ) )
{
c_PayPlus.mf_set_enc_data( f_get_parm( request.getParameter( "enc_data" ) ),
f_get_parm( request.getParameter( "enc_info" ) ) );
/* ordr_data에 결제 유효성 검증 */
int ordr_data_set_no;
ordr_data_set_no = c_PayPlus.mf_add_set( "ordr_data" );
c_PayPlus.mf_set_us( ordr_data_set_no, "ordr_mony", "1004" ); // 실제 결제될 금액이 1004원이라면 ** 결제금액 유효성 검증 **
c_PayPlus.mf_set_us( ordr_data_set_no, "pay_type", "PACA" ); // 실제 결제할 수단이 신용카드라면 PACA세팅 ** 결제수단 유효성 검증 **
//c_PayPlus.mf_set_us( ordr_data_set_no, "ordr_no", "TEST123456789" ); // 실제 처리할 주문번호가 TEST123456789라면 ** 주문번호검증 **
}
/* ordr_no의 경우 결제창으로 전달하는 주문번호와
실제 승인요청때 처리하는 주문번호가 동일해야하는 경우 검증처리바랍니다.
다를경우 주문번호 검증은 하지 않으시기 바랍니다. */
결제창에서 처리한 결제요청 금액과 ordr_mony 값이 다를 경우,
응답코드 : 8059, 응답메시지 : 포맷에러(지불정보-공통:결제금액 불일치)
결제창에서 처리한 결제수단 및 주문번호 값이 다를 경우,
응답코드 : 8350, 응답메시지 : '결제정보 검증 불일치' 가 리턴됩니다.
[API 통신 모듈]
kcp_api_page 에서 결제 API req파라미터에 추가.
JSONObject json_req = new JSONObject();
json_req.put("tran_cd", tran_cd);
json_req.put("site_cd", site_cd);
json_req.put("kcp_cert_info", kcp_cert_info);
json_req.put("enc_data", enc_data);
json_req.put("enc_info", enc_info);
json_req.put("ordr_mony","1004"); // 실제 결제될 금액이 1004원이라면 ** 결제금액 유효성 검증 **
json_req.put("pay_type", "PACA"); // 실제 결제할 수단이 신용카드라면 PACA세팅 ** 결제수단 유효성 검증 **
//json_req.put("ordr_no", "TEST123456789"); // 실제 처리할 주문번호가 TEST123456789라면 ** 주문번호검증 **
/* ordr_no의 경우 결제창으로 전달하는 주문번호와
실제 승인요청때 처리하는 주문번호가 동일해야하는 경우 검증처리바랍니다.
다를경우 주문번호 검증은 하지 않으시기 바랍니다. */
결제창에서 처리한 결제요청 금액과 ordr_mony 값이 다를 경우,
응답코드 : S006, 응답메시지 : 거래금액 불일치 발생
결제창에서 처리한 결제수단 및 주문번호 값이 다를 경우,
응답코드 : 8350, 응답메시지 : '결제정보 검증 불일치' 가 리턴됩니다.
※ 결제금액과 결제수단은 필수로 적용해주시기 바라며, ordr_no (주문번호)도 검증에 사용하시도록 권장드립니다.
자세한 문의는 NHN KCP 기술지원팀 support@kcp.co.kr 로 문의주시기 바랍니다.
감사합니다.
전체 소스 보기 ▼
<%
/* = 지불 요청 정보 설정 = */
String req_tx = f_get_parm( request.getParameter( "req_tx" ) ); // 요청 종류
String tran_cd = f_get_parm( request.getParameter( "tran_cd" ) ); // 처리 종류
String ordr_idxx = f_get_parm( request.getParameter( "ordr_idxx" ) ); // 쇼핑몰에서 결제창으로 전달한 주문번호
String good_name = f_get_parm( request.getParameter( "good_name" ) ); // 상품명
String res_cd = ""; // 응답코드
String res_msg = ""; // 응답 메세지
String tno = f_get_parm( request.getParameter( "tno" ) ); // KCP 거래 고유 번호
String use_pay_method = f_get_parm( request.getParameter( "use_pay_method" ) ); // 결제 방법
String bSucc = ""; // 업체 DB 처리 성공 여부
/* = 인스턴스 생성 및 초기화(변경 불가) = */
J_PP_CLI_N c_PayPlus = new J_PP_CLI_N();
c_PayPlus.mf_init( "", g_conf_gw_url, g_conf_gw_port, g_conf_tx_mode, g_conf_log_dir );
c_PayPlus.mf_init_set();
/* = 인스턴스 생성 및 초기화 END = */
/* = 처리 요청 정보 설정 = */
if ( req_tx.equals( "pay" ) )
{
c_PayPlus.mf_set_enc_data( f_get_parm( request.getParameter( "enc_data" ) ),
f_get_parm( request.getParameter( "enc_info" ) ) );
int ordr_data_set_no;
ordr_data_set_no = c_PayPlus.mf_add_set( "ordr_data" );
c_PayPlus.mf_set_us( ordr_data_set_no, "ordr_mony", "1004" ); // 실제 결제될 금액이 1004원이라면 ** 결제금액 유효성 검증 **
c_PayPlus.mf_set_us( ordr_data_set_no, "pay_type", "PACA" ); // 실제 결제할 수단이 신용카드라면 PACA로 세팅 ** 결제수단 유효성 검증 **
// c_PayPlus.mf_set_us( ordr_data_set_no, "ordr_no", "TEST123456789" ); // 실제 처리할 주문번호가 TEST123456789라면 ** 주문번호검증 **
}
/* = 처리 요청 정보 설정 END = */
/* = 실행 = */
if ( tran_cd.length() > 0 )
{
c_PayPlus.mf_do_tx( g_conf_site_cd, g_conf_site_key, tran_cd, "", ordr_idxx, g_conf_log_level, "0" );
}
else
{
c_PayPlus.m_res_cd = "9562";
c_PayPlus.m_res_msg = "연동 오류|tran_cd값이 설정되지 않았습니다.";
}
res_cd = c_PayPlus.m_res_cd; // 결과 코드
res_msg = c_PayPlus.m_res_msg; // 결과 메시지
/* = 실행 END = */
%>
<%
/*=--------------------------- 요청정보 --------------------------------= */
String tran_cd = f_get_parm( request.getParameter( "tran_cd" )); // 요청타입
String site_cd = f_get_parm( request.getParameter( "site_cd" )); // 사이트코드
// 인증서정보(직렬화)
String kcp_cert_info = "발급받은 인증서 정보";
String enc_data = f_get_parm( request.getParameter( "enc_data" )); // 암호화 인증데이터
String enc_info = f_get_parm( request.getParameter( "enc_info" )); // 암호화 인증데이터
/* = -------------------------------------------------------------------------- = */
String use_pay_method = f_get_parm( request.getParameter( "use_pay_method" )); // 결제 방법
String ordr_idxx = f_get_parm( request.getParameter( "ordr_idxx" )); // 쇼핑몰에서 결제창으로 전달한 주문번호
JSONObject json_req = new JSONObject();
json_req.put("tran_cd", tran_cd);
json_req.put("site_cd", site_cd);
json_req.put("kcp_cert_info", kcp_cert_info);
json_req.put("enc_data", enc_data);
json_req.put("enc_info", enc_info);
json_req.put("ordr_mony","1004"); // 실제 결제될 금액이 1004원이라면 ** 결제금액 유효성 검증 **
json_req.put("pay_type", "PACA"); // 실제 결제할 수단이 신용카드라면 PACA로 세팅 ** 결제수단 유효성 검증 **
//json_req.put("ordr_no","TEST123456789"); // 실제 처리할 주문번호가 TEST123456789라면 ** 주문번호검증 **
String temp_req_data = json_req.toString();
String req_data = temp_req_data.replace(",",",\r\n");
String inputLine = null;
StringBuffer outResult = new StringBuffer();
%>