본문으로 건너뛰기

결제창 호출하기

PC·Mobile 환경에서 나이스페이 결제창을 호출하고 인증 응답을 수신하는 방법을 설명합니다.


1. 결제창 호출 Flow

PC 결제창 호출

  1. goPay() 함수로 결제창 레이어 팝업을 호출합니다.
  2. 결제창 dim 처리는 goPay() 호출 시 전달한 form element 기준으로 처리됩니다.
  3. 사용자 인증 완료 시 결제창이 nicepaySubmit()을 콜백합니다.
  4. 콜백과 동시에 인증 결과 form이 form action target으로 submit 됩니다.
  5. 가맹점 server-side에서 인증 결과를 수신한 뒤 승인 API 연동을 진행합니다.

MOBILE 결제창 호출

  1. goPay() 호출 후 결제 파라미터를 가공해 결제창으로 submit 합니다.
  2. 사용자가 결제창에서 인증사를 선택하고 인증을 진행합니다.
  3. 중요: 인증 완료 후 인증 응답은 최초 결제창 호출 시 ReturnURL에 설정한 URL로 리턴됩니다.
  4. 가맹점 server-side에서 인증 결과를 수신한 뒤 승인 API 연동을 진행합니다.
  5. WebView로 모바일 결제를 구현하는 경우 WapUrl, IspCancelUrl을 반드시 추가합니다. (APP WebView 연동 문서 참고)

2. 설명 (Description)

  • PC와 Mobile 결제창 호출 방식의 차이를 이해한 뒤 인증 응답 수신 흐름을 구현합니다.
  • 결제창 JS SDK: https://pg-web.nicepay.co.kr/v3/common/js/nicepay-pgweb.js (필수 import)
  • goPay(document.yourFormObject) — form object 전달, 인코딩 EUC-KR
  • 인증 응답 AuthResultCode0000인 경우 승인 API 연동을 진행합니다. 인증 성공 ≠ 승인 성공입니다.
  • 민감 정보(MerchantKey, SignData 생성 등)는 반드시 server-side에서 처리하고 외부에 노출하지 않습니다.
  • 샘플 소스는 프로세스 설명용이며, 운영 환경에 그대로 사용하여 발생하는 문제에 대해서는 나이스정보통신의 책임이 없는 점 주의하시기 바랍니다.

3. 결제창 호출 (Request)

3.1. 호출 방식

항목
JavaScripthttps://pg-web.nicepay.co.kr/v3/common/js/nicepay-pgweb.js
FunctiongoPay(document.yourFormObject)
TypeHTML Form object
Encodingeuc-kr

3.2. 요청 파라미터

필드명크기(byte)필수설명
GoodsName40O결제상품명 (euc-kr). 쌍따옴표 ", 대괄호 [] 등 특수기호 사용 시 별도 문의
Amt12O금액 (숫자만)
MID10O가맹점 아이디
EdiDate14O요청 시간 (YYYYMMDDHHMISS)
Moid64O상품주문번호. 숫자·영문 조합의 고유값 권장
SignData500O위변조 검증 데이터, 생성규칙: hex(sha256(EdiDate + MID + Amt + MerchantKey))
PayMethod10O결제수단 (CARD: 신용카드, BANK: 계좌이체, VBANK: 가상계좌, CELLPHONE: 휴대폰 소액결제)
ReturnURL500Mobile 필수인증 응답 URL (절대 경로)
BuyerName30구매자명 (euc-kr)
BuyerTel20구매자 연락처 (숫자만)
ReqReserved500가맹점 여분 필드
BuyerEmail60구매자 이메일
CharSet12인증 응답 인코딩 (euc-kr 기본 / utf-8)
VbankExpDate12가상계좌 결제 시 계좌의 입금만료일 설정, 8자리 (YYYYMMDD) 또는 12자리 (YYYYMMDDHHMi) 설정 가능
GoodsCl1휴대폰 소액결제 시 필수, 상품 구분 (0: 컨텐츠, 1: 실물)
ConnWithIframe1iframe 연동 시 Y (iframe 기반 호출 시만)
WapUrl500APP WebView: 가맹점 App Scheme, 제휴사 앱 인증 후 가맹점 앱 복귀 시 사용
IspCancelUrl500APP WebView: ISP 취소 시 앱 복귀 스킴 url

기능별 옵션 파라미터

아래 내용은 가맹점 MID 설정에 따라 추가로 사용 가능한 파라미터들을 항목별로 정리하였습니다. 영업담당자와 사전 협의 후 사용하시기 바랍니다. (사전협의 없이 사용하는 경우 결제 혹은 취소 시 실패가 발생할 수 있습니다.)

  • 과세 및 면세 지정 옵션 (사용 시 4개 필드의 합이 Amt 값과 일치해야 합니다.)
필드명크기(byte)설명
SupplyAmt12공급가액
GoodsVat12부가세
ServiceAmt12봉사료
TaxFreeAmt12면세 금액
  • 가맹점 분담 무이자 설정 옵션
필드명크기(byte)설명
ShopInterest1가맹점 분담 무이자 사용 여부 (0: 미사용, 1: 사용)
QuotaInterest-ShopInterest=1 설정 시 사용 가능, 기준정보에 등록된 무이자 할부 정보 중 사용할 할부 옵션 설정
QuotaInterest 옵션 설정 방법
  • 공백 설정 시 오류 발생
  • | 를 구분자로 하여 카드 코드 나열
  • : 를 구분자로 하여 카드 코드와 할부개월 구분
  • , 를 구분자로 하여 할부개월 나열
  • 형식: 카드코드:할부개월,할부개월|카드코드:할부개월,할부개월|...
  • 예시: 01:06,07|02:06:07
    • 가맹점 분담 무이자 옵션 사용 시 비씨카드 6,7 개월과 국민카드 6,7개월 설정

4. 결제창 응답 (Response)

4.1. 응답 파라미터

인증 응답 파라미터는 PC/Mobile 동일합니다.

PG사의 기능 추가 및 서비스 개선에 따라 응답 필드는 사전 고지 없이 추가될 수 있습니다.
가맹점에서는 아래 표에 기재되지 않은 응답 필드가 추가될 수 있음을 고려하여 연동해야 하며, 추가 필드로 인해 파싱 오류 또는 결과 처리 오류가 발생하지 않도록 구현해야 합니다.

필드명크기(byte)설명
AuthResultCode4인증 결과 코드 (0000: 성공, 그 외 실패)
AuthResultMsg2000인증 결과 메시지
AuthToken40인증 토큰
PayMethod10결제수단 (CARD / BANK / VBANK / CELLPHONE)
MID10가맹점 아이디
Moid64상품 주문번호
Signature500hex(sha256(AuthToken + MID + Amt + MerchantKey)) — 위변조 검증 권장
Amt12금액
ReqReserved500가맹점 여분 필드
TxTid30거래 ID
NextAppURL255인증 성공 시 승인 요청 URL (POST)
NetCancelURL255인증 성공 시 망취소 요청 URL

NextAppURL 예시 (둘 중 하나 응답)

  • https://dc1-api.nicepay.co.kr/webapi/pay_process.jsp
  • https://dc2-api.nicepay.co.kr/webapi/pay_process.jsp

NetCancelURL 예시 (둘 중 하나 응답)

  • https://dc1-api.nicepay.co.kr/webapi/cancel_process.jsp
  • https://dc2-api.nicepay.co.kr/webapi/cancel_process.jsp

4.2 PC 인증 응답 처리 관련 참고 사항

  • goPay() 호출 시 전달한 form에 인증 응답 필드가 append 됩니다.
  • nicepaySubmit() 콜백 후 form이 가맹점 server-side로 submit 됩니다.
  • AJAX 방식으로 후속 승인 API를 연동하는 경우 nicepaySubmit() 시점에 form에서 인증 응답 값을 추출해 가맹점 server-side로 전달해야 합니다 (Cross Domain 미지원).

5. 예시

아래 예시는 테스트 시 이해를 돕기 위해 임의로 만든 데이터로 요청 및 응답 규격을 확인하기 위한 용도입니다. 가맹점 Key, ReturnURL 등은 가맹점 환경에 맞게 사용하셔야 합니다.

5.1. 요청 예시

<head>
<script src="https://pg-web.nicepay.co.kr/v3/common/js/nicepay-pgweb.js"></script>
<script type="text/javascript">
//[PC 결제창 전용]결제 최종 요청시 실행됩니다. <<'nicepaySubmit()' 이름 수정 불가능>>
function nicepayStart(){
goPay(document.payForm);
}


//[PC 결제창 전용]결제 최종 요청시 실행됩니다. <<'nicepaySubmit()' 이름 수정 불가능>>
function nicepaySubmit(){
document.payForm.submit();
}

//[PC 결제창 전용]결제창 종료 함수 <<'nicepayClose()' 이름 수정 불가능>>
function nicepayClose(){
alert("결제가 취소 되었습니다");
}

</script>
</head>
<body>
<form name="payForm" method="post">
<input type="hidden" name="GoodsName" value="나이스페이" />
<input type="hidden" name="Amt" value="1004" />
<input type="hidden" name="MID" value="nictest00m" />
<input type="hidden" name="EdiDate" value="20260813090616" />
<input type="hidden" name="Moid" value="testRequest1" />
<input type="hidden" name="SignData" value="f96273567e5fe257d10bf5d8b637aa96da68f1229314756da2324bab022bc3e8" />
<input type="hidden" name="PayMethod" value="CARD" />
<input type="hidden" name="ReturnURL" value="https://merchant.example.com/pay/return" />
</form>
<a href="#" onClick="nicepayStart();">결제하기</a>
</body>

SignData = hex(sha256(EdiDate + MID + Amt + MerchantKey))

5.2. 응답 예시

POST /pay/return HTTP/1.1
Host: merchant.example.com
Content-Type: application/x-www-form-urlencoded

AuthResultCode=0000&AuthResultMsg=인증 성공&AuthToken=NICETOKN5AC64335B5407F799C440DEECE7A3ED5&PayMethod=CARD&MID=nictest00m&Moid=testRequest1&Signature=f49a70d606ef46d95d4f69e796b06ded9ea94d5a28e08383cbea12abe9199dad&Amt=1004&TxTid=nictest00m01012608131607041648&NextAppURL=https://dc1-api.nicepay.co.kr/webapi/pay_process.jsp&NetCancelURL=https://dc1-api.nicepay.co.kr/webapi/cancel_process.jsp

6. 연동 시 주의사항

  • 결제창 호출 시 인코딩은 euc-kr 으로만 설정합니다.
  • 인증 응답 수신 후 금액(Amt) 위변조 여부를 가맹점에서 검증해야 합니다.
  • 구간별 로그 보관 시 가맹점 서비스 운영 및 장애 대응에 유연하게 처리 가능합니다.
  • 샘플 코드 및 연동 문의는 it@nicevan.co.kr 메일로 전달 부탁드립니다.

7. 관련 문서