이제 본격적으로 개발을 시작해보자.
IntelliJ IDEA 에서 Spring boot 프로젝트를 개설하자
소스코드 보기
HomeController.java
package com.example.nicepayments.controller;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "index";
}
@PostMapping("/serverAuth")
public ResponseEntity<?> serverAuthCallback(@RequestParam Map<String, String> params) {
System.out.println("serverAuthCallback 실행");
return ResponseEntity.ok().build();
}
}
index.jsp ( 반드시 src/main/webapp/WEB-INF/views/ 밑에 위치 시켜야 함. )
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>NICEPAY TEST</title>
<script src="https://pay.nicepay.co.kr/v1/js/"></script>
<script>
function serverAuth() {
AUTHNICE.requestPay({
clientId: '{나이스페이 관리자 Client KEY 값}',
method: 'card',
orderId: 'bingbong-order-1234',
amount: 1004,
goodsName: '빙봉 필통',
vbankHolder: '나이스',
returnUrl: 'http://localhost:8080/serverAuth',
fnError: function (error) {
console.log("결제 오류:", error);
alert("에러발생");
}
});
}
</script>
</head>
<body>
<h2>NICEPAY 테스트</h2>
<button onclick="serverAuth()">결제 요청</button>
</body>
</html>
참고로, 저기서 method 값이 vbank 이면, 가상계좌 목록이 나타난다. 지금은 card 이기 때문에 카드로 결제하는 팝업 창이 뜬다.
application.yml
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
server:
port: 8080
build.gradle.kts
plugins {
java
id("org.springframework.boot") version "4.0.0"
id("io.spring.dependency-management") version "1.1.7"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
description = "nicePayments"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-webmvc")
implementation("org.apache.tomcat.embed:tomcat-embed-jasper")
implementation("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api")
implementation("org.glassfish.web:jakarta.servlet.jsp.jstl")
testImplementation("org.springframework.boot:spring-boot-starter-webmvc-test")
}
tasks.withType<Test> {
useJUnitPlatform()
}
실행 결과

결제 요청 버튼을 눌렀더니, 저렇게 결제 팝업 창이 떴다. 😍
효자 솔루션이구나 나이스 페이먼츠. 고생시키지 않고 바로 떠주다니..
결제 해보자.

토스뱅크로 선택하고 다음 버튼을 클릭해보았다.

위 사진에서 1004원 결제 버튼을 눌렀더니 ...
아 ... 왜 하나카드가 뜨는거야 ... 이거는 나이스페이먼츠 내부 오류 같다.
그래서 그냥 신한카드로 변경하여 다시 진행했다..

이렇게 카드사 인증 서비스까지 무사히 도착한 모습이다.
신한 SOL Pay 로 1004 원 결제를 마쳤다.
서버의 serverAuthCallback 메서드

브레이크 포인트가 잘 동작 했고,

콘솔에도 예쁘게 print 문이 출력 되었고,

parameter 도 예쁘게 전송 되었다.

지금 우리는 저 그림속에서
'returnUrl' 서버단에서 인증 결과를 받는 것까지 구현했다.
그런데, 구현을 다 하고 나서 보니까 나이스페이먼츠 개발자 깃허브에서
Java 로 된 Controller 예제 파일을 공유하고 있었음 .. 😱
여러분은 나같은 실수를 안하길 바라며,
위의 내가 적은 컨트롤러 코드는 정말 참고만 하고
실제 코드는 아래 주소에 있는 코드로 구현해보는 것이 좋겠다.
nicepay-java/gradle/server-auth/src/main/java/com/nicepay/demo/NicepayController.java at master · nicepayments/nicepay-java
java sample for nicepay. Contribute to nicepayments/nicepay-java development by creating an account on GitHub.
github.com
아, 그리고 인증을 성공한거고, 결제 승인을 하지 않았으므로 실 결제는 이루어지지 않는 것 같다.
이상으로 이번 포스트 마치고 다음 포스트로 돌아오겠다.
바이바이

'New Project > 나이스 페이먼츠 결제 서비스 연동' 카테고리의 다른 글
| 나이스 페이먼츠 결제 서비스 연동하기 - 개발환경 구축하기 (0) (0) | 2025.11.30 |
|---|
