JavaScript SDK 연동 API
헥토파이낸셜 JavaScript SDK(SettlePG)를 사용하여 결제창을 연동하는 방법을 설명합니다.
주의 사항
결제창 타임아웃
결제창 진입 후 10분이 경과하면 '거래 시간이 초과했습니다' 오류가 발생합니다. 고객이 결제를 완료하지 못한 경우 결제창을 다시 호출해야 합니다.
SDK 스크립트 로드
<!-- 테스트 환경 -->
<script src="https://tbnpg.settlebank.co.kr/resources/js/v1/SettlePG_v1.2.js"></script>
<!-- 운영 환경 -->
<script src="https://npg.settlebank.co.kr/resources/js/v1/SettlePG_v1.2.js"></script>
SETTLE_PG.pay()
SETTLE_PG.pay(options, callback);
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
options | Object | O | 결제 요청 파라미터 (아래 상세 참고) |
callback | Function | - | iframe 방식에서 결과 수신 콜백 |
스크립트 파라미터 정의
SETTLE_PG.pay()의 options 객체에 전달하는 파라미터입니다. SDK는 env, mchtId, method, ui만 검증하며, 나머지 파라미터는 서버에서 검증됩니다.
결제수단별 추가 파라미터(카드사명, 가상계좌번호 등)는 결제창 연동 문서를 참고하세요.
NOTE
주문 처리 주의
실제 주문 처리(재고 차감, 상태 변경)는 반드시 notiUrl에서 수행해야 합니다. 자세한 내용은 노티 연동 가이드를 참고하세요. 노티(notiUrl) 연동 가이드
필수 파라미터
└envstring*결제 시스템 환경 URL
https://tbnpg.settlebank.co.kr결제 시스템 환경 URL
테스트: https://tbnpg.settlebank.co.kr 운영: https://npg.settlebank.co.kr└mchtIdstring*헥토파이낸셜에서 부여한 상점 ID
nxca_jt_il헥토파이낸셜에서 부여한 상점 ID
└methodstring*결제수단 코드
CA결제수단 코드
CA: 신용카드 VA: 가상계좌 RA: 계좌이체 MP: 휴대폰결제└trdDtstring*거래일자 (YYYYMMDD 형식)
20240101거래일자 (YYYYMMDD 형식)
└trdTmstring*거래시간 (HHMMSS 형식)
153045거래시간 (HHMMSS 형식)
└mchtTrdNostring*상점 주문번호 (고유값, 중복 불가)
ORDER20240101153045상점 주문번호 (고유값, 중복 불가)
└trdAmtstring*거래금액 (원 단위)
10000거래금액 (원 단위)
└notiUrlstring*결제 결과 통보 URL (서버 to 서버)
https://example.com/api/payment/noti결제 결과 통보 URL (서버 to 서버)
└nextUrlstring*결제 완료 후 리다이렉트 URL
https://example.com/payment/success결제 완료 후 리다이렉트 URL
└pktHashstring*위변조 방지 해시값 (SHA-256)
abc123...위변조 방지 해시값 (SHA-256)
└uiobject*UI 설정 객체 (type, width, height)
{ type: "popup", width: 430, height: 660 }UI 설정 객체 (type, width, height)
선택 파라미터
└methodSubstring결제수단 세부 방식. 신용카드 직호출 방식으로 카드사 인증창을 바로 호출할 때 사용
direct결제수단 세부 방식. 신용카드 직호출 방식으로 카드사 인증창을 바로 호출할 때 사용
direct: 신용카드 직호출 (/card/cardDirect.do)*method='CA'와 함께 사용. cardGb(카드사 코드) 파라미터도 함께 전달해야 합니다.
└mchtNamestring상점명 (한글)
헥토파이낸셜상점명 (한글)
└mchtENamestring상점명 (영문)
Hecto Financial상점명 (영문)
└pmtPrdtNmstring결제 상품명
노트북 구매결제 상품명
└mchtCustNmstring고객명
홍길동고객명
└custAcntSumrystring고객 계좌 요약 정보
신한 1234-56-7890고객 계좌 요약 정보
└cancUrlstring결제 취소 시 리다이렉트 URL
https://example.com/payment/cancel결제 취소 시 리다이렉트 URL
└mchtParamstring상점 고유 파라미터 (notiUrl, nextUrl로 전달됨)
name=Hong&age=25상점 고유 파라미터 (notiUrl, nextUrl로 전달됨)
└custIpstring고객 IP 주소
127.0.0.1고객 IP 주소
ui 객체 파라미터
└ui.typestring*결제창 표시 방식
popup결제창 표시 방식
popup: 팝업창 iframe: 레이어 self: 현재창 blank: 새창└ui.widthstring팝업창 너비 (px, popup/iframe 방식에서만 사용)
430팝업창 너비 (px, popup/iframe 방식에서만 사용)
└ui.heightstring팝업창 높이 (px, popup/iframe 방식에서만 사용)
660팝업창 높이 (px, popup/iframe 방식에서만 사용)
UI 타입별 동작
SDK의 ui.type 옵션으로 결제창 표시 방식을 지정합니다.
popup (팝업)
SETTLE_PG.pay({
env: "https://tbnpg.settlebank.co.kr",
ui: { type: "popup", width: 430, height: 660 },
// ... 결제수단별 파라미터
}, null);
- 별도 팝업 창에서 결제창 표시
- 팝업 차단 시 안내 메시지 표시
- 결제 완료 후
nextUrl로 리다이렉트
iframe (레이어) ⚠️
iframe 방식은 지양하세요
iframe 방식은 로컬 네트워크 접근 제한, 브라우저 호환성 문제 등의 이슈가 있어 권장하지 않습니다. popup, self, blank 방식 사용을 권장합니다.
SETTLE_PG.pay({
env: "https://tbnpg.settlebank.co.kr",
ui: { type: "iframe", width: 430, height: 660 },
// ... 결제수단별 파라미터
}, function(response) {
// 결과 수신
if (response.outStatCd === "0021") {
console.log("성공:", response.trdNo);
} else {
console.log("실패:", response.outRsltMsg);
}
});
- 현재 페이지 위에 dimmed 레이어와 함께 결제창 표시
- 콜백 함수로 결제 결과 수신 (iframe만 해당)
NOTE
iframe 콜백은 화면 표시용
콜백 함수는 iframe 방식에서만 호출됩니다. popup, self, blank 방식에서는 콜백이 호출되지 않고 nextUrl로 리다이렉트됩니다.
콜백 응답 파라미터
iframe 방식에서 콜백 함수로 전달되는 response 객체의 주요 파라미터입니다.
| 파라미터 | 타입 | 설명 |
|---|---|---|
outStatCd | AN(4) | 거래상태 코드 (0021: 성공, 0031: 실패, 0041: 대기, 0051: 진행중) |
outRsltCd | AN(4) | 상세 결과 코드 |
outRsltMsg | AHN(200) | 결과 메시지 |
trdNo | AN(40) | 헥토파이낸셜 거래번호 |
mchtTrdNo | AN(100) | 상점 주문번호 |
trdAmt | N(12) | 거래금액 |
method | A(10) | 결제수단 코드 |
self (현재 창)
SETTLE_PG.pay({
env: "https://tbnpg.settlebank.co.kr",
ui: { type: "self" },
// ... 결제수단별 파라미터
}, null);
- 현재 창에서 결제 페이지로 이동
- 결제 완료 후
nextUrl로 리다이렉트 - 뒤로가기 시
cancUrl로 이동
blank (새 창)
SETTLE_PG.pay({
env: "https://tbnpg.settlebank.co.kr",
ui: { type: "blank" },
// ... 결제수단별 파라미터
}, null);
- 새 탭/창에서 결제창 표시
- 팝업과 유사하나 브라우저 기본 새 창 동작 사용
서버 사이드 처리
SDK 호출 전 백엔드에서 거래금액 암호화(AES-256)와 위변조 방지 해시(SHA-256)를 생성해야 합니다.
상세 정보: 연동 준비하기 — 암복호화 및 위변조 방지
에러 처리
SDK는 아래 두 가지 경우에 브라우저 alert을 표시합니다.
팝업 차단
developers.hectofinancial.co.kr의 메시지
[헥토파이낸셜] 팝업 차단 설정이 되어 있습니다. 해제 후 다시 이용해 주세요.
팝업 차단 해제 방법:
- Chrome: 주소창 우측 팝업 차단 아이콘 클릭 → '항상 허용'
- Safari: 환경설정 → 웹사이트 → 팝업 윈도우 → '허용'
- Edge: 설정 → 쿠키 및 사이트 권한 → 팝업 및 리디렉션 → 허용
필수 파라미터 누락
필수 파라미터(mchtId, env, method, ui)가 누락되면 alert을 표시합니다.
NOTE
서버 검증
결제수단별 세부 파라미터(카드번호, 유효기간 등)는 SDK가 아닌 서버에서 검증됩니다. 서버 검증 실패 시 결제창에서 에러 메시지가 표시됩니다.
developers.hectofinancial.co.kr의 메시지
[헥토파이낸셜] 호출 파라미터 오류 (mchtId is null)
결제수단별 파라미터
SDK 연동 방법은 모든 결제수단에서 동일합니다. 각 결제수단별 상세 파라미터는 왼쪽 메뉴의 결제수단별 연동 문서를 참고하세요.
