010가상계좌 결제창 호출
헥토파이낸셜에서 제공하는 010 가상계좌 결제창(UI)을 호출하여 가상계좌를 발급받는 방식입니다. 결제창 내에서 휴대폰 점유인증, 인증확인, 채번이 자동으로 처리됩니다.
테스트용 키 정보
API 정보
POST/vbank010/main.do
Content-Type
application/x-www-form-urlencoded테스트
https://tbnpg.settlebank.co.kr/vbank010/main.do운영
https://npg.settlebank.co.kr/vbank010/main.do주의 사항
URL 처리 필수
nextUrl은 결제 결과 화면 표시용이고, notiUrl은 가맹점 서버 DB 처리용입니다. 결제창 강제 종료 시 nextUrl은 호출되지 않으므로 DB 처리는 반드시 notiUrl에서 해야 합니다.
결제창에서는 점유인증 생략 불가
결제창(UI) 방식은 항상 화면 내에서 휴대폰 점유인증(SMS 발송 → 인증번호 입력)을 진행합니다. cphoneNo와 mchtCustId를 전달하더라도 점유인증 단계를 건너뛸 수 없습니다. 점유인증 생략은 API 방식에서만 가능합니다.
- 운영환경에서 테스트 진행 시 발생하는 비용은 가맹점 부담입니다.
- nextUrl, notiUrl, cancUrl은 HTTPS 사용을 권장합니다.
- 요청 파라미터에
:,&,?,',",<,>등의 특수문자 사용을 삼가 주세요. - 요청 파라미터에
href,alert,javascript,console.log등의 예약어가 포함될 경우 자동으로 제거됩니다.
결제창 유형
| 유형 | method 값 | URL | 설명 |
|---|---|---|---|
| 단독창 | vbank010 | /vbank010/main.do | 010 가상계좌 전용 결제창 |
| 통합결제창 | vbank | /vbank/main.do | 일반 가상계좌와 통합된 결제창 |
요청 파라미터
타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자예: AN(10) = 영문+숫자, 최대 10byte
└mchtIdAN(10)영문+숫자, 최대 10byte*헥토파이낸셜에서 부여하는 고유 상점아이디
헥토파이낸셜에서 부여하는 고유 상점아이디
└methodAN(12)영문+숫자, 최대 12byte*결제수단 코드
결제수단 코드
vbank: 통합결제창 vbank010: 단독창└trdDtN(8)숫자, 최대 8byte*요청일자 (yyyyMMdd)
요청일자 (yyyyMMdd)
└trdTmN(6)숫자, 최대 6byte*요청시간 (HHmmss)
요청시간 (HHmmss)
└mchtTrdNoAN(100)영문+숫자, 최대 100byte*상점에서 생성하는 고유 주문번호 (한글 제외)
상점에서 생성하는 고유 주문번호 (한글 제외)
└mchtNameAHN(100)영문+한글+숫자, 최대 100byte*상점 한글명
상점 한글명
└mchtENameAN(100)영문+숫자, 최대 100byte*상점 영문명
상점 영문명
└pmtPrdtNmAHN(50)영문+한글+숫자, 최대 50byte*결제 상품명
결제 상품명
└trdAmtN(12)숫자, 최대 12byte*
AES-256AES-256/ECB/PKCS5Padding + Base64거래금액거래금액
└mchtCustNmAHN(30)영문+한글+숫자, 최대 30byte
AES-256AES-256/ECB/PKCS5Padding + Base64고객명고객명
└custAcntSumryAHN(50)영문+한글+숫자, 최대 50byte통장인자내용 (고객의 통장에 찍힐 인자명)
통장인자내용 (고객의 통장에 찍힐 인자명)
*공백일 경우 상점한글명을 통장인자명으로 사용
└expireDtN(14)숫자, 최대 14byte*입금만료일시 (yyyyMMddHHmmss)
입금만료일시 (yyyyMMddHHmmss)
*공백 시 거래일 기준 +10일. B2C: 최대 27일, B2B: 최대 3년
└notiUrlAN(250)영문+숫자, 최대 250byte*결과처리 URL (Server To Server 연동 URL)
결과처리 URL (Server To Server 연동 URL)
*결제 완료 시 가맹점 서버로 결과 전송. DB 처리는 여기서!
└nextUrlAN(250)영문+숫자, 최대 250byte*결과화면 URL (결제 후 이동 페이지)
결과화면 URL (결제 후 이동 페이지)
*결제창 닫기 버튼 클릭 시 호출. 강제 종료 시 호출 안됨
└cancUrlAN(250)영문+숫자, 최대 250byte*결제취소 URL (취소/실패 시 이동 페이지)
결제취소 URL (취소/실패 시 이동 페이지)
└mchtParamAHN(4000)영문+한글+숫자, 최대 4000byte상점 예약 필드 (응답 시 ByPass)
상점 예약 필드 (응답 시 ByPass)
└emailAN(60)영문+숫자, 최대 60byte
AES-256AES-256/ECB/PKCS5Padding + Base64고객 이메일 주소고객 이메일 주소
└prdtTermN(14)숫자, 최대 14byte상품제공기간 (yyyyMMddHHmmss). 값이 없으면 일반결제로 표기
상품제공기간 (yyyyMMddHHmmss). 값이 없으면 일반결제로 표기
└cphoneNoN(11)숫자, 최대 11byte
AES-256AES-256/ECB/PKCS5Padding + Base64휴대폰번호 (하이픈 제거). 전달 시 결제창 내 휴대폰번호 입력란에 자동으로 채워집니다.휴대폰번호 (하이픈 제거). 전달 시 결제창 내 휴대폰번호 입력란에 자동으로 채워집니다.
*결제창에서는 점유인증이 항상 진행됩니다. 이 값을 전달해도 인증 단계를 생략할 수 없습니다.
└mchtCustIdAN(50)영문+숫자, 최대 50byte
AES-256AES-256/ECB/PKCS5Padding + Base64상점 고객 아이디상점 고객 아이디
└taxTypeCdA(1)영문, 최대 1byte면세 여부
면세 여부
N: 과세 Y: 면세 G: 복합과세*공백일 경우 상점 설정에 따름
└taxAmtN(12)숫자, 최대 12byte
AES-256AES-256/ECB/PKCS5Padding + Base64과세금액 (복합과세일 경우 필수)과세금액 (복합과세일 경우 필수)
└vatAmtN(12)숫자, 최대 12byte
AES-256AES-256/ECB/PKCS5Padding + Base64부가세금액 (복합과세일 경우 필수)부가세금액 (복합과세일 경우 필수)
└taxFreeAmtN(12)숫자, 최대 12byte
AES-256AES-256/ECB/PKCS5Padding + Base64비과세금액 (복합과세일 경우 필수)비과세금액 (복합과세일 경우 필수)
└custIpAN(15)영문+숫자, 최대 15byte고객 IP 주소 (상점 서버 IP가 아닌 고객 기기 IP)
고객 IP 주소 (상점 서버 IP가 아닌 고객 기기 IP)
└pktHashAN(200)영문+숫자, 최대 200byte*
SHA-256SHA256 방식으로 생성한 해쉬값(실시간 생성)SHA256 방식으로 생성한 해쉬값
*상점아이디 + 결제수단 + 상점주문번호 + 요청일자 + 요청시간 + 거래금액(평문) + 해쉬키
응답 파라미터
가상계좌 발급 완료 시 nextUrl로, 고객이 결제창 내 X 버튼을 클릭하면 cancUrl로 리다이렉트되며 아래 파라미터가 전달됩니다. 실제 입금 결과는 고객 입금 후 notiUrl(노티 전문)로 전달됩니다.
타입 표기법
N숫자A영문H한글AN영문+숫자AHN영문+한글+숫자예: AN(10) = 영문+숫자, 최대 10byte
└mchtIdAN(10)영문+숫자, 최대 10byte*상점아이디
nxva_sb_il상점아이디
└outStatCdAN(4)영문+숫자, 최대 4byte*거래상태코드
0051거래상태코드
0051: 채번 성공 0031: 실패└outRsltCdAN(4)영문+숫자, 최대 4byte*거절코드 (0031일 경우 상세 코드)
0000거절코드 (0031일 경우 상세 코드)
└outRsltMsgAHN(200)영문+한글+숫자, 최대 200byte*결과 메시지 (URL Encoding UTF-8)
정상적으로 처리되었습니다.결과 메시지 (URL Encoding UTF-8)
└methodAN(12)영문+숫자, 최대 12byte*결제수단
vbank010결제수단
vbank: 통합결제창 vbank010: 단독창└mchtTrdNoAN(100)영문+숫자, 최대 100byte*상점주문번호
ORDER20211231100000상점주문번호
└mchtCustIdAN(50)영문+숫자, 최대 50byte
AES-256AES-256/ECB/PKCS5Padding상점고객아이디HongGilDong상점고객아이디
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└trdNoAN(40)영문+숫자, 최대 40byte*헥토파이낸셜 거래번호
STBK_0123456789헥토파이낸셜 거래번호
└trdAmtN(12)숫자, 최대 12byte*
AES-256AES-256/ECB/PKCS5Padding거래금액1000거래금액
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└mchtParamAHN(4000)영문+한글+숫자, 최대 4000byte상점예약필드 (요청값 ByPass)
custom_data상점예약필드 (요청값 ByPass)
└authDtN(14)숫자, 최대 14byte승인일시 (yyyyMMddHHmmss)
20211231120000승인일시 (yyyyMMddHHmmss)
└reqIssueDtN(14)숫자, 최대 14byte채번요청일시 (yyyyMMddHHmmss)
20211231120000채번요청일시 (yyyyMMddHHmmss)
└vtlAcntNoN(30)숫자, 최대 30byte
AES-256AES-256/ECB/PKCS5Padding가상계좌번호01012345678가상계좌번호
*실제 응답값은 AES-256 암호화된 값입니다. 복호화 후 사용하세요.
└expireDtN(14)숫자, 최대 14byte입금만료일시 (yyyyMMddHHmmss)
20211231235959입금만료일시 (yyyyMMddHHmmss)
└fnNmAH(50)영문+한글, 최대 50byte은행명
K뱅크은행명
└fnCdN(4)숫자, 최대 4byte은행코드
089은행코드
요청 예시 (HTML Form)
<form id="payForm" method="POST" action="https://tbnpg.settlebank.co.kr/vbank010/main.do">
<input type="hidden" name="mchtId" value="nxva_sb_il">
<input type="hidden" name="method" value="vbank010">
<input type="hidden" name="trdDt" value="20211231">
<input type="hidden" name="trdTm" value="120000">
<input type="hidden" name="mchtTrdNo" value="ORDER20211231100000">
<input type="hidden" name="mchtName" value="헥토파이낸셜">
<input type="hidden" name="mchtEName" value="Hecto Financial">
<input type="hidden" name="pmtPrdtNm" value="테스트상품">
<input type="hidden" name="trdAmt" value="AES암호화된금액">
<input type="hidden" name="expireDt" value="20211231235959">
<input type="hidden" name="notiUrl" value="https://example.com/noti">
<input type="hidden" name="nextUrl" value="https://example.com/result">
<input type="hidden" name="cancUrl" value="https://example.com/cancel">
<input type="hidden" name="pktHash" value="해시값">
<button type="submit">결제하기</button>
</form>
결제 흐름
[구매자, 가맹점, 결제창, 헥토파이낸셜]
구매자 -> 가맹점 : 결제 요청
가맹점 -> 결제창 : 결제창 호출 (Form POST)
결제창 -> 구매자 : 휴대폰 번호 입력 요청
구매자 -> 결제창 : 휴대폰 번호 입력
결제창 -> 헥토파이낸셜 : 점유인증 요청 (S1)
헥토파이낸셜 -> 구매자 : SMS 인증번호 발송
구매자 -> 결제창 : 인증번호 입력
결제창 -> 헥토파이낸셜 : 인증확인 (S2)
결제창 -> 헥토파이낸셜 : 채번 요청 (A4)
헥토파이낸셜 -> 결제창 : 010 가상계좌 발급
결제창 -> 가맹점 : nextUrl 호출 (응답 전달)
헥토파이낸셜 -> 가맹점 : notiUrl 호출 (채번 노티)
