diff --git a/.forge/BAIS-MAVEN-1783816946-attempt-4.md b/.forge/BAIS-MAVEN-1783816946-attempt-4.md
new file mode 100644
index 0000000..f6560a7
--- /dev/null
+++ b/.forge/BAIS-MAVEN-1783816946-attempt-4.md
@@ -0,0 +1,3 @@
+# BAIS-MAVEN-1783816946-attempt-4
+
+Forge 이슈 작업 브랜치 `forge/BAIS-MAVEN-1783816946-attempt-4`.
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..26ee7f2
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+ com.klaro.bais
+ bais-platform
+ 1.0-SNAPSHOT
+ pom
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.14
+
+
+
+ services/payments
+
+
\ No newline at end of file
diff --git a/services/payments/pom.xml b/services/payments/pom.xml
new file mode 100644
index 0000000..9adb645
--- /dev/null
+++ b/services/payments/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ com.klaro.bais
+ bais-platform
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+ payments
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
+
+
+
\ No newline at end of file
diff --git a/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java b/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java
new file mode 100644
index 0000000..a349b69
--- /dev/null
+++ b/services/payments/src/main/java/com/klaro/bais/payments/PaymentReferenceService.java
@@ -0,0 +1,9 @@
+package com.klaro.bais.payments;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class PaymentReferenceService {
+ public String normalize(String input) {
+ return StringUtils.trimToEmpty(input);
+ }
+}
\ No newline at end of file
diff --git a/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java b/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java
new file mode 100644
index 0000000..77624c9
--- /dev/null
+++ b/services/payments/src/test/java/com/klaro/bais/payments/PaymentReferenceServiceTest.java
@@ -0,0 +1,28 @@
+package com.klaro.bais.payments;
+
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+class PaymentReferenceServiceTest {
+ private final PaymentReferenceService service = new PaymentReferenceService();
+
+ @Test
+ void testNormalize_NullInput() {
+ assertEquals("", service.normalize(null));
+ }
+
+ @Test
+ void testNormalize_EmptyInput() {
+ assertEquals("", service.normalize(""));
+ }
+
+ @Test
+ void testNormalize_WhitespaceInput() {
+ assertEquals("", service.normalize(" "));
+ }
+
+ @Test
+ void testNormalize_ValidInput() {
+ assertEquals("valid", service.normalize(" valid "));
+ }
+}
\ No newline at end of file