tpay Smart INSTALL & SETUP GUIDE PG 개발팀 Version 1.0.4.2 @ Copyright @ 2015 JTNET Co, Ltd. 본문서와정보는 제이티넷재산입니다. 또한, 모든정보는 제이티넷소유정보이며, 제이티넷의사전동의없이본문서의어떤정보도열람, 복사, 유용, 또는타인과공유되어서는안됩니다. 본문서의정보는변경될수있으며변경시본문서는수정될것입니다. 본문서의내용에관한어떠한의견이라도귀하의프로젝트또는사업담당자에게전달하여주십시오. 페이지 1 / 38
개정이력 작성일 수정내용 작성자 문서버전 2015-08-18 Initial Version 원준호 1.0.0 2015-10-05 Android WebView 연동추가 원준호 1.0.1 2015-11-17 취소부분추가 하현봉 1.0.2 2015-11-18 ios WebView 연동추가 강훈식 1.0.3 2016-01-04 상점관리자시스템접속정보추가 원준호 1.0.4 2016-01-05 문서보완 강훈식 1.0.4.1 페이지 2 / 38
목 차 1. 시작하기... 5 2. 개발환경구성... 6 2.1. tpay Lite 테스트샘플설치... 6 2.2. 압출풀기... 6 3. 결제서비스... 7 3.1. 결제서비스의개요... 7 3.2. 결제서비스구성... 7 3.3. 결제처리구성도... 7 3.4. 결제서비스의특징 ( 지불수단 )... 8 3.4.1. 신용카드... 8 3.4.2. 계좌이체... 8 3.4.3. 가상계좌... 8 3.4.4. 휴대폰결제... 8 3.5. 결제관련용어... 9 4. 설치및설정...10 4.1. 결제서비스이용절차...10 4.2. 설치요구사항...10 4.3. PHP 용결제프로그램...11 4.3.1. PHP용웹서버준비...11 4.3.2. PHP 결제용파일압축해제...11 4.3.3. PHP 결제파일구성...11 4.3.4. PHP 결제파일수정...12 5. 결제페이지구성...14 5.1. 결제요청파라미터설정 ( 기본 )...14 5.1.1. 지불수단 (paymethod)...15 5.1.2. 결제타입선택...15 5.1.3. 결제결과전송 url...15 5.1.4. 결제취소 url...15 5.1.5. 접속방식...15 5.1.6. 앱스키마...15 5.2. 결제요청파라미터설정 ( 고정 / 필수 )...16 5.3. 결제전송데이터암호화 (encryptdata) / 결제결과데이터복호화 (decryptdata)...16 5.3.1. 결제요청페이지 데이터암호화...17 페이지 3 / 38
5.3.2. 결제결과페이지 데이터복호화 / 비교...17 5.4. 결제완료결과서버전송...18 5.5. 결제요청결과파라미터...19 6. 결제테스트...21 6.1. 결제서비스별접속 URL...21 6.2. 결제서비스창로고이미지변경방법...21 7. 결제취소 / 환불처리...22 8. 결제데이터재통보 URL (retryurl)...25 8.1. 결제결과 / 취소재전송세팅방법...25 8.2. 결제결과재전송파라미터...25 8.3. 결제결과파라미터변경...26 9. 안드로이드적용가이드...27 9.1. WebViewClient 샘플 shouldoverrideurlloading 함수안에해당내용추가...27 10. 아이폰적용가이드...30 10.1. URL types 추가, appprefix 사용...30 11. 상점관리자시스템 (MMS)...32 11.1. 접속 URL...32 12. 결제결과코드및메시지...33 12.1. 신용카드...33 12.2. 계좌이체...34 12.3. 가상계좌...34 12.4. 휴대폰결제...35 12.5. 결제취소...35 13. FQA TOP 10...37 페이지 4 / 38
1. 시작하기 tpaylite 서비스는tPay 웹기반전자지불결제시스템 tpaylite는안전하고신뢰성있는인터넷쇼핑을도와주는인터넷전자지불솔루션입니다. 해당기능을쉽게, 올바르게사용하기위해서는제이티넷에서제공하는연동규격과라이브러리가필요합니다. 본문서는 tpaylite 솔루션을사용하기위한기본개발환경구성및연동방법뿐만아니라. tpaylite 솔루션이제공하는각각의기능별살세설명을포함합니다. 앞으로제공될상세기능에대한설명을참고하거나해당기능을실행해보기전에, 반드시기본과정을숙지하시기를권장합니다. 개발환경구성 결제서비스 설치및설정 결제페이지구현 결제테스트 결제취소 / 환불처리 결제데이터재통보 URL (retryurl) 결제결과코드및메시지 본문서에서제공되는상세기능은다음과같습니다. 결제요청 o 상품정보, 상점정보, 구매자정보, 결과를받을페이지를입력받아결제를요청합니다. 결제결과수신 o 결제요청한결과를보여줍니다. 결제결과수신응답 o 결제결과를받은후결과를올바르게받았다고응답을해주어야합니다. 결제취소요청 o 결제완료후상품정보, 상점정보, 취소사유를입력받아결제취소를요청합니다. 결제취소요청결과 o 결제취소요청결과를보여줍니다. 암 / 복호화 o 금액, 상점아이디등파라미커를암호화합니다. 결제취소 ( 웹페이지 ) o tpay에서제공하는회원관리사이트 (https://mms.tpay.co.kr) 에접속하여결제취소를할수있습니다. 결제데이터재통보페이지 5 / 38
o 상점이결제결과를정상적으로받지못했을때세팅된 retryurl 로결과를재통보 할수있습니다. 해당문서는다음의환경을기준으로작성되었습니다. php5 2. 개발환경구성 구분 내용 요구사항 PHP용 PHP PHP4 이상 공통사항 DBMS - 결제내역과결과저장용 DBMS 별도로필요합니다. - tpaylite에는 DB 연동기능이포함되어있지않습니다. ( 데이터베이스연동을위한지불결과데이터만제공 ). 샘플 PHP 올바른테스트및샘플샐행을위해서는최신샘플이설치되어있어야합니다. 포함된샘플은 1.2.1버전이상이요구됩니다. 2.1. tpay Lite 테스트샘플설치 https:/tapy.co.kr-> 기술지원-> 기술자료실->tPay Lite-> 다운로드 2.2. 압출풀기위에서다운로드한파일의압축을풉니다. 압축을풀어서내용을확인하세요. (4.3.3 참고 ) 페이지 6 / 38
3. 결제서비스 3.1. 결제서비스의개요 tpay 의 모바일웹기반전자지불결제시스템 은안전하고신뢰성있는인터넷쇼핑을도 와주는인터넷전자지불솔루션입니다. 3.2. 결제서비스구성 구성결제요청처리결제결과처리위, 변조방지 내용결제를요청하는 WEB PAGE 샘플제공지불요청을처리하고결과를반환하는 WEB PAGE 샘플제공암호화키노출방지를위해 server side 에서암호화함가맹점에서는상점ID, 상점키및금액을해당암호화함수에입력하시면됩니다. 3.3. 결제처리구성도 1 가맹점에서는 web page 를통해 tpay 에결제를요청합니다. 2 tpay 에서는가맹점의요청사항을통해 PG 서버로결제요청사항을전달합니다. 3 PG서버를통해서 VAN사및대외기관과연결하여해당결제결과를가맹점으로전송합니다. MALL tpay 대외기관 HTML & JSP tpay Smart 솔루션 PG 서버 VAN 사 페이지 7 / 38
3.4. 결제서비스의특징 ( 지불수단 ) 3.4.1. 신용카드가맹점에서상품을구매하거나서비스를이용할때결제대금을신용카드를이용하여결제하는서비스입니다. - ISP( 인터넷안전결제 ) 신용카드를이용하여가맹점에서상품을구매할때신용카드결제정보에대한보안과인증기능이포함된신용카드결제서비스입니다. - 비씨카드, 국민카드 - 신용카드안심클릭신용카드결제시 VISA에서제공하는 3D 인증및보안기능이추가된신용카드결제서비스입니다. 3.4.2. 계좌이체은행계좌이체를통합하여가맹점에서상품을구매하거나서비스를이용할때결제대금을계좌이체를통해결제하는서비스입니다. 인터넷뱅킹과관련된파일, 인증서등이설치된 PC에서인터넷뱅킹시스템을이용하여계좌이체로지불하는방식이며, 이용금액은고객의계좌에서실시간으로차감됩니다 3.4.3. 가상계좌고객이은행별가상계좌를이용하여가맹점에서물품대금결제시대금입금을위한은행계좌번호를부여받은후해당가상계좌로물품대금을무통장입금하거나폰뱅킹, PC뱅킹또는인터넷뱅킹등을이용하여온라인입금하는서비스입니다. 3.4.4. 휴대폰결제본인인증절차와결제가한번에이루어지는휴대폰소액결제서비스입니다. 결제된금액은휴대폰요금에합산청구됩니다. 결제수단별결제최소금액 카드 : 1000원 계좌이체 : 501원 휴대폰 : 2000원 은련카드 : 1000원 페이지 8 / 38
3.5. 결제관련용어 구분내용 mid - 가맹점에영문과숫자로이루어진 10자리의상점 ID 발급합니다. (Merchant ID) - 가맹점은 ID로상점을구분하여거래를처리하므로반드시 ID를발급받아 tpay 전자결제서비스를등록을해야합니다. - 최초설치시 ID는테스트용 (tpaytest0m) 으로설정된상태이므로운영전환시반드시실제발급받은 ID를사용하여야정상적인서비스가가능합니다. moid - 가맹점판매상품에대한주문 (order) ID tid - 결제시생성되는거래 (transaction) ID 입니다. - 결제테스트진행후 tid를기록하여결제취소테스트시사용하면됩니다. 가맹점서명키 - 가맹점서명키는결제데이터의위변조를방지하기위해 mid 를발급시에 (merchantkey) 설정되는키입니다. - 서명키는 https://mms.tpay.co.kr 사이트에서확인할수있습니다. 메뉴 : 회원사정보 -> 일반정보 -> KEY 관리 페이지 9 / 38
4. 설치및설정 - tpay Smart 의다운로드, 설치, 설치후확인작업등에대하여설명합니다 - tpay Smart 의설치를위한설치요구사항과관련된내용입니다. 4.1. 결제서비스이용절차 구분 내용 가맹점등록신청 - 결제서비스를이용하기위해가맹점등록및 ID 발급을신청합니다. 프로그램및설치메뉴얼다운로드 - 결제페이지구성을위해용도별해당프로그램다운로드및설치매뉴얼을다운로드합니다. (JSP, PHP, ASP 용 ) 서명키다운로드 - 결제데이터의위. 변조방지를위해가맹점서명키를다운로드합니 다. 설치프로그램수정 - 결제서비스연동을위해해당설치프로그램을수정합니다. 설치프로그램테스 - 프로그램의정상동작을확인하기위해결제테스트를진행합니다. 트 4.2. 설치요구사항 구분 내용 요구사항 PHP용 PHP 5.0 이상 웹서버 Apache, IIS 등 공통사항 DBMS - 저장용 DBMS 별도로필요합니다. - 결제솔루션에는 DB 연동기능이포함되어있지않습니다. ( 데이터베이스연동을위한지불결과데이터만제공 ). 페이지 10 / 38
4.3. PHP 용결제프로그램 4.3.1. PHP 용웹서버준비 구분설치경로및 context 정의 mcrypt 설치확인설치후확인 내용웹서버에서 { 설치경로 }/sample 디렉토리파일들을브라우저를통해접근할수있도록웹 context 를설정합니다. 암호화모듈에서 mcrypt 모듈을사용하기때문에해당모듈이없을경우설치필요 ( 각서버에맞게설치 ) 예 ) 웹 ccontext 를설정 { 설치경로 /tpay} Internet Exploror 에서해당 url 접속 http://host.domainname/tpay/mainpay.php 로최초결제페이지를접근할수있습니다. 4.3.2. PHP 결제용파일압축해제 구분내용다운로드및압축해제 - 설치절대경로를확인합니다. - 첨부된샘플의압축을풀어설치합니다. 4.3.3. PHP 결제파일구성 번호 파일명 설명 1 mainpay.php 결제페이지 2 returnpay.php 결제결과리턴페이지 3 TPAY.LIB.php 암 / 복호화라이브러리 페이지 11 / 38
4.3.4. PHP 결제파일수정 구분 file 내용 mid 변경 mainpay.php // 가맹점 ID (mid, 꼭해당 mid 로바꿔주세요 ) String mid = "tpaytest0m"; 가맹점서명키변경 mainpay.php // 가맹점서명키 ( 꼭해당상점키로바꿔주세요 ) String merchantkey = "VXFVMIZGq... 가맹점 URL IP 세팅 mainpay.php // 가맹점 URL IP 세팅 String paylocalurl = "http://.."; 결제금액변경 mainpay.php // 결제금액 ( 변경시확인하세요.) String amt = 1004 ; moid 세팅 mainpay.php // 가맹점에서사용하실주문번호를설정하세요. String moid = "toid1234567890"; 결제결과전송 URL 변경 mainpay.php (returnurl) Form 의 returnurl 을변경합니다. <input type="text" name="returnurl" value="tpay/returnpay.php" > 결제취소 URL 변경 mainpay.php (cancelurl) Form 의 cancelurl 을변경합니다. <input type="text" name="cancelurl" value="tpay/returnpay.php" > 가맹점서명키변경 returnpay.php String merchantkey = " VXFVMIZGq... 결제요청금액변경 returnpay.php // 결제요청했던금액을가져옵니다. String sourceamt = "1004"; 주문번호설정 returnpay.php // 결제요청시사용한 edidate 를가져옵니다. String sourcemoid = "toid1234567890"; 페이지 12 / 38
그림처럼나오면성공입니다. 페이지 13 / 38
5. 결제페이지구성 tpay Smart 프로그램을통해결제요청및결제결과처리시설정되어야할값들을설명합 니다. 5.1. 결제요청파라미터설정 ( 기본 ) 파라미터 파라미터내용 필수 길이 비고 paymethod 결제수단 필수 10 CARD: 신용카드 BANK: 계좌이체 VBANK: 가상계좌 CELLPHONE: 휴대폰결제 CDBILLRG: 신용카드빌링 transtype 결제타입 2 0: 일반, 1: 에스크로 goodsname 거래상품명 필수 40 영문 : 80자리한글 : 40자리 amt 거래금액 필수 12 상품가격, 는입력하지않는다. 예 )1004 moid 상품주문번호 필수 40 아래특수문자포함불가 ~`':;{}[]<>,.!@#$%^&*()_+ \\/? malluserid 가맹점고객ID 20 buyername 구매자명 필수 30 buyertel 구매자연락처 필수 20 buyeremail 구매자메일주소 필수 60 prdtexpdate 제공기간 50 mid 가맹점아이디 필수 10 계약시부여된 Merchant ID. 테스트시에는임의로부여된테스트아이디로테스트가능. returnurl 결제결과전송url 필수 200 상품결제성공후가맹점으로결과전송될 URL cancelurl 결제취소 url 필수 200 중도결제취소시가맹점으로전송될 url conntype 접속방식 필수 1 0: 모바일 Web브라우저 1: 하이브리드앱 (WebView 연동시 ) appprefix 앱스키마 접속방식이하이브리드앱일경우해당 App 의스키마를입력 supplyamt 공급가액 12 vat 부가세 12 페이지 14 / 38
svsamt 봉사료 12 billreqtype 빌링키발행시 승인여부 1 0: 인증 1: 인증 + 결제 ( 금액 0 원이상 ) 빌링키발행시승인여부 가맹점에서는결제요청시금액 (sourceamt) 과결제후리턴되는금액 (amt) 이같은지체크해야합니다. 5.1.1. 지불수단 (paymethod) 지불수단에는신용카드, 계좌이체, 가상계좌, 휴대폰결제등이있습니다. 5.1.2. 결제타입선택 결제타입을에스크로서비스를이용하실경우, transtype 을 1 로반드시설정해야합니다. 에스크로서비스는결제수단중신용카드, 계좌이체, 가상계좌사용시에만설정가능합니다. 5.1.3. 결제결과전송 url 상품결제성공후가맹점으로결과전송될 url 입니다. 리턴되는금액과주문번호등을 반드시확인하신후, DB 에중복되어입력되지는않았는지확인바랍니다. 5.1.4. 결제취소 url 중도에결제취소시이동하는 page 입니다. 가맹점페이지구성에따라원하는페이지의 전체경로를작성하면됩니다. 5.1.5. 접속방식모바일브라우저에서수행되는 weblink 기반의개발시에는해당파라미터에 0 을, WebView Controller 를이용한하이브리드앱을구현하실경우에는파라미터에 2를설정해주시면됩니다. 5.1.6. 앱스키마 접속방식 (conntype) 이하이브리드앱 (1) 일경우, 해당파라미터에 app 의스키마를설정 해주셔야합니다. 자세한사항은아래 ios/android 개발부분을참고하시기바랍니다. 페이지 15 / 38
5.2. 결제요청파라미터설정 ( 고정 / 필수 ) 파라미터 파라미터내용 필수 길이 비고 vbankexpdate 입금만료일 필수 8 encryptor.getvbankexpdate() 메소드를통해생성 paytype 결제형태 필수 1 1로고정 edidate 전문생성일시 필수 14 Encryptor.getEdidate() 메소드를통해생성 encryptdata 암호화데이터 필수 24 거래금액 + 회원사ID + moid userip 가맹점고객 IP 필수 20 browsertype 결제방식 필수 3 mallreserved 상점예비정보 필수 255 가맹점에서는결제요청시사용한 edidate 와결제후서버에서전송한 edidate 가다른지확인해야합니다. 서버에서는새로운 edidate 를전송하기때문에두값이같을수가없습니다. 결제요청시에생성한 moid 와결제후서버에서전송한 moid 가같은지확인해야합니다. 복호화한 moid 와결제요청시생성된 moid 가다르면데이터가위 / 변조되지않았는지확인해야합니다. 5.3. 결제전송데이터암호화 (encryptdata) / 결제결과데이터복호화 (decryptdata) 안전한결제정보전달을위해결제요청및결제결과확인시데이터암호화 / 복호화를 수행하고있습니다. 아래내용과샘플의내용을참고하시어작성하면됩니다. 페이지 16 / 38
5.3.1. 결제요청페이지 데이터암호화 <? require_once dirname( FILE ).'/TPAY.LIB.php'; $encryptor = new Encryptor($merchantKey); $encryptdata = $encryptor->encdata($amt.$mid.$moid); $edidate = $encryptor->getedidate(); $vbankexpdate = $encryptor->getvbankexpdate();?> - TPAY.LIB.php 의 Encryptor 을 new 연산자를이용하여오브젝트를생성합니다. - 해당오브젝트에서 encdata() 메소드를호출하여, 인수값으로 merchantkey 를설정한후 encryptdate 를구합니다. - 해당오브젝트에서 getedidate() 메소드를호출하여 edidate 를구합니다. - 해당오브젝트에서 getvbankexpdate() 메소드를호출하여 vbankexpdate 를구합니다.( 가상계좌의경우 ) 5.3.2. 결제결과페이지 데이터복호화 / 비교 <? require_once dirname( FILE ).'/TPAY.LIB.php'; $encryptor = new Encryptor($merchantKey, $edidate); amt = encryptor.decdata(amt); moid = encryptor.decdata(moid); if(sourcemoid==moid && sourceamt==amt){?> } //resultcd 체크및 database insert/ 중복체크 - TPAY.LIB.php 의 Encryptor 을 new 연산자를이용하여오브젝트를생성합니다. - 해당오브젝트에서 decdata() 메소드를호출하여, 인수값으로각각 amt, moid 를설정한후복호화된값을구합니다. - 결제전 moid, amt 와결제후복호화한 amt, moid 가동일한지확인합니다. 페이지 17 / 38
5.4. 결제완료결과서버전송 결제완료후해당결제결과를서버에전달해해당결과가정상적으로리턴받았음을확인합니다. 해당파라미터가전송되지않을경우, 거래정보가전달되지않은것으로확인되어해당거래가취소됩니다. - 각거래성공시결과통보 I/F 로정보를전송합니다. - https://webtx.tpay.co.kr/resultconfirm 으로 tid 를전송합니다. // 자바스크립트사용한예 function sendinfo(){ $.ajax({ type : "POST", url : "https://webtx.tpay.co.kr/resultconfirm", datatype : "json", contenttype : "application/x-www-form-urlencoded; charset=utf-8", data : {tid : tid}, success : function(data, textstatus) { if (textstatus == "success") { // 전송성공시로직처리 } else { // 전송실패시로직처리 } } }); } //encryptor에제공된함수를사용한예 <? require_once dirname( FILE ).'/TPAY.LIB.php'; ResultConfirm::send($tid, "000");?> 페이지 18 / 38
5.5. 결제요청결과파라미터 순번 파라미터명 파라미터설명 비고 1 paymethod 결제수단 결제요청파라미터 설정과동일 2 resultcd 결과코드 결과코드참고 3 resultmsg 결과메시지 결과코드참고 4 errorcd 대외기관에러코드 5 errormsg 대외기관에러메시지 6 mid 가맹점아이디 7 tid 거래번호 8 malluserid 구매자아이디 9 amt 금액 10 buyername 구매자명 11 buyertel 구매자전화번호 12 buyeremail 구매자이메일 13 mallreserved 가맹점예비정보 14 goodsname 상품명 15 moid 가맹점주문번호 16 authcode 승인번호 17 edidate 암호화된시간 18 fncd 결제사코드 19 fnname 결제사명 20 cardno 카드번호 21 cardquota 할부개월수 22 vbanknum 가상계좌번호 23 vbankexpdate 가상계좌만료날짜 24 authdate 승인일자 25 cashreceipttype 현금영수증종류 26 receipttypeno 현금영수증번호 27 BID 빌키 페이지 19 / 38
- 결제요청결과파라미터확인 - 결제요청결과와코드는아래 2개파라미터를사용합니다. resultcd ( 결과코드 ) resultmsg ( 결과메시지 ) - 해당파라미터들은기본적인정보 ( 결제완료, 실패등 ) 이며만일카드사또는은행등의대외기관에서전달한상세한오류내역을확인할경우아래파라미터를사용하면됩니다. errorcd ( 대외기관에러코드 ) errormsg ( 대외기관에러메시지 ) - 페이지 20 / 38
6. 결제테스트 - 설치후상점프로세스와의연동이나실제서비스전환등을시행하기이전에테스트를해야합니다. - 반드시이테스트를수행해야합니다. - 테스트가진행되지않는경우당사 (pgcs@tpay.co.kr) 로문의해주십시오. 6.1. 결제서비스별접속 URL https://mtx.tpay.co.kr/mainpay.jsp 에서결제샘플이어떻게작동되는지확인하실수있습니다. 6.2. 결제서비스창로고이미지변경방법 - 결제서비스창의로고이미지를변경할수있습니다. - 아래와페이지의로고는 MMS 에서원하시는모양으로변경가능합니다. - tpay 에서제공하는회원사관리사이트 (https://mms.tpay.co.kr) 에접속하여로그인하신후 상담메뉴의회원사정보 일반정보 LOGO 등록으로이동합니다. - 원하시는로고를선택하고등록하시면아래와같이결제창의로고가변경됩니다. 페이지 21 / 38
7. 결제취소 / 환불처리 - m&bank 에서제공하는회원사관리사이트 (https://mms.mnbank.co.kr) 에접속하여로그인합니다. - 상단메뉴의결제내역, 좌측메뉴의결제내역조회를클릭한다. 조회기간설정후조회버튼을클 릭합니다. - 취소거래에해당하는 tid 를클릭합니다.. 출력되는팝업페이지에취소작업자, 취소사유, 취소 비밀번호를입력하고취소버튼을클릭합니다.. * 취소비밀번호는상점관리사이트에서회원사정보메뉴를이용하여설정이가능합니다. 페이지 22 / 38
- 결제서비스취소 / 환불가능기간 서비스 취소가능기간 환불가능기간 신용카드 - 결제일로부터 60일이내 - 계좌이체 - 당일 (00:00 이전 ) - 결제일로부터 30일이내 가상계좌 - - 불가 ( 해당회원사에서진행 ) 휴대폰결제 - 결제일당월이내 - 불가 ( 해당회원사에서진행 ) - 결제취소요청파라미터 ( 상점에서직접취소요청이가능합니다.) paycancel 샘플파일참고 순번 파라미터명 파라미터설명 길이 타입 필수 비고 1 mid 상점아이디 10 String 필수 2 tid 트랜잭션아이디 30 String 필수 3 moid 상점주문번호 64 String 필수 4 partialcancelcode 취소구분 1 String 필수 0: 전체취소, 1: 부분취소 5 partialcancelid 취소주문아이디 64 String 선택 부분취소시사용 6 cancelpw 취소패스워드 128 String 필수 7 cancelamt 취소금액 12 Int 필수 8 cancelmsg 취소사유 100 String 9 encryptdata 암호화데이터 - String 필수 암호화방식은결제요청과동일 10 edidate 암호화된시간 - String 필수 11 cc_ip 취소자IP 15 String 필수 12 returnurl 결제취소결과전송 - String 필수 URL 13 datatype 결제취소응답방식 4 String 필수 html/json ( json일경우 result 항목에결과내용이설정됨 ) * 부분취소시취소주문아이디를기준으로중복취소가안됩니다. - 결제취소요청결과파라미터 순번 파라미터명 파라미터설명 비고 1 paymethod 지불수단 2 moid 상점주문번호 복호화해서올바른지비교 3 cancelamt 취소금액 복호화해서올바른지비교 4 canceldate 취소일자 페이지 23 / 38
5 canceltime 취소시간 6 cancelnum 지불수단별취소번호 7 resultcd 취소결과코드 8 resultmsg 취소결과메시지 9 edidate 암호화된시간 10 returnurl 결제취소결과전송 URL 11 canceltid 결제취소 TID * 복호화방식은결제결과방식과동일 - 결제취소웹페이지 http://shop.tpay.co.kr/ 페이지에서결제취소데모를확인하실수있습니다. (JSP 버전 ) 페이지 24 / 38
8. 결제데이터재통보 URL (retryurl) - 상점이결제결과를정상적으로받지못했을때세팅된 retryurl 로결과를재통보하는프로 그램입니다. 8.1. 결제결과 / 취소재전송세팅방법 - tpay에서제공하는상점관리사이트 (https://mms.tpay.co.kr) 에접속 / 로그인합니다. - 상단메뉴의회원사정보, 왼쪽메뉴일반정보를클릭후에아래로스크롤하면결제데이터통보관련세팅을하실수있습니다. - 결제수단, 지불매체구분하여결과전송받을 URL과재전송간격, 재전송횟수를설정합니다. 8.2. 결제결과재전송파라미터 3.5 에나온결제결과파라미터와동일합니다. 재전송확인후에도 3.3 에서의결제결과수신시와동일하게 resultconfirm 을해주셔야합니다. 페이지 25 / 38
8.3. 결제결과파라미터변경 - tpay 에서제공하는상점관리사이트 (https://mms.tpay.co.kr) 에접속 / 로그인합니다. - 회원사정보 -> 파라미터맵핑메뉴를선택합니다. - MID를선택후조회버튼을누르면아래그림과같이결과파라미터설정화면이출력됩니다. - 맵핑될파라미터설정후저장하기버튼을누르면이후결제부터변경된파라미터정보로결과가전송됩니다. - 결제요청결과, 결제재통보결과모두동일하게적용됩니다.( 미적용시기본값결과전송 ) 페이지 26 / 38
9. 안드로이드적용가이드 - 안드로이드 WebView 로연동시 WebViewClient 를구현하여야합니다. 9.1. WebViewClient 샘플 shouldoverrideurlloading 함수안에해당내용추가 private class TPayWebViewClient extends WebViewClient { @Override public void onpagestarted (WebView view, String url, Bitmap favicon) { // } @Override public void onreceivedsslerror(webview view, SslErrorHandler handler, SslError error) { handler.proceed(); } @Override public void onpagefinished(webview view, String url){ // } @Override public boolean shouldoverrideurlloading(webview view, String url){ if (url!= null &&!url.equals("ansimclick.hyundiacard.com") && ( url.contains("http://market.android.com") url.contains("intent") url.contains("ispmobile://") url.contains("kftc-bankpay") url.contains("com.kftc.bankpay.android") url.contains("com.lotte.lottesmartpay") url.contains("com.ahnlab.v3mobileplus") url.contains("lottesmartpay") url.contains("hanaansim") url.contains("cloudpay") 페이지 27 / 38
)) { try { url.contains("vguard") url.contains("droidxantivirus") url.contains("smhyundaiansimclick://") url.contains("smshinhanansimclick://") url.contains("smshinhancardusim://") url.contains("smartwall://") url.contains("appfree://") url.contains("market://") url.contains("v3mobile") url.contains("ansimclick") url.contains("http://m.ahnlab.com/kr/site/download") url.endswith(".apk") Intent intent = null; { try { intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); } catch (URISyntaxException ex) { Log.e("Browser", "Bad URI " + url + ":" + ex.getmessage()); return false; } //chrome 버젼방식 if (url.startswith("intent") url.startswith("lottesmartpay://") url.startswith("kb-acp://")) // 앱설치체크를합니다. if (getpackagemanager().resolveactivity(intent, 0) == null) { String packagename = intent.getpackage(); if (packagename!= null) { Uri uri = Uri.parse("market://search?q=pname:" + packagename); intent = new Intent(Intent.ACTION_VIEW, uri); startactivity(intent); return true; } } // 구동방식은 PG: 쇼핑몰에서결정하세요. 페이지 28 / 38
int runtype=1; } if (runtype == 1) { Uri uri = Uri.parse(intent.getDataString()); intent = new Intent(Intent.ACTION_VIEW, uri); startactivity(intent); } else { intent.addcategory(intent.category_browsable); intent.setcomponent(null); try { if (startactivityifneeded(intent, -1)) { return true; } } catch (ActivityNotFoundException ex) { return false; } } } else { // 구방식 Uri uri = Uri.parse(url); intent = new Intent(Intent.ACTION_VIEW, uri); startactivity(intent); } return true; } catch (ActivityNotFoundException e) { Log.e("error ===>", e.getmessage()); e.printstacktrace(); return false; } } else { view.loadurl(url); } return true; @Override public void onreceivederror(webview view, int errorcode, String description, String failingurl) { // 페이지 29 / 38
} } 10. 아이폰적용가이드 - 어플리케이션을만들경우아이폰 UIWebView를구현하고어플리케이션 URL Schemes가필요합니다. 10.1. URL types 추가, appprefix 사용 info.plist에 URL types가있어야합니다. ISP인증일경우, bankpay인증일경우 appprefix에스키마가세팅되어야합니다. 이는외부어플리케이션의프로세스가끝나고원래의가맹점어플리케이션으로돌아가기위함입니다. ISP와 bankpay 로인증을받을경우가맹점어플리케이션으로돌아가지않는다면결제가완료되지않습니다. 나머지외부어플리케이션은각해당어플리케이션의설명에따라진행하시면됩니다. 테스트샘플페이지에서아이폰으로접속할경우에이전트에의하여아래그림처럼 App Prefix 라 는입력필드가나타나게됩니다. 이곳에해당어플리케이션의 URL Schemes 를써주시면됩니다. 페이지 30 / 38
테스트페이지를수정하실때는 appprefix 항목의가맹정 URL Schemes 를고정으로입력해주세요 예 ) appprefix= myapp:// 페이지 31 / 38
11. 상점관리자시스템 (MMS) - 상점이결제내역조회, 결제결과통보등내부관리자기능을사용하기위한시스템 11.1. 접속 URL - https://mms.tpay.co.kr/home/login.jsp - 테스트계정 회원사 ID: tpaytest0m 사용자 ID: tpaytest0 패스워드 : tpaytest0! 페이지 32 / 38
12. 결제결과코드및메시지 12.1. 신용카드 번호 결과코드 메시지 1 3001 카드결제성공 2 3002 VAN실패응답 3 3011 카드번호오류 4 3012 카드가맹점정보미확인 5 3013 카드가맹점개시안됨 6 3014 카드가맹점정보오류 7 3021 유효기간오류 8 3022 할부개월오류 9 3023 할부개월한도초과 10 3031 무이자할부카드아님 11 3032 무이자할부불가개월수 12 3033 무이자할부가맹점아님 13 3034 무이자할부구분미설정 14 3041 금액오류 (1000원미만신용카드승인불가 ) 15 3051 해외카드미등록가맹점 16 3052 통화코드오류 17 3053 확인불가해외카드 18 3054 환률전환오류 19 3055 인증시달러승인불가 20 3056 국내카드달러승인불가 21 3057 인증불가카드 22 3061 국민카드인터넷안전결제적용가맹점 23 3062 신용카드승인번호오류 24 3071 매입요청가맹점아님 25 3072 매입요청 TID 정보불일치 26 3073 기매입거래 27 3081 카드잔액값오류 28 3091 제휴카드사용불가가맹점 29 3095 카드사실패응답 페이지 33 / 38
12.2. 계좌이체 번호 결과코드 메시지 1 4000 계좌이체결제성공 2 4001 금결원오류응답 3 4002 회원사서비스불가은행 4 4003 출금일자불일치 5 4004 출금요청금액불일치 6 4005 거래번호 (TID) 불일치 7 4006 회신정보불일치 8 4007 계좌이체승인번호오류 9 4008 은행시스템서비스중단 12.3. 가상계좌 번호 결과코드 메시지 1 4100 가상계좌발급성공 2 4110 가상계좌입금성공 3 4101 가상계좌최대거래금액초과 4 4102 가상계좌입금예정일오류 5 4103 가상계좌입금예정시간오류 6 4104 가상계좌정보오류 페이지 34 / 38
12.4. 휴대폰결제 번호 결과코드 메시지 1 A000 휴대폰결제처리성공 2 A001 휴대폰결제처리실패 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 서비스구분코드설정오류 12.5. 결제취소 번호 결과코드 메시지 1 2001 취소성공 2 2002 취소진행중 3 2003 취소실패 4 2010 취소요청금액 0원이하 5 2011 취소금액불일치 6 2012 취소해당거래없음 7 2013 취소완료거래 8 2014 취소불가능거래 9 2015 기취소요청 10 2016 취소기한초과 11 2017 취소불가회원사 12 2018 신용카드매입후취소불가능가맹점 13 2019 타회원사거래취소불가 14 2021 매입전취소 15 2022 매입후취소 16 2023 취소한도초과 페이지 35 / 38
17 2024 취소패스워드불일치 18 2025 취소패스워드미입력 19 2026 입금액보다취소금액이큽니다 20 2027 에스크로거래는구매또는구매거절시취소가능 21 2028 부분취소불가능가맹점 22 2029 부분취소불가능결제수단 23 2030 해당결제수단부분취소불가능가맹점 24 2031 전체금액취소불가 25 2032 취소금액이취소가능금액보다큼 26 2033 부분취소불가능금액. 전체취소이용바람 27 2211 환불성공 28 2212 환불진행중 29 2213 환불기한초과 30 2214 환불불가회원사 31 2215 환불해당거래없음 32 2216 환불불가능거래 33 2217 환불요청금액 0원이하 34 2218 환불금액불일치 35 2219 환불완료거래 36 2220 환불불가가상계좌 페이지 36 / 38
13. FQA TOP 10 Q: 상점아이디 tpaytest0m 로샘플에있는걸로결제를진행하였는대오후 11 시가지나면자동으로 취소되나요? 아니면거래번호로취소해야하나요? A: 오후 11 시 30 분경자동으로취소됩니다. Q: 한글이깨져서나옵니다. A: 편집한웹문서가어떠한코드 (ANSI,Unicode 등 ) 로저장되어있는지확인하세요파일이실제로저장되인코딩방식과파일안에기술된인코딩방식이일치하지않으면문제가발생할수있습니다. 예를들어 Uincode(UTF-8) 로문서를저장하고, 문서안에는 euc-kr이라고표시해놓는다면익스플로러는웹문서의한글을보여주기위해 Unicode를선택합니다. 문서에한글데이터를입력하고 sumbit을하면웹브라우저는그데이터가 Unicode로된 HTML 문서에서입력되었으니유니코드로인코딩해야된다고자의적으로판단합니다. 그래서데이터를유니코드의일종인 UTF- 8로인코딩해서보냅니다. 그러면받는쪽에서도 utf-8로받아야하는것이죠또 DB 데이터인코딩타입을확인하시고 utf-8로변경해서보내주세요또간혹 ie8일경우메타테그설정에따라 doctype이 ie8이아닌쿼크모드로설정되어있는지확인후 ie8로변경하는메타테그를설정하시기바랍니다. Q: ios에서사파리로결제할경우 ISP인증후홈화면으로돌아옵니다. A: ios는화면을스택으로쌓지않기때문에그렇게보여집니다. 이는 ISP어플리케이션에서돌아갈곳을처리하지않는경우입니다. 홈키를두번누른후원래결제중이던사파리를찾아가면결제를계속진행할수없습니다. Q: ios 에서는요청페이지에 AppPrefix 라는파라미터가있는데요무었인가요? A: ios 의경우일부인증앱 (ISP, 뱅크페이 ) 은인증이끝난후돌아갈곳을호출할수있습니다. AppPrefix 는돌아갈앱의스키마를세팅하는파라미터입니다. Q: 상점이데이터를추가해서사용할수있는방법이있나요? A: mallreserved 파라미터 (255byte) 를사용하면됩니다. 세팅한값을그대로결과로가져옵니다. Q: 크로스플랫폼을이용중입니다. 연동에문제없나요? A: 코르도바, 폰갭등의크로스플랫폼의경우제이티넷까지의연동은문제가없습니다만, 카드사와의인증연동에문제가생길수있습니다. 이는크로스플랫폼의코드수정으로해결해야합니다. 해결할수없는경우증상을재현할수있는사료를주시면최대한도와드리겠습니다. Q: tpay 서비스가지원하는 OS 및웹브라우저의범위를알고싶습니다. A: 안드로이드 4.0 이상, 아이폰 ios7.0 이상 ( 권장 ), Safari, Chrome 페이지 37 / 38
Q: payreqresult 와 retryurl 페이지는받는파라메터와값들이똑같나요? A: 네같습니다. Q: 가상계좌의경우내가발행한계좌에입금됐다는것은어떻게아나요? A: 상점관리자의 ( 회원사정보 -> 일반정보 ) 결제통보화면에설정된 URL 로입금내용을통보해드 립니다. Q: ResultConfirm를실행하였을때수신확인이성공하였는지실패하였는지는따로알수가없나요? A: 결제결과는결제결과코드 (resultcd) 값으로판단하여처리하시면됩니다. ResultConfirm은상점에서결제결과를정상적으로받았는지확인하는용도로 PG시스템으로응답을주는방식입니다. 응답에대한수신은성공일경우 000, 실패일경우 999로확인이가능합니다. Q: 소켓방식리턴 URL 이정확히무엇을의미하나요? A: 상점이소켓으로받을수밖에없는경우에소켓으로보내는방식입니다. Q: 휴대폰결제테스트가능한가요? A: 휴대폰결제는 MID tpaytest0m로는테스트가불가능하며심사받기를원하실경우정산팀을통하여테스트용 cpid로설정후심사를진행하실수있습니다. 심사완료후실제해당상점 cpid 가발급되면상점 MID로테스트를하시면됩니다.( 자동취소되지않습니다.) 페이지 38 / 38