NICEPAY TX For JAVA 매뉴얼 문서번호 Ver.1.3.5 1
@ Copyright @ 2016 NICE Payments Co, Ltd. 본문서와정보는 나이스페이먼츠 재산입니다. 또한, 모든정보는 나이스페이먼츠 소유정보이며, 나이스페이먼츠 의사전동의없이본문서의어떤정보도열람, 복사, 유용, 또는타인과공유되어서는안됩니다. 본문서의정보는변경될수있으며변경시, 본문서는수정될것입니다. 본문서의내용에관한어떠한의견이라도귀하의프로젝트또는사업담당자에게전달하여주십시오. 개정이력 버전 변경일 변경내용 작성자 승인자 1.0.0 12.03.20 최초작성 김진욱 1.1.1 11.02.08 결제간소화에따른수정 김진욱 1.1.2 11.02.14 현금영수증옵션추가 김진욱 1.1.3 11.07.12 카드노출옵션추가 김진욱 1.1.4 12.12.16 표준결제창반영 김진욱 1.1.5 15.02.02 나이스복지카드추가 김진욱 1.2.0 15.09.01 환불성공코드및메시지추가최신스크린샷으로변경 송준 1.2.1 15.09.08 취소요청번호추가 송준 1.2.2 16.05.26 부분취소중복방지내용수정 송준 1.2.3 16.06.02 승인전문수정 송준 1.2.4 16.11.10 사명변경 송준 1.2.5 16.12.28 방화벽허용 IP 및승인결과필드수정 송준 1.2.6 17.03.24. 방화벽허용 IP 변경 김강호 1.3 17.04.19 제품설치및설치확인최신화 김강호 1.3.1 17.06.12 SSG 은행계좌추가 신광원 1.3.2 17.07.18 결제수단별결제흐름도추가 이민창 1.3.3 17.0.7.19 부분취소후잔액필드, 데모페이지추가 김강호 1.3.4 17.07.20 신용카드코드추가 김강호 1.3.5 17.10.16 결제취소결과코드 2002 삭제 김강호 2
목차 1. 제품의개요및특징... 5 1.1. 제품의개요... 5 1.2. 제품의구성및결제처리흐름... 5 1.2.1. 제품의구성... 5 1.2.2. 결제처리흐름... 6 1.2.3 결제데모... 6 1.2.4 신용카드결제화면흐름도... 7 1.2.4 계좌이체결제화면흐름도... 8 1.2.5 휴대폰결제화면흐름도... 9 1.2.6 가상계좌결제화면흐름도... 10 1.3. 제품의특징... 11 2. 제품의구성... 11 3. 설치전환경설정... 12 3.1. 설치가능한운영체제... 12 3.2. 소프트웨어요구사항... 12 3.2.1. JDK 버전... 12 3.2.2. 웹서버... 12 3.3. 방화벽설정... 12 4. 제품설치및설치확인... 13 4.1. 제품설치... 13 4.1.1. 서버라이브러리설치... 13 4.1.2. 샘플페이지설치... 13 4.2. 설치확인... 14 5. 결제요청페이지연동... 14 5.1. 결제요청페이지개발... 14 5.2. 결제요청페이지전문... 17 6. 결제옵션안내... 18 6.1. 결제수단설정안내... 18 6.2. 현금영수증발행차단... 18 6.3. 특정카드사선택옵션... 19 6.4. 할부개월설정옵션... 20 6.5. 상점로고설정... 20 6.6. 카드전표출력... 21 3
7. 거래요청페이지연동... 22 7.1. 결제승인페이지개발... 22 7.2. 결제승인전문내역 ( 공통 )... 24 7.2.1. 카드결제승인전문... 24 7.2.2. 계좌이체및 SSG은행계좌결제승인전문... 25 7.2.3. 가상계좌이체결제승인전문... 25 7.2.4. 휴대폰결제승인전문... 25 8. 결제취소... 26 8.1. 결제취소요청페이지개발... 26 8.2. 결제취소요청전문... 26 8.3. 결제취소결과 ( 승인 ) 페이지개발... 26 9. 로그... 29 9.1. 어플리케이션로그... 29 9.2. 이벤트로그... 29 10. 기타... 30 10.1. 결제수단별결과코드... 30 10.1.1. 라이브러리에러코드... 30 10.2. 신용카드... 32 10.3. 계좌이체... 33 10.4. 가상계좌... 33 10.5. 휴대폰결제... 33 10.6. SSG은행계좌결제... 34 10.7. 결제취소... 34 11. 기타... 35 11.1. 신용카드코드... 35 11.2. 계좌이체은행코드... 36 12. 가맹점라이선스키발급... 38 13. 가맹점거래취소비밀번호등록... 39 4
1. 제품의개요및특징 1.1. 제품의개요 NICEPAY 전자지불시스템은위 변조방지기능을제공함으로써별도의보안장치없이안전하게인터넷상에서전자결제를할수있는시스템입니다. NICEPAY TX For JAVA는 JAVA 기반의 Server 라이브러리를통해결제요청에대한응답을안정성과신뢰성을기반으로실시간으로처리할수있도록제작되었습니다. 1.2. 제품의구성및결제처리흐름 1.2.1. 제품의구성 Secure Layer : 위 변조방지기능으로써결제거래에대한안정성과신뢰성도모 Core Service : 신용카드결제, 실시간계좌이체, 현금영수증, 휴대폰결제, 결제취소 Log : 어플리케이션의정상 오류동작을확인할수있는로그와거래의정상실패를확인할수있는이벤트로그 Web Data : 인터넷브라우저상의 WEB 데이터를서버라이브러리로전달하는모듈 Transport : 상점과 NICEPAY 전자지불시스템과결제데이터를송 / 수신하는모듈 5
1.2.2. 결제처리흐름 NICEPAY TX For Java는다음과같은흐름으로결제처리가이루어집니다. 1 결제요청을위하여필요한데이터를정해진형식으로설정한후결제처리 Flex를호출한다. 2 결제처리 Flex에서라이브러리를호출할 JSP로결제처리를위한 HTTP 파라미터를전달한다.( 암호화구간 ) 3 이전단계에서전달받은 HTTP 파라미터를 NICEPAY Interface로전송할데이터로변환한다. 4 변환된데이터를 NICEPAY Interface로전송한다. (HTTPS 보안구간 ) 5 NICEPAY Interface로부터결제처리결과를수신하고, 정해진규칙대로데이터를변환 ( 파싱 ) 한다. 6 브라우저에출력한결제결과데이터를생성한다. 7 브라우저에결제결과를출력한다. 1.2.3 결제데모 아래결제데모페이지방문시결제 Test 를할수있습니다. https://home.nicepay.co.kr/homepg/demo.jsp 6
1.2.4 신용카드결제화면흐름도 약관동의 카드선택 카드인증 결제완료 7
1.2.4 계좌이체결제화면흐름도 약관동의 뱅크페이구동 계좌인증 결제완료 8
1.2.5 휴대폰결제화면흐름도 약관동의 결제정보확인 휴대폰인증 결제완료 9
1.2.6 가상계좌결제화면흐름도 약관동의 은행선택및현금영수증확인 채번완료 10
1.3. 제품의특징 NICEPAY 전자결제시스템은부가적인보안장치없이독자적인위 변조방지를위한암호화 를적용함으로써안전하게결제처리를할수있습니다. NICEPAY 전자결제시스템은다음과같은결제수단을제공하며, 인터넷뿐만아니라모바 일에서도결제를할수있습니다. 결제수단신용카드 ISP안전결제실시간계좌이체가상계좌이체휴대폰결제 설명국내또는해외에서발급된카드를사용하여전자결제카드사에발급받은인증서를이용하여전자결제 ( 비씨카드, 국민카드 ) 인터넷뱅킹용공인인증서를이용하여실시간계좌이체를통하여전자결제대금입금을위하여부여받은계좌번호 ( 예금주 : 나이스페이먼츠 ) 로입금함으로써전자결제휴대폰으로물품구입을위한금액을지불하고, 휴대폰요금으로과금되는전자결제 NICEPAY TX For Java 는사용자의개발편의성을도모하기위하여기능을단순화하였으며, 거 래건수및어플리케이션정상작동여부를확인할수있는로그기능을제공합니다. 2. 제품의구성 결제샘플은서버라이브러리, 샘플소스로구성되어있습니다. 구분폴더명 ( 파일명 ) 비고 lib 폴더 lib 암호화, Encoding 관련 java파일 샘플폴더 samples 승인샘플페이지 취소샘플페이지 제공되는샘플소스를그대로사용해서는안되며, 샘플소스를참고하여 JSP 코드를작성해 야합니다. 11
3. 설치전환경설정 3.1. 설치가능한운영체제 NICEPAY TX For JAVA 는 JAVA 클래스와 JSP 코드가구동할수있는웹서버환경의모든운영 체제에설치및사용이가능합니다. 3.2. 소프트웨어요구사항 3.2.1. JDK 버전 NICEPAY TX For JAVA 는 JDK 1.5버전이상에서사용할것을권장합니다. (JDK 1.4 이하의버전을사용하실경우 JDK 버전다운그레이드작업이요함.) 3.2.2. 웹서버 JSP 를구동할수있는 J2EE 컨테이너또는 Servlet/JSP 컨테이너가필요합니다. ( 예 : Tomcat, Resin, JBoss, WebLogic, WebSphere 등 ) 3.3. 방화벽설정 NICEPAY TX For Java는 NICEPAY interface(front) 와의통신프로토콜로 TCP 기반의소켓을사용합니다. NICEPAY interface 영역으로연결시 Remote Port는 9001을사용합니다. 따라서, 상점네트워크시스템의방화벽을다음과같이설정이필요합니다. 연결대상 121.133.126.1 포트 9001 프로토콜 연결방향 TCP OUTBOUND 12
4. 제품설치및설치확인 4.1. 제품설치 NICEPAY_TX_Java.zip 파일의압축을풀어해당디렉토리구조가다음과같은지확인한다. 1 차 2 차 3 차비고 NICEPAY_TX_Java lib - 서버라이브러리 - - 샘플페이지 4.1.1. 서버라이브러리설치 No. 파일명 비고 1 nicepay_tx-0.9.9.16.jar NICEPAY 소켓통신모듈 2 xpg_client.jar NICEPAY 전문처리모듈 3 ipgweb.jar 4 slf4j-log4j12-1.5.6.jar 5 slf4j-api-1.5.6.jar 6 jaxen-1.1.3.jar 7 log4j-1.2.12.jar 8 dom4j.jar 9 jdom.jar 10 commons-codec-1.3.jar 11 commons-lang-2.4.jar 12 commons-logging-1.1.jar 4.1.2. 샘플페이지설치 웹서버의설치경로에샘플파일들을브라우저에서접근할수있도록설치한후, 웹 Context를설정합니다. No. 파일명 비고 1 payrequest.jsp 결제요청페이지 2 payresult.jsp 결제결과페이지 3 cancelrequest.jsp 결제취소페이지 4 cancelresult.jsp 취소결과샘플페이지 13
4.2. 설치확인 설치과정에서배포한 payrequest.jsp 를브라우저로접속이가능한지확인한다. (http:// 호스트도메인주소 / 컨텍스트명 / payrequest.jsp) 요청 버튼을클릭하여결제 UI가출력되는지확인한다. 신용카드결제정보를입력하여결제처리가정상적으로처리되는지확인합니다. 테스트상점ID(nicepay00m) 가기본적으로세팅되어, 해당상점으로결제되며해당결제는실제결제와동일하며해당거래는해당결제일오후 11시 30분경에자동취소처리됩니다. 5. 결제요청페이지연동 5.1. 결제요청페이지개발 상점페이지에서결제 UI 와연동하기위해서는다음과같은작업이필요합니다. (payrequest.jsp 참고 ) 상점키및상점 ID 설정상점 ( 회원사 ) ID에맞는고유의키및상점 ID를설정합니다. 상점키는계약시발급됩니다. String merchantkey = { 상점키 } String merchantid = "{ 상점ID}"; <input name="mid" type= hidden value="<%=merchantid %>"> *merchantid와 MID의 value는동일하게설정해야합니다. 14
* 샘플에제공되는 MID인 nicepay00m과상점키인 merchantkey는아래사항을주의합니다. - 실서버에적용하실때에는꼭해당상점 ID에맞는고유의키및 ID를설정합니다. - 제공되는 ID는 TEST ID로 11시 30분에일괄취소요청됩니다. 만약취소가되지않았을경우 NICEPAY 개발팀 (tech@nicepay.co.kr) 로문의부탁드립니다. * 상점키확인하는방법 - NICEPAY 가맹점관리자페이지 (https://pg.nicepay.co.kr/home/login.jsp) 접속 - 계약시발급받으신 ID로로그인 - 가맹점정보 가맹점정보 KEY 관리에서 MID와상점키를확인합니다. 상품가격설정 String price = "1000";. <input type="hidden" name="amt" value="<%=price%>"> *price 와 Amt의 value는동일하게설정해야합니다. JavaScript Include 설정 NicePay 를호출하게되는자바스크립트를 include 합니다. 아래의주소는절대수정하지마십시요. <script src="https://web.nicepay.co.kr/flex/js/nicepay_tr.js" language="javascript"></script> * 단, 서버가 UTF-8 인코딩일경우, https://web.nicepay.co.kr/flex/js/nicepay_tr_utf.js 변경 * 결제페이지의결과값이동적으로바뀌는경우보안검증오류로결제가되지않습니다. 이경우별도의 js를사용해야하며 tech@nicepay.co.kr로문의주십시오. 결제요청및취소함수설정 15
<script language="javascript"> // Active-x 초기화함수 NicePayUpdate(); // 결제요청함수 function nicepaystart(){ var payform = document.payform; // 결제 form // 필수사항들을체크하는로직을삽입해주십시오. gopay(payform); } // 결제취소시호출하게되는함수 function nicepayclose(){ alert(" 결제가취소되었습니다 "); } // 카드사인증후결제요청시호출되는함수 function nicepaysubmit(){ document.payform.submit(); } 결제결과페이지설정 <form name="payform" action="{ 결제결과 URL}"> * 결과전달받을주소를 form action 에명시합니다. 상점의추가파라미터설정시 form 내의 hidden field 추가로전달가능합니다. (NICEPAY 에서사용하는이름과는중복이되지않도록주의하십시오.) 암호화파라미터설정 <input type="hidden" name="encodeparameters" value="{ 파라미터명 },{ 파라미터명 } "> --------------------------( 사용예시 ) -------------------------- <input type="hidden" name="encodeparameters" value="amt,cardno,cardexpire,cardpwd"> 상점에서설정하는정보 ( 결제정보 ) 와상점에서미설정정보중일부에해당하는정보 ( 카드번호, 카드비밀번호, 고객주민번호 ) 만암호화처리가능. 16
5.2. 결제요청페이지전문 결제시 Form 에보내는결제요청파라미터입니다. 파라미터명 파라미터설명 필수 비고 (MAX 필드길이 byte) 유무 PayMethod 결제수단 필수 10 byte GoodsCnt 결제상품개수 필수 2 byte 디폴트값 1로세팅 GoodsName 결제상품명 필수 40 byte Amt 결제상품금액 필수 12 byte, 반드시숫자로만입력 MID 상점아이디 필수 10 byte BuyerName 구매자명 필수 30 byte BuyerTel 구매자연락처 필수 40 byte-없이입력 UserIP 회원사고객IP 필수 20 byte MallIP 상점서버IP 필수 20 byte EncodeParameter 암호화대상항목 필수 고정값 SocketYN 소켓이용유무 필수 Y로사용 EdiDate 전문생성일시 필수 14 byte EncryptData 해쉬값 필수 100 byte 변경불가 GoodsCl 상품구분 핸드폰결제인경우필수 Moid 상품주문번호 64 byte BuyerAuthNum 구매자인증번호 13 byte, 주민번호또는사업자번호 BuyerEmail 구매자메일주소 60 byte ParentEmail 보호자메일주소 60 byte BuyerAddr 배송지주소 100 byte BuyerPostNo 우편번호 6 byte SUB_ID 서브몰아이디 MallUserID 회원사고객아이디 20 byte VbankExpDate 가상계좌입금만료일 8자리또는 12자리 (ex :20110225) 17
6. 결제옵션안내 6.1. 결제수단설정안내결제수단설정은단일결제및복합결제메뉴로구성할수있습니다. 1) 신용카드로단일결제시설정 <input type="hidden" name="paymethod" value="card"> 2) 신용카드또는계좌이체로결제시설정,( 콤마 ) 로결제수단을복수로설정할수있습니다. <input type="hidden" name="paymethod" value="card,bank"> * 결제수단설정표 결제수단신용카드계좌이체가상계좌휴대폰 SSG 은행계좌 설정명 CARD BANK VBANK CELLPHONE SSG_BANK 6.2. 현금영수증발행차단상점에서현금영수증발급을막을때사용하는옵션입니다. 이경우고객에게는현금영수증발급을요청할수있는 UI가출력되지않고계좌이체거래가실행됩니다. <input type="hidden" name="optionlist" value="no_receipt"> 18
6.3. 특정카드사선택옵션 결제페이지에서선택한카드만을플러그인에적용하는옵션입니다. 특정카드사만플러그인에표시할때사용합니다. - 필드명 : SelectCardCode - 필드값 : 카드코드 <! - 카드사선택옵션 --> <input type="hidden" name="selectcardcode" value="02"> * 카드코드값은 10.1 신용카드코드를참조하십시오. 19
6.4. 할부개월설정옵션 6.3의특정카드선택옵션을사용할때같이사용되는옵션으로안심클릭의할부개월을설정합니다. - 필드이름 : SelectQuota - 필드값 : 카드할부개월 (00,02 06) <! - 카드사할부개월옵션 --> <input type="hidden" name="selectquota" value="03"> * 단, 01 은일시불과같으나카드사마다로직이다르므로일시불은필히 00 으로설정 6.5. 상점로고설정 상점로고를결제창에설정하고자할때사용하는옵션으로설정된이미지가좌측상단에위치하 여보여지게됩니다. <input type="hidden" name="logoimage" value="http://abc.com/images/12.gif"> * 상기에해당하는이미지를가져오기위해해당서버에이를허가하는크로스도메인보안정책파 일인 crossdomain.xml 이필요합니다. 이파일은상점서버의웹루트에위치하여야합니다. -> http:// 상점도메인.com/crossdomain.xml 20
<cross-domain-policy> <allow-access-from domain="*" secure="false"/> </cross-domain-policy> 6.6. 카드전표출력카드전표영수증출력을할경우아래의자바스크립트를참조하여연동합니다. // 카드전표출력함수 function printreceipt(tid) { var status = "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes, resizable=yes,width=420,height=540"; var url = "https://pg.nicepay.co.kr/issue/issueloader.jsp?tid="+tid+"&type=0"; window.open(url,"popupissue",status); } printreceipt(' 거래아이디-tid'); 21
7. 거래요청페이지연동 7.1. 결제승인페이지개발샘플페이지 payresult.jsp를참고하여신용카드결제결과페이지를구성한다. 클래스 Import <%@ page import="kr.co.nicevan.nicepay.web.adapter.nicepayhttpservletrequestwrapper"%> <%@ page import= kr.co.nicevan.nicepay.web.adapter.web.nicepayweb"%> <%@ page import=" kr.co.nicevan.nicepay.web.adapter.web.dto.webmessagedto"%> Request Wrapper 등록 NicePayHttpServletRequestWrapper httprequestwrapper = new NicePayHttpServletRequestWrapper(request); 소켓어댑터객체생성 NicePayWEB nicepayweb = new NicePayWEB(); 로그디렉토리설정 nicepayweb.setparam("nicepay_log_home","/wwwroot/ipg_adaptor_log/log"); 이벤트로그, 어플리케이션로그파일이생성되는위치, 설정한디렉터리는파일쓰기권한이반드시필요. 이벤트로그모드설정 (8. 로그항목참고 ) nicepayweb.setparam("event_log","1"); // 0: DISABLE, 1: ENABLE 어플리케이션로그모드설정 (8. 로그항목참고 ) nicepayweb.setparam("app_log","1"); // 0: DISABLE, 1: ENABLE 실제로운영환경에서는 DISABLE 로설정하시는것을권장. 암호화플래그설정 ( 라이브러리 <->NICEPAY 구간암호화여부 ) // N: 평문, S: 암호화 nicepayweb.setparam("encflag","s"); 서비스코드설정 // 결제서비스 : PY0, 취소서비스 : CL0 nicepayweb.setparam("service_mode", "PY0"); 22
통화구분설정 nicepayweb.setparam("currency", "KRW"); // 현재원화만지원 결제요청 WebMessageDTO responsedto = nicepayweb.doservice(httprequestwrapper,response); 결제결과출력 // 결과코드 ( 정상 :3001, 그외에러 ) String resultcode = responsedto.getparameter("resultcode"); // 결과메시지 String resultmsg = responsedto.getparameter("resultmsg"); // 승인일시 YYMMDDHH24mmss String authdate = responsedto.getparameter("authdate"); // 승인번호 String authcode = responsedto.getparameter("authcode"); // 결제카드사코드 String cardcode = responsedto.getparameter("cardcode"); // 결제카드사명 String cardname = responsedto.getparameter("cardname"); BIZ전문의응답항목명으로결과데이터출력가능. 23
7.2. 결제승인전문내역 ( 공통 ) 파라미터명 파라미터설명 길이 내용 ResultCode 결제결과코드 4 byte 결제수단별결제성공코드값신용카드 3001 계좌이체 4000 가상계좌 4100 휴대폰 A000 현금영수증 7001 SSG은행계좌 - 0000 ResultMsg 결제결과메시지 100 byte 예 ) 카드결제성공 TID 거래번호 30 byte 거래를구분하는 transaction ID 예 ) nictest00m01011104191651325596 Moid 상점주문번호 64 byte 상점에서부여한거래주문번호예 ) mnoid1234567890 MID 상점 ID 10 byte 상점 ID 예 ) nictest00m PayMethod 결제수단코드 10 byte 신용카드 : CARD 계좌이체 : BANK 가상계좌 : VBANK 핸드폰 : CELLPHONE SSG은행계좌 : SSG_BANK Amt 결제상품금액 12 byte 12 byte, 반드시숫자로만입력예 ) 1000원인경우 -> 000000001000 AuthDate 승인날자 ( 공통 ) 12 byte 표시타입 : YYMMDDHHMMSS 예 )11041916520 AuthCode 승인코드 ( 공통 ) 30byte 승인번호 ( 신용카드, 계좌이체, 휴대폰 ) 7.2.1. 카드결제승인전문 파라미터명 파라미터설명 길이 내용 CardCode 결제카드사코드 3 byte 신용카드사별코드 ( 기타참조 ) CardName 결제카드사명 20 byte 예 ) 비씨 CardQuota 할부개월 2 byte 예 ) 00 ( 일시불 ) 03 (3개월) CardCl 카드구분 예 ) 0( 신용 ) 1( 체크 ) CcPartCl 부분취소가능여부 예 ) 0( 불가능 ) 1( 가능 ) 24
7.2.2. 계좌이체및 SSG 은행계좌결제승인전문 파라미터명 파라미터설명 길이 내용 BankCode 결제은행코드 3 Byte 은행별코드 ( 기타참조 ) BankName 결제은행명 20 Byte 예 ) sc 제일은행 RcptType 현금영수증타입 1 Byte 예 ) 0: 발행안함,1: 소득공제,2: 지출증빙 7.2.3. 가상계좌이체결제승인전문 파라미터명 파라미터설명 길이 내용 VbankBankCode 결제은행코드 char(3) 입금은행코드 ( 기타참조 ) VbankBankName 결제은행명 char(20) 예 ) sc 제일은행 VbankNum 가상계좌번호 char(20) 임금할계좌번호 7.2.4. 휴대폰결제승인전문 파라미터명파라미터설명길이내용 DstAddr 휴대폰번호 char(16) 예 ) 01012341234 25
8. 결제취소 8.1. 결제취소요청페이지개발 결제취소입력페이지는결제샘플의 cancelrequest.jsp를참고하여구성합니다. 8.2. 결제취소요청전문 파라미터명 파라미터설명 필수 비고 CancelAmt 취소금액 필수 MID 상점 ID 필수 TID 거래 ID 필수 CancelPwd 취소비밀번호 필수 취소비밀번호는가맹점관리자의 가맹점정보 > 기본정보 > 에서별도로설정한 비밀번호를기입합니다 CancelMsg 취소사유 CancelIP 취소요청자IP PartialCancelCode 부분취소구분 필수 전체취소 : 0, 부분취소 : 1 * 부분취소는가맹점계약시별도요청해야 사용가능합니다. Moid 취소요청번호 옵션 부분취소시중복취소방지를위해설정 CcPartRemainAmt 부분취소후잔액 옵션 부분취소후원거래금액의최종잔액을설정 미입력할경우취소후잔액체크안함 주의 ) 0을입력할경우 0원을기준으로잔액 체크함 Ex) - 원거래금액 =10,000 - 부분취소금액 : 7,000 / 부분취소후잔액 : 3,000 8.3. 결제취소결과 ( 승인 ) 페이지개발 클래스 Import <%@ page import="kr.co.nicevan.nicepay.web.adapter.nicepayhttpservletrequestwrapper"%> <%@ page import= kr.co.nicevan.nicepay.web.adapter.web.nicepayweb"%> <%@ page import=" kr.co.nicevan.nicepay.web.adapter.web.dto.webmessagedto"%> 26
Request Wrapper 등록 NicePayHttpServletRequestWrapper httprequestwrapper = new NicePayHttpServletRequestWrapper(request); 소켓어댑터객체생성 NicePayWEB nicepayweb = new NicePayWEB(); 로그디렉토리설정 nicepayweb.setparam("nicepay_log_home","{ 로그디렉토리 }"); 이벤트로그, 어플리케이션로그파일이생성되는위치, 설정한디렉터리는파일쓰기권한이반드시필요. 이벤트로그모드설정 (8. 로그항목참고 ) nicepayweb.setparam("event_log","1"); // 0: DISABLE, 1: ENABLE 어플리케이션로그모드설정 (8. 로그항목참고 ) nicepayweb.setparam("app_log","1"); // 0: DISABLE, 1: ENABLE 실제로운영환경에서는 DISABLE 로설정하시는것을권장. 암호화플래그설정 ( 라이브러리 <->NICEPAY 구간암호화여부 ) // N: 평문, S: 암호화 nicepayweb.setparam("encflag","s"); 서비스코드설정 // 결제서비스 : PY0, 취소서비스 : CL0 nicepayweb.setparam("service_mode", "CL0"); 결제요청 WebMessageDTO responsedto = nicepayweb.doservice(httprequestwrapper,response); 결제결과출력 // 결과코드 // 정상 :2001( 취소성공 ), 2211( 환불성공 ) // 2211( 환불성공 ) 역시취소성공으로처리해야만함 // 그외에러 27
String resultcode = responsedto.getparameter("resultcode"); // 결과메시지 String resultmsg = responsedto.getparameter("resultmsg"); // 취소금액 String cancelamt = responsedto.getparameter("cancelamt"); // 취소일 String canceldate = responsedto.getparameter("canceldate"); // 취소시간 String canceltime = responsedto.getparameter("canceltime"); // 취소번호 String cancelnum = responsedto.getparameter("cancelnum"); BIZ 전문의응답항목명으로결과데이터출력가능. 부분취소시중복취소방지 Moid 파라미터에고유한취소요청번호 ( 유니크 ) 를함께설정하여취소요청전문을보내면중복취소확인을하게됩니다. 주의!!! 단, 방지확인을하도록기준정보등록을꼭하셔야합니다. <-- 부분취소시중복취소방지확인주문번호 --> <input type="hidden" name="moid" value="// 고유한취소요청번호 //"> 취소가능기간 서비스 취소가능기간 환불가능기간 신용카드 - 결제일로부터 60 일이내 - 계좌이체 - 당일 (00:00 이전 ) - 결제일로부터 30 일이내 가상계좌 - - 불가 ( 해당회원사에서진행 ) 휴대폰결제 - 결제일의해당월이내 28
9. 로그 9.1. 어플리케이션로그어플리케이션로그파일명은 application.log이며, 로그파일은일별백업파일로자동생성된다. 전문설정의결과, 전문송 / 수신내용을어플리케이션로그를확인할수있습니다. 2009-11-03 17:25:07.197 [DEBUG] nicepay.adapter.log.applogjournal.writelog : webmessagedto after header value fill : ====================================================== PARAM SET ====================================================== [ISPCode] -> [] [GoodsCnt] -> [1] [errorsys] -> [MALL] [CardQuota] -> [] 9.2. 이벤트로그이벤트로그는결제요청과결제취소각각의형태로로깅되어, 결제요청건과결제취소거래건수를확인할수있습니다. P TE 20091103 172622 Bank mn_ 상품명 1004 4000 계좌이체결제성공 C TE 20091103 173431 Bank 1004 2001 취소성공 결제요청로그포맷 순번 항목명 설명 1 거래구분 P: 결제요청 2 성공여부 TE: 성공 TF: 실패 3 요청일자 yyyymmdd 4 요청시간 HHmmss 5 지불수단 CARD,BANK,VBANK 29
6 상품명 상품명 7 상품금액 상품금액 8 회원사고객ID 회원사고객ID 9 결과코드 결제결과코드 ResultCode 10 결과메시지 결제결과메시지 결제취소로그포맷 순번 항목명 설명 1 거래구분 C: 결제취소 2 성공여부 TE: 성공 TF: 실패 3 요청일자 yyyymmdd 4 요청시간 HHmmss 5 지불수단 CARD,BANK,VBANK 6 상품명 상품명 7 취소금액 취소금액 8 회원사고객ID 회원사고객ID 9 결과코드 취소결과코드 ResultCode 10 결과메시지 취소결과메시지 10. 기타 10.1. 결제수단별결과코드 10.1.1. 라이브러리에러코드 에러코드 에러메시지 S999 기타오류가발생하였습니다. S001 요청템플릿이존재하지않습니다. S002 응답템플릿이존재하지않습니다. T001 수신메시지인코딩중예외가발생하였습니다. T002 비정상적인수신전문입니다. T003 수신데이터파싱중예외가발생하였습니다. T004 요청전문의헤더부생성중오류가발생하였습니다. T005 요청전문의바디부생성중오류가발생하였습니다. X001 서버도메인명이잘못설정되었습니다. X002 서버로소켓연결중오류가발생하였습니다. 30
X003 전문수신중오류가발생하였습니다. X004 전문송신중오류가발생하였습니다. V005 지원하지않는지불수단입니다. V101 암호화플래그미설정오류입니다. V102 서비스모드를설정하지않았습니다. V103 지불수단을설정하지않았습니다. V104 상품개수미설정오류입니다. V201 상점 ID 미설정오류입니다. V202 LicenseKey 미설정오류입니다. V203 통화구분미설정오류입니다. V204 MID 미설정오류입니다. V205 MallIP 미설정오류입니다. V301 구매자이름미설정오류입니다. V302 구매자인증번호미설정오류입니다. V303 구매자연락처미설정오류입니다. V304 구매자메일주소미설정오류입니다. V401 상품명미설정오류입니다. V402 상품금액미설정오류입니다. V501 카드형태미설정오류입니다. V502 카드구분미설정오류입니다. V503 카드코드미설정오류입니다. V504 카드번호미설정오류입니다. V505 카드무이자여부미설정오류입니다. V506 카드인증구분미설정오류입니다. V507 카드형태설정오류입니다. V508 카드형태허용하지않는값을설정하였습니다. V509 카드구분허용하지않는값을설정하였습니다. V510 유효기간미설정오류입니다. V511 유효기간허용하지않는값을설정하였습니다. V512 유효기간의월형태가잘못설정되었습니다. V513 카드비밀번호미입력오류입니다. V601 은행코드미설정오류입니다. V602 금융결제원암호화데이터미설정오류입니다. V701 가상계좌입금만료일미설정오류입니다. VA01 거래KEY 미설정오류입니다. VA02 이통사구분미설정오류입니다. VA03 SMS승인번호미설정오류입니다. VA04 업체TID 미설정오류입니다. 31
VA05 휴대폰번호미설정오류입니다. VA09 고객고유번호 ( 주민번호, 사업자번호 ) 미설정오류입니다. VA10 ENCODE 업체TID 미설정오류입니다. VB02 이통사구분미설정오류입니다. VB05 휴대폰번호미설정오류입니다. VB09 고객고유번호 ( 주민번호, 사업자번호 ) 미설정오류입니다. VB10 고객 IP 미설정오류입니다. V801 취소금액미설정오류입니다. V802 취소사유미설정오류입니다. V803 취소패스워드미설정오류입니다. 라이브러리내부에서데이터유효성체크시발생하는오류로응답전문의 ErrorCD, ErrorMsg에설정되어출력. 10.2. 신용카드 번호 결과코드 메시지 1 3001 카드결제성공 2 3011 카드번호오류 3 3012 카드가맹점정보미확인 4 3013 카드가맹점개시안됨 5 3014 카드가맹점정보오류 6 3021 유효기간오류 7 3022 할부개월오류 8 3023 할부개월한도초과 9 3031 무이자할부카드아님 10 3032 무이자할부불가개월수 11 3033 무이자할부가맹점아님 12 3034 무이자할부구분미설정 13 3041 금액오류 (1000원미만신용카드승인불가 ) 14 3051 해외카드미등록가맹점 15 3052 통화코드오류 16 3053 확인불가해외카드 17 3054 환률전환오류 18 3055 인증시달러승인불가 19 3056 국내카드달러승인불가 20 3057 인증불가카드 21 3061 국민카드인터넷안전결제적용가맹점 32
22 3062 신용카드승인번호오류 23 3071 매입요청가맹점아님 24 3072 매입요청 TID 정보불일치 25 3073 기매입거래 26 3081 카드잔액값오류 27 3091 제휴카드사용불가가맹점 28 3095 카드사실패응답 10.3. 계좌이체 번호 결과코드 메시지 1 4000 계좌이체결제성공 2 4001 회원사서비스불가은행 3 4002 출금일자불일치 4 4003 출금요청금액불일치 5 4004 거래번호 (TID) 불일치 6 4005 회신정보불일치 7 4006 계좌이체승인번호오류 8 4007 은행시스템서비스중단 10.4. 가상계좌 번호 결과코드 메시지 1 4100 가상계좌발급성공 2 4110 가상계좌입금성공 3 4101 가상계좌최대거래금액초과 4 4102 가상계좌입금예정일오류 5 4103 가상계좌입금예정시간오류 6 4104 가상계좌정보오류 10.5. 휴대폰결제번호 결과코드 메시지 1 A000 휴대폰결제처리성공 2 A001 휴대폰결제처리실패 33
3 A002 필수입력값 ( 거래키 ) 누락 4 A003 필수입력값 ( 이통사구분 ) 누락 5 A004 필수입력값 (SMS승인번호) 누락 6 A005 필수입력값 ( 업체TID) 누락 7 A006 필수입력값 ( 휴대폰번호 ) 누락 8 A041 결제금액오류 9 A564 휴대폰결제ID설정오류 10 A565 휴대폰결제ID미설정오류 11 A566 휴대폰결제사설정오류 12 A567 상품구분코드설정오류 13 A568 서비스구분코드설정오류 10.6. SSG은행계좌결제 번호 결과코드 메시지 1 0000 결제성공 2 2000 DB오류 3 2011 CINO미존재 4 2012 주문번호없음 5 2032 가맹점주문번호길이이상 6 2151 거래정지가맹점 7 2152 미등록가맹점 8 2154 제휴사상태미확인 9 2156 중복등록된거래요청 10 2157 허용되지않는입력방식 11 2158 중복등록된입력방식 12 2159 해당은행장애 13 2201 기승인존재 10.7. 결제취소 결과코드 메시지 2001 취소성공 2211 환불성공 (2001과함께취소성공처리할것 ) 2003 취소실패 34
2010 취소요청금액 0원이하 2011 취소금액불일치 2012 취소해당거래없음 2013 취소완료거래 2014 취소불가능거래 2015 기취소요청 2016 취소기한초과 2017 취소불가회원사 2018 신용카드매입후취소불가능가맹점 2019 타회원사거래취소불가 2021 매입전취소 2022 매입후취소 2023 취소한도초과 2024 취소패스워드불일치 2025 취소패스워드미입력 2026 입금액보다취소금액이큽니다. 2027 에스크로거래는구매또는구매거절시취소가능. 2028 부분취소불가능가맹점. 2029 부분취소불가능결제수단. 2030 해당결제수단부분취소불가. 2031 전체금액취소불가. 2032 취소금액이취소가능금액보다큼. 2033 부분취소불가능금액. 전체취소이용바람. 11. 기타 11.1. 신용카드코드 번호 신용카드사 코드 1 비씨 01 2 국민 02 3 외환 03 4 삼성 04 5 신한 06 6 현대 07 35
7 롯데 08 8 한미 09 9 신세계한미 10 10 시티 11 11 농협 12 12 수협 13 13 평화 14 14 우리 15 15 하나 16 16 동남 ( 주택 ) 17 17 주택 18 18 조흥 ( 강원 ) 19 19 축협 ( 농협 ) 20 20 광주 21 21 전북 22 22 제주 23 23 산은 24 24 해외비자 25 25 해외마스터 26 26 해외다이너스 27 27 해외AMX 28 28 해외JCB 29 29 카카오뱅크 37 30 케이뱅크 38 11.2. 계좌이체은행코드 번호 은행 ( 증권사 ) 명 코드 1 한국은행 001 2 산업은행 002 3 기업은행 003 4 국민은행 004 5 외환은행 005 6 수협중앙회 007 7 수출입은행 008 36
8 농협중앙회 011 9 농협회원조합 012 10 우리은행 020 11 SC제일은행 023 12 한국씨티은행 027 13 대구은행 031 14 부산은행 032 15 광주은행 034 16 제주은행 035 17 전북은행 037 18 경남은행 039 19 새마을금고연합회 045 20 신협중앙회 048 21 상호저축은행 050 22 모건스탠리은행 052 23 HSBC은행 054 24 도이치은행 055 25 에이비엔암로은행 056 26 제이피모간체이스은행 057 27 미즈호코퍼레이트은행 058 28 미쓰비시도쿄UFJ은행 059 29 BOA 060 30 정보통신부우체국 071 31 신용보증기금 076 32 기술신용보증기금 077 33 하나은행 081 34 신한은행 088 35 한국주택금융공사 093 36 서울보증보험 094 37 경찰청 095 38 금융결제원 099 39 동양종합금융증권 209 40 현대증권 218 41 미래에셋증권 230 42 대우증권 238 43 삼성증권 240 37
44 한국투자증권 243 45 우리투자증권 247 46 교보증권 261 47 하이투자증권 262 48 에이치엠씨투자증권 263 49 키움증권 264 50 이트레이드증권 265 51 에스케이증권 266 52 대신증권 267 53 솔로몬투자증권 268 54 한화증권 269 55 하나대투증권 270 56 굿모닝신한증권 278 57 동부증권 279 58 유진투자증권 280 59 메리츠증권 287 60 엔에이치투자증권 289 61 부국증권 290 12. 가맹점라이선스키발급 38
결제요청시 EncodeKey 필드에사용되는라이선키발급방법을설명합니다. 1. NICEPAY 가맹점관리자페이지로그인 https://pg.nicepay.co.kr/ 2. 라이선스키등록 가맹점정보 > KEY 관리 > KEY 복사 (Ctrl + C) 13. 가맹점거래취소비밀번호등록 결제취소또는요청시 CancelPwd 필드에사용되는취소패스워드등록방법을설명합니다. 1.NICEPAY 가맹점관리자페이지로그인 https://pg.nicepay.co.kr/ 2. 거래취소비밀번호등록 가맹점정보 > 거래취소비밀번호등록 39