필자에게 결제 서비스를 구현하는 업무가 주어졌다.
쌩으로 개발하는 게 아니라 나이스 페이먼츠라는 솔루션을 활용하여 개발할 예정임.
이 카테고리에서는 그 일대기를 다루는 포스트가 될거임.
https://github.com/nicepayments/nicepay-manual/blob/main/common/preparations.md
nicepay-manual/common/preparations.md at main · nicepayments/nicepay-manual
나이스페이먼츠 결제연동 매뉴얼. Contribute to nicepayments/nicepay-manual development by creating an account on GitHub.
github.com
이제부터 작성할 포스트는 위 링크에서 지시한대로 작업한 기록물임 .
회원가입
https://start.nicepay.co.kr/merchant/login/main.do
로그인 | 나이스페이 관리자
로그인 비밀번호를 잊어버렸어요.
start.nicepay.co.kr
여기로 가서 회원가입을 해주고 이메일 인증을 해주면 되는데, 이메일이 도착할때까지 30분이 걸리니 인내심을 가지고 기다려주자.
테스트 상점 ( 샌드박스 ) 개설하기
실제로 결제는 발생하지 않지만, 결제 과정을 Test 할 수 있는 샌드박스를 개설하자.
위에 회원가입한 링크에 로그인 해주면 아래와 같은 창이 뜬다.

상점 이름을 적어 상점을 만들어준다.

그리고 발급 버튼을 눌러 개발 KEY 를 발급해보자.
Server 승인 방식 ? Client 승인 방식?
위 사진에서 발급 버튼을 클릭하면 아래와 같은 팝업창이 뜬다.

결제창 승인 방식에는 두가지가 있는데
이 두 방식을 설명하려면 아래 도식을 이해하고 가야겠다.

당신이 빙봉상점에서 어느 물품을 구매하려고 한다.
이 때 당신이 결제하기 버튼을 클릭하면,
클라이언트의 JS 코드가 결제 팝업창을 보여줄 것을 나이스페이에 요청한다.
결제 팝업창에서 당신이 '토스페이' 선택하면 토스 페이 서비스로 연결되어 인증 과정을 수행한다.
나이스페이는 이 인증 결과를 빙봉상점의 클라이언트 or 서버로 전달한다.
그리고, 빙봉상점의 클라이언트 or 서버는 나이스페이의 인증 결과가 자사 결제 정보와 일치하는지 확인하고,
일치한다면, 빙봉상점의 클라이언트 or 서버는 결제를 승인하라는 API 요청을 다시 나이스페이에 보낸다.
그리고 다시 본론으로 돌아와서,

위 팝업 창에서 표시되는 결제창 승인 방식(Server 승인 / Client 승인)은
앞서 설명한 내용에 따라 클라이언트 또는 서버 중 원하는 방식을 선택하면 된다.
내가 클라이언트에서 인증 정보를 확인하고, 결제 승인을 내고 싶으면 Client 승인 방식을,
서버에서 인증 정보를 확인하고, 결제 승인을 내고 싶으면 Server 승인 방식을 선택하면 되겠다.
필자의 경우 결제의 모든 과정 ( 실패, 성공 등 ) 의 과정을 DB 에 기록해야 하기 때문에 Server 방식을 택하겠다.
클라이언트로 해도 물론 DB 에 기록할 순 있겠지만,
필자가 구현하려는 서비스는 백엔드와 프론트엔드가 분리되어있지 않아 서버 방식이 훨씬 용이하다.
Basic 인증 방식 ? Access Token 인증 방식?
이제 팝업창의 두 번째 선택지인 API 인가 방식에 대해 알아보자.
Basic 인증 방식
우리가 나이스 페이먼츠의 API 요청을 할 때 마다 ID + 비밀키를 Base64로 인코딩해서 헤더에 담아 전송하는 방법이다.
다시 말해, "고정된 자격 증명" 을 계속 API 호출하는 데에 사용하는 거임.
Access Token 인증 방식
나이스 페이먼츠에서 제공하는 인증 서버에 우리 (클라이언트) 정보를 보내서 Access Token 을 발급받음.
이후 모든 API 요청은 인증 서버에서 발급받은 토큰으로 인증함. 하지만 이 토큰은 유효기간이 있으니, 토큰을 갱신해줘야 함.
마음같아서는 Basic 인증 방식을 사용하고 싶지만, 느낌적인 느낌으로 (보안상) 위엣 분들이 Access Token 방식을 사용하라고 하실 것 같으니, Access Token 방식으로 필자는 설정했다. 😂
개발 KEY 확인하기

그러면 이런 식으로 개발 KEY 가 발급된 것을 확인할 수 있다.
위 사진은 필자가 캡쳐한게 아니라, 나이스페이 개발 가이드에서 제공하는 사진이므로, 필자와 달리 Basic 인증으로 KEY 가 구성되어 있다. ( 무시해도 된다는 말임. )
그리고 KEY 정보를 보면 클라이언트 키와 시크릿 키 두 개가 있는 것을 확인할 수 있다.
두개에 대해 간단히 설명해보자면,
클라이언트 키: 클라이언트에서 결제 창을 띄울 때 쓰는 공개 키
시크릿 키: 서버에서 결제를 승인하고/취소하는 API 를 호출할 때 쓰는 비공개 키이다.
URI 목록
이제 나이스 페이먼츠에서 제공하는 URI 목록에 대해 짧게 정리해 보겠다.
응용방법이나 예제를 설명하는게 아니라, 무슨 API 를 제공하는지만 훑어보겠다.
정확한 예제나 Endpoint 는 아래 주소를 통해 확인할 수 있음.
https://github.com/nicepayments/nicepay-manual/blob/main/common/api.md
nicepay-manual/common/api.md at main · nicepayments/nicepay-manual
나이스페이먼츠 결제연동 매뉴얼. Contribute to nicepayments/nicepay-manual development by creating an account on GitHub.
github.com
| AccessToken 발급 | API 호출할 때 사용할 액세스 토큰 생성 |
| 결제창 승인 | 결제 창에서 인증이 완료된 거래를 최종 승인 ( 필자의 경우 서버단에서 사용할 API 이다. ) |
| 취소 요청 | 결제창에서 인증을 완료했으나, 서버에서 결제를 승인하지 않도록 판단했을 때 요청할 취소 요청 |
| 거래 조회 (TID) | TID 로 결제 내역을 상세하게 조회할 수 있음. |
| 거래 조회 (ORDER ID) | 빙봉상점의 주문번호로 결제 내역을 상세하게 조회할 수 있음. |
| 빌키 발급 | 구매자가 카드 정보를 인증한 후 결제에 사용 할 빌링 키를 생성할 때 사용하는 API |
| 빌키 승인 | 저장된 빌링키로 결제를 요청함. |
| 빌키 삭제 | 빌링키 삭제 |
| 약관 조회 | 결제 약관의 목록을 조회하는 API |
| 카드 이벤트 조회 | 카드사의 이벤트를 조회하는 API |
| 카드 무이자 정보 조회 | 카드사의 무이자 혜택을 조회하는 API |
| 현금 영수증 발급 | 현금영수증을 새로 발급하는 API |
| 현금 영수증 취소 | 해당 TID 의 현금 영수증을 취소하는 API |
| 현금 영수증 거래 조회 | 현금영수증을 조회하는 API |
마무리
지금까지는 개발 환경 준비하고, 공부하는 시간이었다면
다음 포스트부터는 본격적으로 개발해볼 예정이다.
읽어주셔서 감사 🌟
'New Project > 나이스 페이먼츠 결제 서비스 연동' 카테고리의 다른 글
| 나이스 페이먼츠 결제 서비스 연동하기 - 팝업창 불러오고 카드사 인증하기 (1) (0) | 2025.11.30 |
|---|
